Нужна помощь!

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нужна помощь!

Post by Mr. Kibernetik »

flyer2001 wrote:1. Текстовый редактор с подключением внешней клавиатуры bluetooth, используя альтернативную раскладку. Печатаю в альтернативной раскладке уже второй год, которой нигде в стандартных нет.

Если правильно понимаю принцип программы, то каждый введённый символ заменяется по заданной заранее таблице (массив)
Smart BASIC умеет работать с внешней клавиатурой.
С клавиатуры принимается Unicode текст, который генерится клавиатурой.
flyer2001 wrote:2. Аудио-плеер для расшифровки текстов.
Плеер с возможностью загружать аудио (тот же дропбокс например)
Управление плеером через горячие клавиши с внешней bluetooth клавиатуры: пауза-плей, перемотка назад-вперед
Ну и сам редактор из п.1 в котором можно набирать текст, во время того, как воспроизводится аудио.
Функции аудио могут воспроизводить те файлы, которые присутствуют в файловой системе smart BASIC.

User avatar
flyer2001
Posts: 4
Joined: Sat Apr 04, 2015 4:47 pm
My devices: iphone 4

Re: Нужна помощь!

Post by flyer2001 »

Mr. Kibernetik wrote:
flyer2001 wrote: Smart BASIC умеет работать с внешней клавиатурой.
С клавиатуры принимается Unicode текст, который генерится клавиатурой.
Подскажите какой синтаксис у функции inkey$(), что нужно указывать в скобках (переменные?).
Напишите пожалуйста пример, как получить нажимаемую клавишу с клавиатуры (символ) и присвоить её переменной?

Какие еще нужны условия кроме OPTION KEYBOARD ON?

А то бьюсь бюсь, никак не пойму)

Спасибо.

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нужна помощь!

Post by Mr. Kibernetik »

flyer2001 wrote:
Mr. Kibernetik wrote:
flyer2001 wrote: Smart BASIC умеет работать с внешней клавиатурой.
С клавиатуры принимается Unicode текст, который генерится клавиатурой.
Подскажите какой синтаксис у функции inkey$(), что нужно указывать в скобках (переменные?).
Напишите пожалуйста пример, как получить нажимаемую клавишу с клавиатуры (символ) и присвоить её переменной?

Какие еще нужны условия кроме OPTION KEYBOARD ON?

А то бьюсь бюсь, никак не пойму)

Спасибо.

Code: Select all

OPTION KEYBOARD ON
1 a$=INKEY$()
IF a$<>"" THEN PRINT a$;
GOTO 1

User avatar
flyer2001
Posts: 4
Joined: Sat Apr 04, 2015 4:47 pm
My devices: iphone 4

Re: Нужна помощь!

Post by flyer2001 »

Mr. Kibernetik wrote: Спасибо.

Code: Select all

OPTION KEYBOARD ON
1 a$=INKEY$()
IF a$<>"" THEN PRINT a$;
GOTO 1
Спасибо за оперативный ответ!
Есть еще два вопроса, буду очень признателен, если поможете

1. Можно ли как-то обнулять значение функции inkey$()? Насколько понял, она как в стек набивает в себя всё, что вводится с клавиатуры, а нужно реализовать именно посимвольную замену введённых символов.

2. Есть два массива соответствие клавиатурных раскладок. Вводится символ, в одном массиве находится нужный символ и берется соответствующий элемент массива во втором массиве. Понимаю, что нужно учить матчасть)) Прошу подсказать самый быстрый алгоритм поиска в первом массиве.

Массив представляет из себя набор цифр, букв, символов (раскладка клавиатуры)

Code: Select all

Raskladka (0,1,2,3,4,5,6,7,8,9,_,-,;,:,!,?,.,.,«,(,),*,%,+,=,а,А,б,Б,в,В,г,Г,д,Д,е,Е,ж,Ж,з,З,и,И,й,Й,к,К,л,Л,м,М,н,Н,о,О,п,П,р,Р,с,С,т,Т,у,У,ф,Ф,х,Х,ц,Ц,ч,Ч,ш,Ш,щ,Щ,ъ,Ъ,ы,Ы,ь,Ь,э,Э,ю,Ю,я,Я,№)
нужно быстро найти номер элемента. Например вводится символ "А", поиск находит, что это 5-й элемент, и уже подставляет этот элемент из второго массива.
Понятно, что самый простой способ - это перебор. Но почему-то заранее беспокоюсь, что при большой скорости набора подобный алгоритм не самый рациональный))

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нужна помощь!

Post by Mr. Kibernetik »

flyer2001 wrote:1. Можно ли как-то обнулять значение функции inkey$()? Насколько понял, она как в стек набивает в себя всё, что вводится с клавиатуры, а нужно реализовать именно посимвольную замену введённых символов.
Буфер введенных с клавиатуры символов автоматически обнуляется после выполнения функции INKEY$().

User avatar
flyer2001
Posts: 4
Joined: Sat Apr 04, 2015 4:47 pm
My devices: iphone 4

Re: Нужна помощь!

Post by flyer2001 »

Разбираюсь дальше (в написании программы, которая будет заменять посимвольно вводимый с клавиатуры текст)
С массивами и функцией INKEY$() разобрался.

Ниже код программы с пояснениями, которая заменяет введенный символ и вставляет его в текстовое поле.

Прошу помочь:

1) Как реализовать удаление введённых символов?
Есть функция FIELD N$ SELECT, но она сразу выделяет то, что было введено, не понятно, как выставить курсор редактирования в конец строки
Возможно какое-то другое решение, буду очень признателен

2) По документации и версии ПО:
2.1) Установлена версия 4.7, но документация уже от 4.8, а в аппсторе нет обновления, это нормально или у меня слишком старый аппарат? :)
2.2) методом тыка догадался, что правильно пишется функция FIELD N$ SET TEXT, а не FIELD N$ TEXT, как написано в документации. Есть ли русская документация по версии 4.7?
2.3) можно ли в версии 4.7 как-то использовать параметр ML (мультистрочный) для FIELD N$ AT X,Y SIZE H,W ML RO
2.4) Работают ли в версии 4.7 такие функции, как FIELD_CHANGE, FIELD_TEXT, FIELD N$ DESELECT можно ли где-нибудь посмотреть пример кода, где работают эти функции, а то у меня сплошные ошибки

Code: Select all

OPTION KEYBOARD ON
OPTION BASE 1

FIELD edit at 10,10 SIZE 100,200 ' создаём поле редактора

DIM R0$ (33) ' создаём массив раскладки по умолчанию
DIM R1$ (33) ' создаём массив соответствия раскладки по умолчанию

1 a$=INKEY$() " присваиваем переменной значение введённого символа
	IF a$<>"" THEN ' если клавиша нажата, то
		FOR i = 1 TO 30 ' перебираем массив от 1 до последнего значения
			IF R0$(i)=a$ THEN ' если значение введённого символа совпадает
				a$=R1$(i) ' находим соответствующее значение в другом массиве и заменяем переменную
				GOTO 2 ' разрываем цикл, дальше перебор не нужен
			END IF
		NEXT i
		2 buff$=buff$ & a$ ' в буфер добавляем заменённую переменную
		FIELD edit SET TEXT buff$ ' выводим значение буфера в поле ввода
	END IF
GOTO 1

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нужна помощь!

Post by Mr. Kibernetik »

Вся актуальная документация к вашей версии smart BASIC - прямо в вашем устройстве. Смотреть ее нужно там.

На сайте - документация к пока еще не опубликованной версии 4.8. Она выложена раньше времени для пользователей СДК версии 4.8 , который уже опубликован. А вот smart BASIC 4.8 пока еще не вышел - он ждет одобрения Apple.

lawman
Posts: 4
Joined: Sat Feb 07, 2015 2:59 pm
My devices: iphone6
ipad4?

Re: Нужна помощь!

Post by lawman »

flyer2001,
в Вашем примере, по-моему, имя поля должно быть в кавычках. Может, это дает ошибку?

Willzvul
Posts: 7
Joined: Wed Jan 07, 2015 12:48 pm
My devices: IPad, iOS 5.1.1

Как разместить большой текст?

Post by Willzvul »

Здравствуйте!

У меня возникла необходимость разместить текст порядка 100-200 символов в поле FIELD. Текст в нее вставляется, но из-за ограниченной длины поля, равной ширине экрана, текст отображается не полностью, заканчиваясь типо "Тексттексттек..."
Высоты поля достаточно, чтобы он перенесс на следующую строку, но этого не происходит. Как возможное решение пробовал использовать BROWSER N$ TEXT A$, но эффект тот же.
Могу использовать символ переноса строки, но не знаю как. Подскажите, пожалуйста

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нужна помощь!

Post by Mr. Kibernetik »

1. BROWSER должно работать - это обычный браузер, и в нем можно разместить любой текст.

2. Посмотрите на опцию FIELD ML - многострочное текстовое поле. Оно специально предназначено для размещения текста любой длины.

Post Reply