Форум: "Основная";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
ВнизЧитать текстовый файл построчно Найти похожие ветки
← →
Dimich1978 (2004-02-19 09:29) [0]Вопрос вот в чем читаю я к примеру так:
...
var
S: string;
i: integer;
begin
List.BeginUpdate;
try
List.LoadFromFile(FileName);
for i:=0 to List.Count - 1 do begin
S:=List[i];
OemToChar(PChar(S), PChar(S));
List[i]:=S;
end;
finally
List.EndUpdate;
end;
Но возникает вопрос такого характера, у меян этот текстовый файл(лог) очень большой, справится ли(хватит ли места) у StringList или Strings чтобы загрузить его. Не могу найти какое ограничение у них.
Если для больших файлов(измеряется 10МБ) не подойдет, то как можно тогда читать данный файл, только красиво(не через assign,read)
Спасибо всем заранее.
← →
TUser (2004-02-19 09:35) [1]var f:textfile; s:struing;
begin
assignfile(ююю)
reset(f);
try
while not eof(f) do begin
readln(f,s)
...
end;
finally
closefile(f);
end;
+ статьи А.Подгорецкого на Королевстве делфи (надо бы их почаще рекламировать, а то не все их читаю, почему-то).
← →
Dimich1978 (2004-02-19 09:43) [2]>>TUser
>>Dimich1978 красиво(не через assign,read) ;-)
← →
Defunct (2004-02-19 09:52) [3]А чем через Assign не красиво? Религия запрещает7
← →
ЮЮ (2004-02-19 09:56) [4]TFileStream, правда лазить по нему надо будет как по бинарному
← →
TUser (2004-02-19 09:57) [5]А "не". Тогда, наверное,
var s:TStringList;
begin
...
s.LoadFromFile(...);
...
end;
Но если файл действительно большой, то будет тормозить и есть много памяти. Конкретно, что касается лога, то хочется знать в чем собственно состоит задача. Если найти, скажем, записи за определенный день, то тогда лучше сделать файл типа file of rec. И там уже читать запись с нужным номером. А если найти все записи, где что-то происходило, тогда нужен хеш.
← →
Anatoly Podgoretsky (2004-02-19 10:01) [6]Что такое List? Но естественно хватит, хоть построчно, хоть разом, или не хватит - метод тут роли не играет.
← →
Dimich1978 (2004-02-19 10:09) [7]Может изврат, но буду пихать все в БД и там уже работать с данными(более гибкие отчеты можно сформировать) да и работать приятнее нежели с текстовым файлом, а размеры могут быть и по 10 и по 100 и по 150 МБ. Хотя в среднем МБ 50-70.
← →
Dimich1978 (2004-02-19 10:23) [8]LIst у меня TStringLIst
← →
Verg (2004-02-19 10:28) [9]
> Dimich1978 © (19.02.04 10:23)
Странноватые у вас понятия о красоте.
А вкачивать в память по 150 Мгб файлы - это красиво?
← →
Dimich1978 (2004-02-19 10:33) [10]Чувствую что без assign не прокатит. Ладно буду через них делать. Всем спасибо. И еще раз спасибо, 150 в память это я бы назвал извр...ие вот и спрашивал можнт АПИШНЫМИ функциями как можно было. FILEOPEN и тому подобное, почему спрашиваю у меня Хелп в 6 весиии не пашет.
← →
Verg (2004-02-19 10:45) [11]
> Dimich1978 © (19.02.04 10:33)
Вы видели КАК реализован LoadFromFile?
Вы знаете что, для закачки этим методом в какой-то момент времени понадобится 2*V памяти (V- объем файла)...
← →
Плохиш (2004-02-19 10:46) [12]>Dimich1978 © (19.02.04 10:33) [10]
> вот и спрашивал можнт АПИШНЫМИ функциями как можно было.
> FILEOPEN и тому подобное
Ты думаешь для assignfile, reset борланд что-то своё некрасивое придумывал?
← →
Serginio666 (2004-02-19 14:22) [13]http://www.1c.hippo.ru/cgi-bin/predownl.cgi?id=2019
Там есть
Тест на чтения текстовых файлов различными способами. Также исходники объектов для последовательного чтения текстовых файлов
как в прямом так и в обратном направлении TTextReader и TTextBackReader использующие кольцевой буффер размером 64 кб с ограничением на длину строки 64 кб - 3 байта.
Сразу предупреждаю, что не протестированы на все
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c