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

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

Как отследить вставилась ли строка в Memo или нет ? [D7, WinME, WinXP]


Алекс А ©   (2004-07-06 01:17:00) 

Следующий код не пикает, но и не вставляет текст, если в Мемо уже есть примерно 50 000 символов .
 try
   Memo1.Lines.Add('A');
 except
   beep;
 end;

Величина Length(Memo1.Lines.Text) при которой дальнейшая вставка невозможна, почему то варьируется в зависимости от текста.


Anatoly Podgoretsky   (2004-07-12 08:48:00) [1]

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


SergP   (2004-07-12 08:47:00) [2]


>
> А если мне потребуется не Add, а Insert ? Инсерт ничего
> не возвращает.


Тогда выкинь нафиг мемо и юзай richedit


GrayFace   (2004-07-12 07:12:00) [3]

>with memo1.Lines do if count = add('A') then Beep;
Может глючить. Вдруг компилятор решит, что оптимальнее вначале выполнить add, а потом взять count?


KilkennyCat   (2004-07-12 02:40:00) [4]


> Almaz ©   (10.07.04 14:03) [8]


нет, так он не вернет. точнее, он вернет те, которые есть действительно, но не посчитает те, которые сам свордврапил. А они есть ;)
А чтобы их посчитать, по-моему проще всего создать еще один Стринглист и ассигновать ему мемовский лайнс. проверил: утечка нехилая.

А Вам, уважаемый Алекс А, прежде чем катить бочку на Борланд, лучше бы книжку прочитать... ограничение длины мемо не его, а виндов, и только 90-х. У НТ нет такого ограничения. Слова же о разности показаний ГетТекста в зависмости от текста(!) мне особенно понравились... Скажите, ну как они могут быть одинаковыми, если они зависят от текста?
Вот Вам, на память:
procedure TForm1.Button1Click(Sender: TObject);
var
 s : tstringlist;
begin
s := tstringlist.Create;
s.Assign(memo1.Lines);
showmessage(inttostr(length(s.Text)));
showmessage(inttostr(memo1.GetTextLen));
s.Free;
end;


Алекс А   (2004-07-12 01:39:00) [5]


> StrLen(Memo1.Lines.GetText) - что показывет ?

А вы не проверяли ? Тогда сообщаю. Показывает всегда по-разному, в зависимости от текста. 34125, 30120, 45060.


> А кто тебе мешает не использовать дополнительную переменную?
>
> with memo1.Lines do if count <> add('A') then Beep;

А если мне потребуется не Add, а Insert ? Инсерт ничего не возвращает.


Almaz   (2004-07-10 14:03:00) [6]


> Мне сама ситуация не нравится. Почему максимальный размер
> текста всегда разный, например ? Я не понимаю просто. Это
> глюк или непостижимая задумка Борланда ?

А максимальный размер текста как считаете ? Про символы перевода строки не забыли ? Максимальный размер должен быть 65535 символов. StrLen(Memo1.Lines.GetText)- что показывет ?

Удачи.


SergP   (2004-07-10 11:29:00) [7]


> Алекс А   (09.07.04 05:04) [4]
>
> > wnew ©   (09.07.04 03:28) [3]
> > mCount := Memo1.Lines.Count;
> > if mCount <> Memo1.Lines.Add('A') then Beep;
>
> Введение дополнительной переменной - не красиво.


А кто тебе мешает не использовать дополнительную переменную?

with memo1.Lines do if count <> add('A') then Beep;

Хотя  если пишщать должно когда не добавилась запись, то вернее так:

with memo1.Lines do if count = add('A') then Beep;


Алекс А   (2004-07-10 03:55:00) [8]


> Amoeba ©   (09.07.04 11:01) [5]
> "Не красиво" - пототму, что религия не позволяет?

Мне сама ситуация не нравится. Почему максимальный размер текста всегда разный, например ? Я не понимаю просто. Это глюк или непостижимая задумка Борланда ?

Понятно, что из ситуации выкрутиться то можно как-нибудь. Но эта кривость раздражает, и я подумал, может есть какой нормальный выход ? Или в Борланде так и задумывалось, что чтобы просто вставить строчку надо каждый раз огрод городить ?


Amoeba   (2004-07-09 11:01:00) [9]


> Алекс А   (09.07.04 05:04) [4]


> Введение дополнительной переменной - не красиво.


"Не красиво" - пототму, что религия не позволяет?


Алекс А   (2004-07-09 05:04:00) [10]


> wnew ©   (09.07.04 03:28) [3]
> mCount := Memo1.Lines.Count;
> if mCount <> Memo1.Lines.Add('A') then Beep;

Введение дополнительной переменной - не красиво.


wnew   (2004-07-09 03:28:00) [11]

mCount := Memo1.Lines.Count;
if mCount <> Memo1.Lines.Add('A') then Beep;


Алекс А   (2004-07-09 02:13:00) [12]

Как всё таки лучше отслеживать вставилось/невставилось ?
Почему в приведённом примере ошибка не возникает, когда вставка не удаётся, и как сделать, чтобы возникала ?


KilkennyCat   (2004-07-06 01:20:00) [13]

Мемо имеет ограничение для Вин9* в 64 кил.


Наверх

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