Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1133888031
Gala_l
2005-12-06 19:53
2005.12.25
kbmMW


1-1133199265
Erick
2005-11-28 20:34
2005.12.25
Работа с ListBox из другой формы


2-1134139169
Zilog
2005-12-09 17:39
2005.12.25
ShellExecute


14-1132315308
DiamondShark
2005-11-18 15:01
2005.12.25
Ненавижу ЮИ


14-1133624702
GudzonXXX
2005-12-03 18:45
2005.12.25
Интернет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский