Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-31400
Crocodile
2003-06-25 00:15
2003.07.10
Ну что за лажа??


1-31197
Navi
2003-06-28 14:29
2003.07.10
Сбросить фокус


1-31180
Фадеева
2003-06-27 20:09
2003.07.10
Работа с TForm через строку.


4-31565
Neep
2003-05-08 14:38
2003.07.10
Подскажите как изменить идентификатор меню


1-31250
ViJen
2003-06-26 10:55
2003.07.10
Округление





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский