Вверх ↑
Этот топик читают: Гость
Ответов: 327
Рейтинг: 5
#1: 2013-07-21 12:22:19 ЛС | профиль | цитата
Нужно ограничить количество символов в Memo до 255.
Как запретить добавление символов при достижении значения?(Удаление должно оставаться доступным.)

Перевод строки тоже считаем за символ, в итоге получается, что от 255 мы отнимаем сумму количества символов(во всех строках) и индекса последней строки.
code_31460.txt

А вот ограничить ввод не получается.
карма: 0

0
файлы: 1code_31460.txt [1.1KB] [167]
Гость
Ответов: 17029
Рейтинг: 0
#2: 2013-07-21 14:41:28 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2025-01-10 17:18:58
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#3: 2013-07-21 14:51:38 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2025-01-10 17:18:58
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#4: 2013-07-21 14:58:24 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2025-01-10 17:18:58
карма: 0

0
Ответов: 704
Рейтинг: 44
#5: 2013-07-21 14:59:24 ЛС | профиль | цитата
Выше я 172.gprs.mts.ru Забыл сказать, в компоненте If и delete поменяй кол-во символов на ввод, я для проверки только поставил на 4 символа, влом было 255 символов вводить.
карма: 0

0
Ответов: 327
Рейтинг: 5
#6: 2013-07-22 09:02:41 ЛС | профиль | цитата
г. ость писал(а):
через Memo.Enabled

Я думаю получится более качественно если удалять по 1 символу с самого конца... Тогда еще решится проблема со вставкой текста(в твоей схеме можно до бесконечности догнать символы).


------------ Дoбавленo в 15.12:
г. ость писал(а):
или через SendMessage

за это спасибо, была одна проблема... он перевод строки за 2 символа считает, проблему решил
------------ Дoбавленo в 09.02:
Add(MainForm,2953706,203,126)
{
Width=556
}
Add(Memo,9124675,392,119)
{
@Hint=#15:ScrollBars=Both|
Width=540
Height=217
Align=5
ScrollBars=3
Point(Handle)
Point(EndIdx)
link(onChange,5962814:doEnum,[(432,125)(432,108)(384,108)(384,321)])
AddHint(-28,-41,90,13,@Hint)
}
Add(Memory,15223640,497,252)
{
Default=Integer(0)
}
Add(Length,8277588,448,315)
{
link(onLength,3098489:doOperation,[])
}
Add(ArrayEnum,5962814,406,315)
{
link(onItem,8277588:doLength,[])
link(onEndEnum,13442962:doCalc,[(445,328)(445,363)])
link(Array,9124675:Array,[])
}
Add(Math,3098489,490,315)
{
link(onResult,11057580:doEvent1,[])
link(Op2,11772553:Var2,[])
}
Add(Hub,11057580,532,315)
{
link(onEvent1,15223640:doValue,[(556,321)(556,246)(488,246)(488,258)])
link(onEvent2,15240798:In,[])
}
Add(LineBreak,7046748,665,84)
{
Color=15780518
link(Out,13602058:doEvent1,[])
Primary=[15240798,-112,238]
}
Add(InfoTip,15827174,392,217)
{
Info=#21:Сумма длин всех строк|
Width=197
Height=158
}
Add(Memory,5612995,784,329)
{
Default=Integer(197)
}
Add(SendMessage,2934727,763,371)
{
WParam=255
Point(Message)
link(Handle,14486673:Var,[])
link(WParam,4872939:Result,[(776,359)(748,359)(748,415)(720,415)])
link(Message,5612995:Value,[])
}
Add(Label,4344545,777,84)
{
Top=217
Width=540
Align=4
}
Add(StrCat,14165787,735,84)
{
Str1="Сумма длин всех строк : "
link(onStrCat,4344545:doText,[])
}
Add(MathParse,13442962,602,357)
{
@Hint=#40:Всего символов(с учетом переводов строк)|
MathStr="%1+%2"
link(onResult,11243946:doEvent1,[])
link(X1,11772553:Var3,[(608,299)])
link(X2,5093319:Var2,[])
AddHint(-174,39,148,26,@Hint)
}
Add(GetDataEx,11772553,497,294)
{
link(Data,15223640:Value,[])
}
Add(LineBreak,10434237,413,189)
{
Type=1
Color=255
link(Data,9124675:Handle,[])
Primary=[14486673,350,126]
}
Add(Hub,11243946,651,357)
{
OutCount=3
link(onEvent1,9669736:In,[])
link(onEvent2,15127989:In,[])
link(onEvent3,4872939:doCalc,[])
}
Add(Label,9878536,777,154)
{
Top=232
Width=540
Align=4
}
Add(StrCat,2458090,735,154)
{
Str1="Количество переводов строки : "
link(onStrCat,9878536:doText,[])
link(Str2,14336718:Var,[])
}
Add(GetDataEx,904918,609,177)
{
Angle=3
link(Data,9124675:EndIdx,[(426,182)])
}
Add(Hub,13602058,707,84)
{
link(onEvent1,14165787:doStrCat,[])
link(onEvent2,2458090:doStrCat,[(728,97)(728,160)])
}
Add(Label,1165298,777,238)
{
Top=247
Width=540
Align=4
}
Add(MathParse,4872939,714,371)
{
@Hint=#115:К стандартным 255 прибавляем EndInd(x2) потому что перевод строки это два символа, а нам нужно его считать как один|
DataCount=1
MathStr="255+%1*2"
link(onResult,2934727:doSendMessage,[])
link(X1,5093319:Var3,[(720,334)])
AddHint(-85,61,195,52,@Hint)
}
Add(GetDataEx,5093319,609,329)
{
link(Data,904918:Var2,[])
}
Add(LineBreak,15244326,602,399)
{
Type=1
Color=16711680
link(Data,13442962:Result,[])
Primary=[5971304,133,-182]
}
Add(LineBreak,5027034,616,196)
{
Type=1
Color=8421504
link(Data,904918:Var3,[(622,182)])
Primary=[14336718,126,-63]
}
Add(FormatStr,6255340,735,238)
{
DataCount=1
Mask="Всего символов(с учетом переводов строк) : %1 (Должно быть не больше 255)"
link(onFString,1165298:doText,[])
link(Str1,5971304:Var,[])
}
Add(LineBreak,428937,693,238)
{
Color=12639424
link(Out,6255340:doString,[])
Primary=[9669736,-21,119]
}
Add(LineBreak,712994,462,259)
{
Color=16776960
link(Out,15223640:doClear,[])
Primary=[15127989,210,105]
}
С одной строкой все нормально, но как только их становится больше, начинаются проблемы...
Где косяк? Никак найти не могу.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#7: 2013-07-22 15:35:22 ЛС | профиль | цитата
knoot0279 писал(а):
ограничить количество символов в Memo до 255


Add(MainForm,2953706,175,126)
{
}
Add(Memo,15872574,301,105)
{
Left=130
Top=105
Point(doEnabled)
link(onChange,8338787:doLength,[(342,111)(342,86)(280,86)(280,195)])
}
Add(Copy,13962777,238,126)
{
Position=1
Count=255
link(onCopy,15872574:doText,[])
}
Add(Length,8338787,301,189)
{
link(onLength,11513323:doCompare,[])
link(Str,15872574:Text,[])
}
Add(If_else,11513323,357,189)
{
Type=4
Op2=Integer(255)
link(onTrue,6978981:doWork1,[])
link(onFalse,6978981:doWork2,[])
}
Add(ChanelToIndex,6978981,420,189)
{
link(onIndex,15872574:doEnabled,[(464,195)(464,174)(289,174)(289,153)])
}

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1536
Рейтинг: 176
#8: 2013-07-22 17:50:59 ЛС | профиль | цитата
knoot0279,
Add(MainForm,5318403,133,119)
{
Width=556
}
Add(Memo,9124675,329,119)
{
@Hint=#15:ScrollBars=Both|
Width=540
Height=207
Align=5
ScrollBars=3
Point(Handle)
Point(EndIdx)
link(onChange,9766370:doOperation,[(381,125)(381,109)(207,109)(207,244)])
AddHint(-28,-41,90,13,@Hint)
}
Add(Memory,5612995,294,175)
{
Default=Integer(197)
}
Add(SendMessage,2934727,273,238)
{
Point(Message)
PColor(Handle,65535)
link(onSend,11102483:doSum,[])
link(Handle,9124675:Handle,[(279,215)(356,215)])
link(Message,5612995:Value,[])
}
Add(Label,1165298,525,238)
{
Top=207
Width=540
Height=55
Align=4
AutoSize=1
}
Add(FormatStr,6255340,483,238)
{
DataCount=3
Mask="Всего символов(с учетом переводов строк) : %1 (Должно быть не больше 255)
Количество переводов строки : %2
Сумма длин всех строк : %3"
PColor(Str3,11184640)
link(onFString,1165298:doText,[])
link(Str2,13295638:Var3,[(496,224)])
link(Str3,9124675:Count,[(503,194)(342,194)])
}
Add(ArraySum,11102483,343,238)
{
Delimiter=""
link(onSum,283485:doLength,[])
link(Array,9124675:Array,[])
}
Add(Length,283485,392,238)
{
link(onLength,9190149:doOperation,[])
}
Add(Math,9190149,434,238)
{
ResultType=0
link(onResult,6255340:doString,[])
link(Op2,13295638:Var2,[])
}
Add(GetDataEx,13295638,441,219)
{
Angle=3
link(Data,5239527:Var3,[])
}
Add(Math,9766370,224,238)
{
Op1=255
ResultType=0
link(onResult,2934727:doSendMessage,[])
link(Op2,5239527:Var1,[(237,224)])
}
Add(GetDataEx,5239527,357,219)
{
link(Data,9124675:EndIdx,[])
}
и заключи свой код в теги code или почитай здесь http://forum.hiasm.com/profile.html?q=45&p=63
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 8930
Рейтинг: 823
#9: 2013-07-22 19:22:21 ЛС | профиль | цитата
Tad, ser_davkin, корм не катит
knoot0279, вот по-деревенски
code_31484.txt
карма: 19

0
файлы: 1code_31484.txt [2.1KB] [169]
Ответов: 16884
Рейтинг: 1239
#10: 2013-07-22 19:46:40 ЛС | профиль | цитата
Леонид,
1. Это не конь.
2. Условие ограничения совершенно не понятны.
code_31486.txt
Жмём на кнопочку сто раз.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_31486.txt [2.4KB] [159]
Ответов: 8930
Рейтинг: 823
#11: 2013-07-22 21:12:37 ЛС | профиль | цитата
Tad, ну какой же въедливый это Delete надо нажимать, ведь ТС, наверное, "добавление при достижении" с клавиатуры имел ввиду
Вот сто раз нажал code_31489.txt
карма: 19

0
файлы: 1code_31489.txt [2.6KB] [171]
Ответов: 16884
Рейтинг: 1239
#12: 2013-07-22 21:57:24 ЛС | профиль | цитата
Вот именно, что "наверное".
И если
Леонид писал(а):
с клавиатуры имел ввиду
то моя схема самая оптимальная.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 327
Рейтинг: 5
#13: 2013-07-23 08:05:37 ЛС | профиль | цитата
Ввод с клавиатуры и вставка текста.
Почему мысль о том что вставка тоже учитывается была отброшена?
------------ Дoбавленo в 08.05:
Ладно, проехали.
Косяк нашел сам... зря умножал EndIdx на 2
карма: 0

0
Ответов: 8930
Рейтинг: 823
#14: 2013-07-23 09:57:13 ЛС | профиль | цитата
knoot0279 писал(а):
Почему мысль ... была отброшена?
Потому, что правильно заданый вопрос содержит 90% ответа.
карма: 19

0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)