Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизМаксимальное количество строк в Memo Найти похожие ветки
← →
WebSQLNeeder © (2005-11-27 17:29) [0]Это у меня глюк или действительно где то на 3500-3700 строках дальше в Мемо уже не добавляется??
А что делать что бы добавлялось? Перейти на РичЕдит?
← →
Anatoly Podgoretsky © (2005-11-27 17:37) [1]Перейти
← →
WebSQLNeeder © (2005-11-27 18:00) [2]А если хочется что бы было именно мемо - то что больше там 3000 строк уже и нельзя делать??
← →
Anatoly Podgoretsky © (2005-11-27 18:04) [3]И хочется и колется и мама не велит.
← →
WebSQLNeeder © (2005-11-27 18:52) [4]Ладно, подойдем к этому вопросу по другому - какое максимальное количество строк возможно в Мемо? Искал в документации - не нашел ...
← →
begin...end © (2005-11-27 18:57) [5]> WebSQLNeeder © (27.11.05 18:52) [4]
Для Win9x -- 64 КБ текста максимум.
← →
WebSQLNeeder © (2005-11-27 19:59) [6]Хмм, а в Ричедите сколько? Мне нужно текст в сотни тысяч строк ...
← →
Anatoly Podgoretsky © (2005-11-27 20:08) [7]WebSQLNeeder © (27.11.05 18:52) [4]
Нет такого ограничения, просто строками не оперирует.
← →
Anatoly Podgoretsky © (2005-11-27 20:09) [8]WebSQLNeeder © (27.11.05 19:59) [6]
RichEdit тоже строками не оперирует, только размер текста - 2 гб
← →
sniknik © (2005-11-27 20:36) [9]> ... только размер текста - 2 гб
если явно не указать (MaxLength оставить 0) то останется ограничение в 64кб. уже "нарывался" на это.
← →
упаковщик (2005-11-27 22:38) [10]Удалено модератором
Примечание: Модератор сам решит, без тебя
← →
Германн © (2005-11-28 02:54) [11]1. упаковщика - отмодерить, что б впредь не повадно было столь явно демонстрировать "наглость"+"незнание".
2.
>sniknik © (27.11.05 20:36) [9]
>> ... только размер текста - 2 гб
>если явно не указать (MaxLength оставить 0) то останется ограничение в >64кб. уже "нарывался" на это.
Это точно проверено?
Нет времени проверять это лично, но сегодня хочу отдать коллеге на проверку его программы некую свою, которая пишет в лог некие события, но и заодно выводит сообщения о них в РичЭдит.
← →
упаковщик (2005-11-28 13:24) [12]Удалено модератором
← →
Palladin © (2005-11-28 13:35) [13]Как там про гюльчетай было....
← →
sniknik © (2005-11-28 14:33) [14]Германн © (28.11.05 02:54) [11]
> Это точно проверено?
за все системы не скажу, проверял только на XP и 2000м/скомпиленное в D7, эффект был одинаков. но думаю, что это "особенность" ричэдита, распространяется не только на них.
а зачем ошибки в ричьедит, цветными делаеш? открывай в memo, он только от системы зависит 98/2000. а то еще лучше открывай свой лог виндовым блокнотом и все (такто он нафиг не нужен показывать, а если ошибки... то только чтобы не искать файл кнопочку сделать)
← →
psa247 © (2005-11-28 14:45) [15]У тебя должно быть что-то типа этого:
try
if FileExists(name)then begin
file_size:= Get_File_size(name);
if file_size <> -1 then Report.Perform(EM_LIMITTEXT, file_size, 0);
end;
Report.Lines.LoadFromFile(name);
except
Report.Lines.Add(SysErrorMessage(GetLastError));
end;
Где Report : TRichEdit;
← →
Anatoly Podgoretsky © (2005-11-28 16:24) [16]Германн © (28.11.05 02:54) [11]
Это точно, неисправленая ошибка с древних времен, точнее не соответсвие справки. 0 - означает 64 кб.
← →
Германн © (2005-11-28 17:18) [17]2 Anatoly Podgoretsky © (28.11.05 16:24) [16]
Странно. Посмотрел в Rx. Там эта ошибка исправлена, но только для Д3. ???
← →
SergP. (2005-11-28 17:32) [18]Фаронов пишет что ограничение около 48 Кб... Сам точно не проверял. Но где-то так оно и есть. т.е. получается что реально немного меньше 64Кб. Но это в WIN98
В 2000/XP я на такое ограничение не нарывался. Только что попробовал загнать туда 200 Кб. работает... И строки можно дальше добавлять...
← →
sniknik © (2005-11-28 18:11) [19]> Только что попробовал загнать туда 200 Кб.
руками (копи/пасте)? или лоадфромфайл файл?
и куда в ричедит/Rxричедит/memo? уточняй. потому как memo зависит от системы, ричедит от разработчиков борланда а Rx-сы от их собственных разработчиков.
← →
SergP. (2005-11-28 18:21) [20]
> руками (копи/пасте)? или лоадфромфайл файл?
накопипастил.
и куда в ричедит/Rxричедит/memo?
Ну ведь сабж же про мемо....
← →
SergP. (2005-11-28 18:28) [21]
> sniknik © (28.11.05 18:11) [19]
// Проверка размера
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=inttostr(length(Memo1.Lines.Text));
end;
// Добавление строки
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.add("Добавляем строку");
end;
Вобщем сначала накопипастил чтобы получилось более 64 Кб,
а затем пробовал добавлять строки. Все отлично добавляется . Но только под 2000/XP
Под 9Х давно когда-то пробовал. Как и писал в
SergP. (28.11.05 17:32) [18]
ограничение есть. Где-то приблизительно так как пишет Фаронов...
← →
sniknik © (2005-11-28 20:11) [22]SergP. (28.11.05 18:21) [20]
> Ну ведь сабж же про мемо...
а про ограничение говорилось у RichEdit-а см [8] - [9] и т.д. все со ссылками на него. для memo тоже говорилось [4] [5], ограничение в 98(и наверно и 95/милениуме) - 64кб, выше - 2гигабайта.
← →
z007 (2005-11-28 23:36) [23]> Мне нужно текст в сотни тысяч строк ...
ПРАВИЛЬНЫЙ ОТВЕТ (для MEMO)
1. Определить буфер (pchar, stringlist) размером в число видимых строк при текущем размере memo (на погрешность можно добавить еще с десяток)
2. При изменении номера верхней видимой строки считать из файла (filestream"a, stream"a или stringlist"a - как пожелаете) нужное число строк и скинуть их в memo.
Снимаются ограничения по размеру текста,
скорость остается достаточно приемлемой.
← →
sniknik © (2005-11-28 23:48) [24]z007 (28.11.05 23:36) [23]
> 1...
> 2...
практически свой DataSource только без базы и без грида. ;о))
только такой способ собьет форматирование текста, там же 1-а строка не равна 1й видимой в мемо. строка это абзац, зачастую из нескольких видимых строк, с переносом, может начинатся на одной странице заканчиваться на другой. да что там, одна строка может занимать два три а то и больше видимых экрана в мемо. попробуй разделить правильно...
придется оччень повозится. ;)
← →
z007 (2005-11-30 00:12) [25]sniknik © (28.11.05 23:48) [24]
>практически свой DataSource только без базы и без грида. ;о))
Так и есть :)
>придется оччень повозится
На самом деле не очень долго. Этот самый DataSource (вернее его часть - механизм чтения-записи в файл, чтения-обновления буфера) я делал (без VCL) 2 дня в свободное от работы время. Как только начал писать код, оказалось, что не все так сложно.
Буфер потому и должен содержать строки, что от начала строки легче подсчитать позицию.
Подозреваю, что в RichEdit Примерно также все устроено.
← →
Defunct © (2005-11-30 05:46) [26]z007 (30.11.05 00:12) [25]
т.е. по сути Вы реализовали для случая WordWrap=false, а с переносами как?
← →
z007 (2005-12-06 23:28) [27]Для Edit, кажется, есть возможность определять собственную функцию переноса. При расчете размера буфера, в который мы по кускам загружаем файл, воспроизводится эта процедура, за счет чего узнаем номер реальной строки (с #13#10) и "подстроку", которая будет первой видимой строкой в memo (он же multiline EditBox)
Вообще, действительно, у меня читались только строки целиком, однако, думаю, что и при включенном переносе их надо грузить из файла также. Ненужная часть загруженного текста остается невидимой как и в обычном EditBox"e, - здесь важно правильно спозиционировать Scrollbar - но при смене видимого текста в Edit"e немедленного обновления буфера с текстом не происходит, потому, что он имеет запас "сверху" и "снизу" в пару строк(реальных строк с #13#10).
У меня файл на диске обновлялся сразу (такая и задача была), но для общих случаев это, конечно, неправильно.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.011 c