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

Вниз

Чтение из текстового файла   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
3-31157
Orpheus
2003-06-19 08:12
2003.07.10
Проблема с Commit в IB


14-31427
sniknik
2003-06-18 18:54
2003.07.10
Попинаем Delphi 7 ногами?


1-31294
CTAPbIi
2003-06-26 15:04
2003.07.10
Как наиболее просто загрузить Icon из exe-файла?


6-31395
Del
2003-05-01 00:41
2003.07.10
Как сделать сервер с использованием WinSock. В проекте без форм!


1-31195
zomba
2003-06-26 08:27
2003.07.10
ms word проблема с открытием документа