On-line: PSP, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
администратор




Пост N: 1218
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.05.09 10:51. Заголовок: Memoedit


Как ограничить кол-во символов вводимых в memoedit , в примере это не более 50 ?
cmem:=space(50)
cmem:=memoedit(cmem,11,21,18,59,.t.,"my_func",38)


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 18 [только новые]


постоянный участник


Пост N: 346
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.05.09 11:22. Заголовок: Насколько я знаю, НИ..


Насколько я знаю, НИКАК! Можно вудымывать всякие приемы с пользовательской функцией, которая передается в качестве параметра MEMOEDIT(), но тем не менее всегда найдется способ, который позволит пользователю преодолеть ограничение. Я помню как-то делал BACKSPACE, когда позиция выходила за ограничение. Тем не менее если очень быстро набирать текст, то почему-то BACKSPACE не срабатывал. То есть в буфер клавиатуры печатаемые символы попадали быстрее, чем я заносил BACKSPACE.
Поэтому пришлось писать свою функцию на ассемблере, которая работает как MEMOEDIT, но с ограниченным числом символов. Я ее назвал MEMOGET. Правда сейчас в связи с поломкой диска я свои нароботки утратил..

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1219
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.05.09 12:11. Заголовок: Григорьев Владимир п..


Григорьев Владимир пишет:

 цитата:
Насколько я знаю, НИКАК


Плёхо....
Может есть какой то аналог в котором можно это сделать ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1221
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.05.09 16:33. Заголовок: Поставим вопрос инач..


Поставим вопрос иначе
Как находясь в Memoedit выяснить сколько символов введено ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 347
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.05.09 17:28. Заголовок: Опять-таки, НИКАК! В..


Опять-таки, НИКАК! Вы можете только определить номер строки и номер колонки. А символы могут удаляться и снова набираться. То есть если человек нажал 10 раз букву "А", это не означает, что в поле присутствует 10 символов.
Проблемы с MEMOEDIT() в том, что очень много комбинаций служебных клваиш существует. Например, можно удалить целиком строку, или вставитиь новую строку.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1222
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.05.09 17:47. Заголовок: Григорьев Владимир ..


Григорьев Владимир
Хорошо , как тогда контролировать следующую ситуацию ?
В программе сделан миничат между пользователями программы (сетевой)
Длина поля для сообщения составляет 250 символов , НО , набирая сообщение
в memoedit , пользователь может набрать более 250 символов. То есть
на экране он видит все что хотел набрать , но реально дойдет только 250 символов.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 660
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 20.05.09 19:56. Заголовок: Dima пишет: Длина п..


Dima пишет:

 цитата:
Длина поля для сообщения составляет 250 символов , НО , набирая сообщение
в memoedit , пользователь может набрать более 250 символов. То есть
на экране он видит все что хотел набрать , но реально дойдет только 250 символов.


Делать так, как делают некоторые мобильные телефоны - автоматически разбивают длинную SMS на несколько коротких и передают.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1223
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.09 10:54. Заголовок: Петр Отличная идея ..


Петр
Отличная идея , спасибо !!!

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 8
Зарегистрирован: 24.03.09
ссылка на сообщение  Отправлено: 06.06.09 11:13. Заголовок: Попробовал модифицир..


Попробовал модифицировать штатный Memoedit для CLIPPER 5.3b следующим образом:
добавил 14-й параметр, который участвует в вычислении наибольшей длины возвращаемой
строки следующим образом:
а) если он не указан или 0 - тогда стандартное поведение MemoEdit-a.
б) если он указан и больше длины исходной строки (1-й параметр), то в качестве макс.
значение берется значение этого параметра, иначе - длина исходной строки.
Изменения старался делать так, чтобы в наименьшей степени затронуть оригинальный текст
этой функции. Результаты обнадеживающие, но пока очень сырая версия, поэтому больше для
ознакомления. Пробовал c Blinker, а c Exospace еще не проверял. Для применения следует
прилинковать memoedit.obj - и тогда вместо штатного MemoEdit-а будет модифицированный.
Прилагается оригинальный текст программы (memoedit0.asm) и модифицированный мною
(memoedit.asm) - для желающих поэкспериментировать. http://slil.ru/27732091



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 9
Зарегистрирован: 24.03.09
ссылка на сообщение  Отправлено: 06.06.09 15:50. Заголовок: Заметил один дефект ..


Заметил один дефект - возле индикатора <Insert> появлялись лишние символы. Исправиленный вариант http://slil.ru/27732682


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1237
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.06.09 16:09. Заголовок: ALGO пишет: Попробо..


ALGO пишет:

 цитата:
Попробовал модифицировать штатный Memoedit для CLIPPER 5.3b


Проверить не могу так как использую Clipper 5.2e

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 10
Зарегистрирован: 24.03.09
ссылка на сообщение  Отправлено: 06.06.09 16:51. Заголовок: Попробую еще для 5.2..


Попробую еще для 5.2е - не думаю, что сложнее будет.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1238
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.06.09 18:34. Заголовок: ALGO пишет: добавил..


ALGO пишет:

 цитата:
добавил 14-й параметр, который участвует в вычислении наибольшей длины возвращаемой
строки следующим образом:


ALGO пишет:

 цитата:
Попробую еще для 5.2е - не думаю, что сложнее будет.


Минутку , если мы говорим о возвращаемом значении , тогда это не интерестно.
Нужно было ограничить дальнейший ввод в Memoedit если длина вводимой строки превышает длину начальную.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 11
Зарегистрирован: 24.03.09
ссылка на сообщение  Отправлено: 06.06.09 20:48. Заголовок: Функция честно возвр..


Функция честно возвращает ровно то, что введено - никаких дополнительных действий с возвращаемым значением не делается. Ограничение возвращаемого значения достигается за счет блокирования дальнейшего ввода и разблокированием при удалении символов, т.е. уменьшении количества символов. Я правильно понял задачу?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1239
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.06.09 21:12. Заголовок: ALGO Да правильно. ..


ALGO
Да правильно. Собственно пожелание изложено в первой месаге.
Если я правильно понял ответы Григорьев Владимир то сделать это сложно в том виде
в котором существует Memoedit , но попробовать я готов (в смысле потестить) , хотя с другой стороны все
реализовал с подсказки Петра , и всех все устроило.

Спасибо , думаю нет смысла заморачиваться с переделкой !!!

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 20
Зарегистрирован: 09.07.08
ссылка на сообщение  Отправлено: 20.08.09 10:34. Заголовок: а у меня своя memoed..


а у меня своя memoedit, через объект, делаю в ней, что хочу...
Лениться меньше надо, а не твердить "НИКАК,НИКАК,..."

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 899
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.08.09 13:07. Заголовок: PRG_MAN пишет: Лени..


PRG_MAN пишет:

 цитата:
Лениться меньше надо, а не твердить "НИКАК,НИКАК,..."



Если такой умный... то почему живешь не на Канарах или Багамах ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 21
Зарегистрирован: 09.07.08
ссылка на сообщение  Отправлено: 01.09.09 14:26. Заголовок: Ты из ГРУ ?..


Ты из ГРУ ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 352
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.09.09 12:08. Заголовок: PRG_MAN пишет: а у ..


PRG_MAN пишет:

 цитата:
а у меня своя memoedit, через объект, делаю в ней, что хочу...
Лениться меньше надо, а не твердить "НИКАК,НИКАК,..."



Так поделитесь идеями, что именно делает ваша MEMOEDIT(), и как она оформлена в объект. То есть какие именно методы объекта вы реализовали для MEMOEDIT()?

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 206
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет