![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чтение из текстового файла
Sniffer © (2002-08-19 00:02:00)Уважаемые мастера, помогите плиз. Надо считать, скажем сотую строку из текстового файла. Можно ли это сделать не так :
for i := 1 to 100
ReadLn(MyTextFile, S)
а как-то иначе? Ведь не охота считывать 99 строк, для того, чтобы считать сотую. Если чего не так сказал, сильно не ругайте :).
Спасибо.
kull (2002-08-19 11:37:00) [1]Есть вариант, если это возможно, если сделать все строки фиксированной длинны.
Anatoly Podgoretsky (2002-08-19 10:08:00) [2]Sniffer © (19.08.02 00:02)
Простыми методами нельзя.
Доступ к строками только последовательный.
Вариант есть только единственный, провести индексацию файла и в дельнейшем с ним работать не как с текстовый, использую позиционирование и считывая ихвестное количество символов.
Другие варианты только чтение всех строк до нужной, не важно с помощью ReadLn или загрузков в список, на самом деле это не так и медленно файл размером в 120 мегабайт загружается примерно 6 секунд, если конечно у компьютера есть достаточные ресурсы или черт знае сколько если иъ нет.
Вариант c ReadLn можно сделать немного более оптимальным
for i := 1 to N-1 do
begin
ReadLn(MyTextFile)
end;
ReadLn(MyTextFile,S)
RV (2002-08-19 09:43:00) [3]объявить его как офСтринг?
/\/\AXIM (2002-08-19 01:45:00) [4]Без ReadLn(F)
var
F : file;
A : array of byte;
I,k,g : cardinal;
S : PChar;
label 01;
begin
Write("String num >>> ");
ReadLn(g);
AssignFile(F,"txt.txt");
Reset(F,1);
SetLength(A,FileSize(F));
BlockRead(F,A[Low(A)],Length(A));
k:=1;
for I:=0 to High(A) do
begin
If A[I] = 13 then Inc(k);
If k = g then
for k:=I+1 to High(A) do
If A[k] = 13 then goto 01;
end;
01:
A[k]:=0;
Inc(I);
Inc(I);
S:=@A[I];
WriteLn(S);
ReadLn;
end.
Ученик (2002-08-19 00:25:00) [5]>Sniffer © (19.08.02 00:21)
Позиционироваться к определенной строке текстового файла нельзя
Sniffer (2002-08-19 00:21:00) [6]Гм...Спасибо и на этом. Но всё же, мне всё-таки интересно узнать,можно ли это сделать через AssignFile(MyTextFile, "MyTextFile.txt");
Ученик (2002-08-19 00:09:00) [7]TStringList.LoadFromFile