Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

проверка Memo на пустоту [D6, Win95/98]


Yurij-7 ©   (2004-12-20 11:40:00) 

День добрый
Уважаемые мастера подскажите пжл как проверить ТMemo пустой он или нет, пробовал через свойство Lines  но ниче неполучаеться :((
Спасибо.


Gero   (2004-12-20 20:57:00) [1]


> Боюсь, что при большом мемо, это буит весьма долгая операция:)_

Думаю, меньше милли секунды.

Хотя lines.text действительно не очень быстро, но это имеет смысл если ты вызвыаешь его в цикле хотя бы пару миллионов раз.


Poirot   (2004-12-20 19:08:00) [2]

Но вы забываете что это свойство... А как работает Lenght можно просто продебажив его:) там чистый асмовский код...
Прошу... проверяйте:0 не жалко.. только конструкции типа S:=Memo1.Text не катят, ибо читаем РТФМ
Там s совершенно другой блок памяти:))


pasha_golub   (2004-12-20 18:53:00) [3]

Poirot ©   (20.12.04 18:09) [14]
Рискну предположить что вы ошибаетесь. В том что свойство TMemo.Text: PChar тут несомненно, но... Мне кажется, что длина все-таки храниться по адресу -4 байта от первого символа.

Если не прав - бейте ногами, все равно вечер и спать скоро.


Skier   (2004-12-20 18:16:00) [4]

>Yurij-7   (20.12.04 17:42) [13]
Я, лично, ничего не понял...


Poirot   (2004-12-20 18:09:00) [5]

>>
Что такое 'большое' мемо?
Это туеву кучу килобайтов\мегабайтов. ибо Lenght работает с null terminated строками:) и пока оно добежит - это буит шикарно:) Ну обладателям супер пупер пеньков это пофигу, но... это нерациональное использование ресурса ПК:)


Yurij-7   (2004-12-20 17:42:00) [6]

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


TUser   (2004-12-20 16:42:00) [7]


> Боюсь, что при большом мемо, это буит весьма долгая операция:)_

Что такое 'большое' мемо?

> TUser ©   (20.12.04 11:43) [2]
> if Lines.Text = '' then
>
> Спасибо, а я вот пробовал так но ничего неполучалось :((

Значит тебе нужно что-то другое. Этот код стопудово рабочий.

> перепробовал все приведенные примеры, но один такой момент
> если я нередактировал Memo то ниодин из способов неподходит
> :((

Может у тебя там написано 'Memo1'?

Очень хочется спросить, а что такое проверка на пустоту в данном контексте?


Yurij-7   (2004-12-20 16:20:00) [8]

если я только запускаю прогу (фокус сразу на мэмо) и я в мэмо ничего не менял а сразу нажимаю батон то проверка недействует, тоесть если пользователь ничего не менял то проверка не срабатывает.


Yurij-7   (2004-12-20 16:20:00) [9]

если я только запускаю прогу (фокус сразу на мэмо) и я в мэмо ничего не менял а сразу нажимаю батон то проверка недействует, тоесть если пользователь ничего не менял то проверка не срабатывает.


Александр Иванов   (2004-12-20 15:48:00) [10]

Чем не подходит?


Yurij-7   (2004-12-20 15:39:00) [11]

У меня возник еще 1 вопрос:
перепробовал все приведенные примеры, но один такой момент если я нередактировал Memo то ниодин из способов неподходит :((
как быть в таком случае?


Yurij-7   (2004-12-20 12:29:00) [12]

TUser ©   (20.12.04 11:43) [2]
if Lines.Text = '' then

Спасибо, а я вот пробовал так но ничего неполучалось :((

Всем большое спасибо


Delphin   (2004-12-20 12:20:00) [13]

IF Memo1.GetTextLenght=0 Then ....


Jay1982   (2004-12-20 12:17:00) [14]

Зато 100% рабочая


Poirot   (2004-12-20 12:10:00) [15]

Jay1982 ©   (20.12.04 11:46) [3]
Боюсь, что при большом мемо, это буит весьма долгая операция:)_


Jay1982   (2004-12-20 11:46:00) [16]

if Length(Memo1.Text) = 0 then


Poirot   (2004-12-20 11:43:00) [17]

TMemo.Text
Можно проверить по Lines.Count и + Если одна линия, то проверить её длину на 0


TUser   (2004-12-20 11:43:00) [18]

if Lines.Text = '' then


Наверх

Титульная страница Поиск, карта сайта Написать письмо