![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отследить вставилась ли строка в 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 кил.