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

Вниз

Сколько в tMemo можно сунуть информации?   Найти похожие ветки 

 
12 ©   (2009-04-17 17:03) [0]

Слышал краем уха, что есть предел.
Написал себе костыль, в виде программки-анализатора БД, которая раз в 5 минут пишет в мемо результаты. Собираюсь оставить на выходные включенной. Сколько там понапишется, не знаю. Не повиснет из-за переполнения?
Можно бы и в файл, конечно.. Но это столько кода перелопачивать, ибо изначально не думал, что так получится


 
Eraser ©   (2009-04-17 17:05) [1]

> [0] 12 ©   (17.04.09 17:03)

тестовый пример из 5-10 строк религия не дает написать? )


 
Jeer ©   (2009-04-17 17:05) [2]


> Но это столько кода перелопачивать,

Да ты приляг у телевизора: пивко, Дом-2, etc.. и зачем тебе эти тяготы с мозговыми упражнениями ?
Отдыхай.


 
12 ©   (2009-04-17 17:14) [3]

да я не знаю сколько туда может вообще попасть, для того что б пример писать и на сервере не хочу экспериментировать
пока проверил, много можно, но вдруг еще больше надо будет

ну и спасибо на добром слове, конечно..


 
Dimka Maslov ©   (2009-04-17 17:16) [4]

В 95/98 Было ограничение в 64 килобайта. На платформе NT ограничения никакого небыло. Только размер доступной приложению памяти.


 
@!!ex ©   (2009-04-17 17:16) [5]

> Но это столько кода перелопачивать

15 минут работы. Проверенно.


 
@!!ex ©   (2009-04-17 17:17) [6]

> [4] Dimka Maslov ©   (17.04.09 17:16)

Может всетаки мегабайта.
в 64 кб даже лицензионное соглашение Windows не влезет.


 
clickmaker ©   (2009-04-17 17:18) [7]

> Можно бы и в файл, конечно.. Но это столько кода перелопачивать

Search and Replace:
Memo1.Lines.Add() -> WriteLog()
где WriteLog - процедура максимум из 5 строчек, записывающая строку в файл (можно один раз открытый при старте программы)


 
@!!ex ©   (2009-04-17 17:18) [8]

> [5] @!!ex ©   (17.04.09 17:16)

Делается просто. Memo переименовывается или вообще удаляется. После чего во всех файлах ищется обращение к Memo, заменяется на запись в файл.


 
@!!ex ©   (2009-04-17 17:19) [9]

> [7] clickmaker ©   (17.04.09 17:18)
> где WriteLog - процедура максимум из 5 строчек, записывающая
> строку в файл (можно один раз открытый при старте программы)

Главное Flush не забыть...


 
Kolan ©   (2009-04-17 17:22) [10]

Надо было использовать посетителя или подобный способ, так чтобы способ сохранения (файл, мемо...) не зависел от кода.


 
12 ©   (2009-04-17 17:22) [11]

>> Memo удаляется
а вот так я что-то не подумал..


 
@!!ex ©   (2009-04-17 17:23) [12]

Кстати, автор. Добавление в memo - это ЖУТКО медленно. Запись в файл будет работать во много раз быстрее.


 
Паша   (2009-04-17 17:44) [13]


> @!!ex ©   (17.04.09 17:17) [6]

все таки килобайта. и влазит туда достаточно много. под ДОСом я туда даже виртуальный диск засовывать умудрялся, потому как с 5-ти дюймовой дискеты очень медленно все работало, а  винта не было в принципе. мда... все таки винда очень развращает... метры, гиги...


 
12 ©   (2009-04-17 17:46) [14]

>> ЖУТКО медленно

возможно, но  удобно чтоб можно сразу где-то видеть результат, а не открывать файл или жать Обновить (одно время делал лог в html, достаточно переключится на браузер и нажать Ф5)


 
@!!ex ©   (2009-04-17 17:47) [15]

> [13] Паша   (17.04.09 17:44)

ПРи чем тут винда? Даже под досом было 640 килобайт доступно... С 64кб я работал и представляю сколько это, просто под виндой 64кб, это как-то.. неправильно.


 
@!!ex ©   (2009-04-17 17:48) [16]

> [14] 12 ©   (17.04.09 17:46)

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


 
clickmaker ©   (2009-04-17 17:49) [17]

> но  удобно чтоб можно сразу где-то видеть результат, а не
> открывать файл или жать Обновить

в просмотрщике FARа, например, если встанешь на конец файла, он сам будет подтягивать добавленные строки. И ничего жать не надо


 
Городской Шаман   (2009-04-17 18:09) [18]


>
> 12 ©   (17.04.09 17:03)  


На Win9x 64 Кб, на NT 2 Гб (тоесть сколько может процессу быть выделено виртуальной памяти)


 
tButton ©   (2009-04-18 02:43) [19]


> clickmaker ©   (17.04.09 17:18) [7]
>
> > Можно бы и в файл, конечно.. Но это столько кода перелопачивать
>
> Search and Replace:
> Memo1.Lines.Add() -> WriteLog()
> где WriteLog - процедура максимум из 5 строчек, записывающая
> строку в файл (можно один раз открытый при старте программы)

Memo1.Lines.SaveToFile...


 
@!!ex ©   (2009-04-18 07:38) [20]

> [19] tButton ©   (18.04.09 02:43)

И что это?


 
test ©   (2009-04-18 07:49) [21]

В исходниках посмотреть уже не то?


 
korneley ©   (2009-04-18 08:01) [22]


> @!!ex ©   (18.04.09 07:38) [20]
> > [19] tButton ©   (18.04.09 02:43)И что это?

Изврат по полной. Сначала  в мемо, потом в файл. Причём, каждый раз "полным куском". :)))


 
Marser ©   (2009-04-19 12:35) [23]


> @!!ex ©   (17.04.09 17:18) [8]
>
> > [5] @!!ex ©   (17.04.09 17:16)
>
> Делается просто. Memo переименовывается или вообще удаляется.
>  После чего во всех файлах ищется обращение к Memo, заменяется
> на запись в файл.

Лучше всё-таки запись в лог заранее оформить отдельной процедурой и затем влёт менять логику работы логирования, эдакий самопальный не ООП-полиморфизм ;-)


 
@!!ex ©   (2009-04-19 14:05) [24]

> [23] Marser ©   (19.04.09 12:35)

Ну я же не имел ввиду, что прм надо писать: Writeln(F, "bla bla bla");
вызов записи имел ввиду. Что-то типа: Loger.Add("bla bla bla");


 
Palladin ©   (2009-04-19 14:27) [25]


> @!!ex ©   (17.04.09 17:17) [6]

Кило.


 
antonn ©   (2009-04-19 16:56) [26]

ограничение на строку в мемо 4к
function TMemoStrings.Get(Index: Integer): string;
var
 Text: array[0..4095] of Char;
begin
 Word((@Text)^) := SizeOf(Text);
 SetString(Result, Text, SendMessage(Memo.Handle, EM_GETLINE, Index,
   Longint(@Text)));
end;


 
tButton ©   (2009-04-20 02:43) [27]

Memo1: TMemo; -> Memo1: tStringList;
так еще можно =)


 
test ©   (2009-04-20 08:32) [28]

D7

unit Classes;

MaxListSize = Maxint div 16;

procedure TList.SetCapacity(NewCapacity: Integer);
begin
 if (NewCapacity < FCount) or (NewCapacity > MaxListSize) then
   Error(@SListCapacityError, NewCapacity);
 if NewCapacity <> FCapacity then
 begin
   ReallocMem(FList, NewCapacity * SizeOf(Pointer));
   FCapacity := NewCapacity;
 end;
end;

Delphi syntax:

const MaxInt = High(Integer);

C++ syntax:

#define MaxInt (int)(2147483647)

Отсюда имеем

TString(TList).max = (MaxListSize = Maxint div 16)*Максимальная длина строки;



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

Текущий архив: 2009.06.21;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.016 c
11-1201597213
Elec3C
2008-01-29 12:00
2009.06.21
Баг ListBox.DoubleBuffer := True


15-1239276494
Tenebrae
2009-04-09 15:28
2009.06.21
экспорт СМС


15-1236615034
Кто б сомневался
2009-03-09 19:10
2009.06.21
Музыка - жанры и стили


2-1240982320
Iriss
2009-04-29 09:18
2009.06.21
TSaveDialog


15-1239688470
JohnKorsh
2009-04-14 09:54
2009.06.21
Eternet и TCP/IP адрес.