Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
ВнизЧтение из текстового файла Найти похожие ветки
← →
AnSi (2003-06-27 12:53) [0]Нужно сразу считать из обычного текстового файла скажем 100000-ую строку
Как ?
← →
Anatoly Podgoretsky (2003-06-27 12:54) [1]Сразу можно если у тебя есть индекс.
← →
none_123 (2003-06-30 09:14) [2]Ну и как, хотелось бы знать,
и посмотреть кусок кода
← →
Palladin (2003-06-30 09:25) [3]
var
Data:array [1..2] of Integer; // Pos,Size
S:string;
File_:file;
begin
AssignFile(File_,"Strings.indexes");Reset(File_,4);
Seek(FOFIdx,100000*2);
BlockRead(File_,Data,2);
CloseFile(File_);
AssignFile(File_,"Strings.data");Reset(File_,1);
Seek(File_,Data[1]);
SetLength(s,Data[1]);
BlockRead(File_,s[1],Data[2]);
CloseFile(File_);
end;
← →
Edward (2003-06-30 10:05) [4]Можно и так:
procedure TForm1.Button1Click(Sender: TObject);
var Lines: TStrings;
NeedLine: Integer;
begin
Lines := TStringList.Create;
NeedLine := 100000;
try
Lines.LoadFromFile("C:\anyfile.txt");
if (NeedLine - 1) <= Lines.Count then
ShowMessage(Lines[NeedLine - 1]);
finally
Lines.Free;
end;
end;
← →
None_123 (2003-06-30 10:07) [5]Что такое "Strings.indexes" и можно
ли сразу читать из файла с данными минуя первый кусок кода
до 1-го closefile
← →
Palladin (2003-06-30 10:10) [6]только указаным Anatoly Podgoretsky © (27.06.03 12:54)
String.indexes файл с позициями и размерами строк
← →
None_123 (2003-06-30 10:12) [7]Edward-у:
А если файл большой, скажем
в 100000000 строк, стек токда ведь переполнится и все.
← →
None_123 (2003-06-30 10:29) [8]А нечто вроде
AssignFile(File_,"Strings.data");
Reset(File_,1);
Seek(File_,100000);
BlockRead(File_,s,sizeof(s));
CloseFile(File_);
будет работать ?
← →
Palladin (2003-06-30 10:35) [9]нет
1 -
Reset(File_,1);
Seek(File_,100000);
ты установишь указатель позиции в файле не на 100000 строку, а на 100000 байт, сам понимаешь это немножко разные вещи
2 -
BlockRead(File_,s,sizeof(s));
я так догадываюсь ты имел ввиду s:string; тогда всего лишь прочтется 4, ничего не значащих для программы, байта
если же ты имеешь в виду s:ShortString или s:string[xx] то в перменную S прочтется 255 ( во втором случае xx) байт, тоже понимаешь размер у полученой строки ограничен <=255 (xx)
← →
Anatoly Podgoretsky (2003-06-30 11:01) [10]None_123 (30.06.03 10:07)
А никто не просил считывать весь файл.
Про второй пример вообще молчу.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c