Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Насколько «резиновый» компонент Memo?   Найти похожие ветки 

 
Idiliya ©   (2004-05-14 00:31) [0]

Здравствуйте! Вывожу на компонент Memo построчно результаты итерационного процесса, пока сам процесс не будет остановлен пользователем. Таким образом, он может быть сравнительно бесконечным. Я наблюдала результаты работы своей программы до 70400 шага (соответственно 70400 строк в поле Memo), больше просто не дотерпела, но на машине моего научного руководителя в Memo перестают добавляться новые строки где-то после 2 тысяч с хвостиком, хотя программа продолжает свою работу. Тестировался один и тот же проект, просто на разных машинах (ОС у научника – Win98, у меня – ХР).
Как «обыграть» этот компонент, чтобы все результаты можно было просмотреть, поскольку все они важны, и очищать Memo после заполнения 2000 строк  - значит потерять нить наблюдения за процессом?


 
VMcL ©   (2004-05-14 00:54) [1]

>>Idiliya ©  (14.05.04 00:31)

В Win9x у Memo ограничение - 64 КБ.

http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621358&n=18


 
Anatoly Podgoretsky ©   (2004-05-14 00:58) [2]

Idiliya ©   (14.05.04 00:31)  
Используй TRichEdit вместо TMemo, ограничение 2 гб в данный момент на Win32.


 
Reindeer Moss Eater ©   (2004-05-14 12:17) [3]

Используй вывод не в мемо, а в текстовый файл.
И органиченме в 2 ГБ будет снято.


 
wicked ©   (2004-05-14 12:44) [4]

также можно TStringList и TListBox со Style = lbVirtual...


 
Игорь Шевченко ©   (2004-05-14 12:54) [5]


> и TListBox со Style = lbVirtual...


Это в какой версии Delphi, если не секрет ?


 
idiliya ©   (2004-05-14 14:55) [6]

Мерсибо, ребята! Попробую все варианты. На чем остановилась - напишу, когда реализую.


 
wicked ©   (2004-05-14 15:14) [7]


> Это в какой версии Delphi, если не секрет ?

в delphi 6 / bcb 6 есть... только что проверил....


 
Игорь Шевченко ©   (2004-05-14 15:41) [8]

wicked ©   (14.05.04 15:14)

Да, спасибо. В D5, которую я использую, такого нету, поэтому и удивился.


 
Stas ©   (2004-05-14 15:53) [9]

А че не писать в БД ?


 
WebErr ©   (2004-05-14 17:12) [10]


> Игорь Шевченко ©   (14.05.04 15:41) [8]

Так чем же всё-таки лучше эта самая злополучная 5-я Делфя, что Вы так упорно не хотите переходить на более новую версию? 8\


 
Smithson ©   (2004-05-14 17:18) [11]

А чем все же лучше эти более новые версии? Я тоже сижу на пятерке и повода идти на следующие версии не вижу...


 
WebErr ©   (2004-05-14 17:24) [12]


> Smithson ©   (14.05.04 17:18) [11]

А путер вы давно меняли?
А операционку?
Дело в том, что их не просто так из года в год выпускают - обстановка вокруг меняется, и всё сложнее найти соответствующие библиотеки поддержки некоторых возможностей новых версий для старых, к которым привык...
То же самое про продукты любого рода: от Делфи до Windows. :)
ЗЫ: Вот такие пироги! :)


 
VMcL ©   (2004-05-14 18:17) [13]

<off>
Я на шестерку перешел, к примеру, из-за поддержки MMX, SSE, 3DNow! и т. п. не всегда нужной в Delphi мути.

А вот на семерку меня фиг так просто сагитируешь :))
</off>


 
WebErr ©   (2004-05-14 18:21) [14]


> VMcL ©   (14.05.04 18:17) [13]

Я тоже сижу в 6-ой, затаившись, ожидая своей участи... :)
А вообще... мне просто влом до магазина дойти за 7-ой, когда с работы иду... :)


 
han_malign ©   (2004-05-14 18:43) [15]

>Насколько «резиновый» компонент Memo?
Memo это multiline Edit
http://netlive.narod.ru/apidoc/ctrledit.html#0000g2

The EM_SETLIMITTEXT message is identical to the EM_LIMITTEXT message.

EM_LIMITTEXT
The EM_LIMITTEXT message sets the text limit of an edit control. The text limit is the maximum amount of text, in TCHARs, that the user can type into the edit control. You can send this message to either an edit control or a rich edit control.

For edit controls and Rich Edit 1.0, bytes are used. For Rich Edit 2.0 and later, characters are used.

To send this message, call the SendMessage function with the following parameters.

SendMessage(
 (HWND) hWnd,        // handle to destination window
 EM_LIMITTEXT,       // message to send
 (WPARAM) wParam,    // text length
 (LPARAM) lParam     // not used; must be zero
);
Parameters
wParam
Specifies the maximum number of TCHARs the user can enter. For ANSI text, this is the number of bytes; for Unicode text, this is the number of characters. This number does not include the null terminator.
Rich edit controls: If this parameter is zero, the text length is set to 64K characters.

Edit controls on Windows NT/2000/XP: If this parameter is zero, the text length is set to 0x7FFFFFFE characters for single-line edit controls or –1 for multiline edit controls.

Edit controls on Windows 95/98/Me: If this parameter is zero, the text length is set to 0x7FFE characters for single-line edit controls or 0xFFFF for multiline edit controls.


 
Игорь Шевченко ©   (2004-05-14 22:30) [16]

WebErr ©   (14.05.04 17:12)


> Так чем же всё-таки лучше эта самая злополучная 5-я Делфя


Лицензией, дорогой друг, лицензией. Знакомо такое слово ?

Дома есть D6 Personal, также лицензионная, благо Free, но не ехать же ?


 
nikkie ©   (2004-05-15 02:53) [17]

>Reindeer Moss Eater
Используй вывод не в мемо, а в текстовый файл.
И органиченме в 2 ГБ будет снято.

следующий вопрос будет: почему у меня пишется 3ГБ-файл, а у научного руководителя - нет? :)


 
Германн ©   (2004-05-15 03:09) [18]

А чем плоха Д4?
До сих пор работаю на ней. Претензий со стороны потребителей нет!

И еще. Есть у меня программа написанная на Д1. Она правда ДСП. Но до сих пор прекрасно выполняет все свои функции. Несмотря на то, что она шла по пути W3.11-W95-W98-WXP. И несмотря на то, что она использует Paradox!


 
Yuri-7 ©   (2004-05-15 10:01) [19]

Вообще-то, все четные версии считаются промежуточными. Базовые - D3, D5, D7


 
Idiliya ©   (2004-05-16 00:46) [20]


> nikkie ©   (15.05.04 02:53) [17]

Не будет :) Я понимаю, что это ограничения ОС.

Лучше объясните ламеру следующую вещь:
когда в Memo добавляются строки, отображается на поле последняя строка, а когда RichEdit, то отображается всегда с первой, и за процессом наблюдать становится невозможно - поле ведь постоянно обновляется с добавлением новой строки.
Крутить ScrollBars не успеваю :)
Разве что, когда остановлю процесс.
Можно ли в RichEdit изменить программно способ отображения его строк, чтобы показывалась всегда последняя?


 
Idiliya ©   (2004-05-16 02:03) [21]


> han_malign ©   (14.05.04 18:43) [15]

Спасибо, полезная ссылка.
Но, цитирую: "Для многострочного-64KB Размер буфера может быть изменен (непревышая максимально допустимые значения)", мне вряд ли чем поможет.
Я решила просто использовать RichEdit, если смогу побороть проблему [20]. Не всякий юзверь выдержит глядеть, как результаты эксперимента медленно, но уверенно перерастают в 2Гб.
А тем более комиссия. Дальше Университета эта программа не пойдет. Если бы действительно надо было решить такую проблему, я бы при сообщении ОС о переполнении буфера (WM_COMMAND), сохраняла данные в файл RTF и очищала поле, затем пользователь по желанию мог бы открывать этот файл и делать с ним все, что угодно. Ну, или почти всё. Может, покопалась бы в этом глубже, и придумала еще что-нибудь более гуманное, чем RTF, окупирующий все свободное пространство жесткого диска.
Помогите решить [20], пожалуйста.


 
RomeoGolf ©   (2004-05-16 17:46) [22]


> Idiliya ©   (16.05.04 00:46) [20]


Если не программно - мышью щелкал по RichEdit, и он показывал последнюю появившуюся строку. Программно устанавливать фокус ввода еще не пробовал(не надо было), но проблем вроде быть не должно.


 
Polevi ©   (2004-05-16 17:58) [23]

> [21] Idiliya ©   (16.05.04 02:03)
пиши данные в файл
в memo отображай не больше разумного числа, к примеру в 100 строк
при превышении первую строку удаляй


 
Idiliya ©   (2004-05-17 00:15) [24]


> Polevi ©   (16.05.04 17:58) [23]

Благодарю покорно, Polevi.
Вся беда в том, что важна каждая строка.
Пока я отображаю в Memo по 2000 строк, затем заношу их в файл и очищаю поле.
Посмотреть полностью, что получилось, можно лишь остановив процесс и загрузив файл в окно просмотра.
Пока вот так выкрутилась.
Поиграю еще с фокусом, как посоветовал RomeoGolf © (16.05.04 17:46)


 
Германн ©   (2004-05-17 02:54) [25]

2 Idiliya ©   (17.05.04 00:15) [24]
Дык ведь Polevi ©   (16.05.04 17:58) [23]
советовал Вам нечто другое!
Пишите все в файл, а в Мемо отображайте лишь по мере необходимости.
Если важна каждая строка, то в файле она есть и ее можно будет посмотреть.

>Пока я отображаю в Memo по 2000 строк
И как их смотреть? Пока пролистаешь - замучиешься и плюнешь на все!


 
Романов Р.В. ©   (2004-05-17 07:22) [26]

Как вариант можно попробовать типизированный файл и virtual ListView для отображения данных



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.031 c
7-1082599978
LazyFox
2004-04-22 06:12
2004.05.30
Чтение текста из консоли


3-1083820008
Litr
2004-05-06 09:06
2004.05.30
Bookmark


1-1085001011
netVare
2004-05-20 01:10
2004.05.30
Как организовать поБИТовое чтение/запись из/в файла


6-1082008631
malamba
2004-04-15 09:57
2004.05.30
работа с FTP при помощи IdFTP (Indy)- где бы почитать


14-1083563569
Александр Иванов
2004-05-03 09:52
2004.05.30
Нужны ли русские России?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский