Главная страница
    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
3-31162
RDA
2003-06-16 12:20
2003.07.10
Импорт записей из другой таблицы


3-31163
Step[B.M.]
2003-06-19 09:04
2003.07.10
Снова об ADO и Excel


3-31161
snake1977
2003-06-17 16:49
2003.07.10
Внешние соединения


3-31144
Yus
2003-06-09 19:32
2003.07.10
Вопрс по языковому драйверу


1-31349
Oxy
2003-06-27 13:38
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский