Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Максимальное количество строк в 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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.042 c
14-1133420205
Sergey_Masloff
2005-12-01 09:56
2005.12.25
На борландовский семинар


14-1133500905
Nic
2005-12-02 08:21
2005.12.25
Не работает TV Tuner


6-1126528686
Бобров Илья
2005-09-12 16:38
2005.12.25
Как вызвать стандартый дилог подключения к Интернет


8-1121459743
ronyn
2005-07-16 00:35
2005.12.25
Как проигрывается OGG формат?


1-1133431567
archisan
2005-12-01 13:06
2005.12.25
Internet Explorer :(