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

Вниз

TFileStream для работы с текстовыми файлами   Найти похожие ветки 

 
amisare ©   (2003-11-05 13:46) [0]

Как читать из файла с пмомощью TFileStream построчно (ананлогично writeln). Размер строк не известен, поэтому непонятно как пользоваться функцией Write у TFileStream


 
Skier ©   (2003-11-05 13:50) [1]


> поэтому непонятно как пользоваться функцией Write у TFileStream

с начала пишешь длину строки, потом саму строку.


 
Anatoly Podgoretsky ©   (2003-11-05 13:56) [2]

amisare © (05.11.03 13:46)
TFileStream не работает с понятиями строки, для него единственное понятие байт, это низкоуровневые операции.
Нужна работа со строками или типами, переходи на TextFile/File of
или пиши свою высоуровневую надстройку над ним, работы немного.


 
han_malign ©   (2003-11-05 14:04) [3]

Так "читать из файла", или "(ананлогично writeln)...как пользоваться функцией Write"???
Если нужно просто писать в текстовый файл, то:
s:=str+#13#10;
FileStream.Write(s[1],Length(s));


 
Polevi ©   (2003-11-05 14:18) [4]

TStringList.LoadFromFile


 
amisare ©   (2003-11-05 18:22) [5]

Простите за долгое отсутствие... Итак - проблема - читать/писать в файл с помощью TFileStream, но построчно. Можно определять символ конца строки, но это слишком хреноый подход. Как можно еще?


 
Delirium ©   (2003-11-05 18:28) [6]

"Можно определять символ конца строки, но это слишком хреноый подход" - а как ты думаешь происходит чтение из обычного текстового файла с помощю Readln?


 
Delirium ©   (2003-11-05 18:29) [7]

На, проанализируй исхоники ...
procedure _ReadLn(var t: TTextRec);
asm
// -> EAX Pointer to text record

PUSH EBX
MOV EBX,EAX
@@loop:
MOV EAX,EBX
CALL _ReadChar

CMP AL,cLF // accept LF as end of line
JE @@exit
CMP AH,cEOF
JE @@eof
CMP AL,cCR
JNE @@loop

MOV EAX,EBX
CALL _ReadChar

CMP AL,cLF // accept CR+LF as end of line
JE @@exit
CMP AH,cEOF // accept CR+EOF as end of line
JE @@eof
DEC [EBX].TTextRec.BufPos
JMP @@loop // else CR+ anything else is not a line break.

@@exit:
@@eof:
POP EBX
end;


 
amisare ©   (2003-11-05 19:23) [8]

Продолжение темы - чтение значений (с помощью TFileStream) из типизированного файла (изначально file of smallint) почему то дает нули.... Т.е. в цмкле читаю число smallint а получаю нуль... Что то тут не так, а что?


 
WithOut Any ... ©   (2003-11-05 19:34) [9]

А что мешает читать из текстового файла нормально.
Assign();
Reset();
Readln();
Почему именно TFileStream?


 
amisare ©   (2003-11-05 19:36) [10]

to Without Any - если пытаться так сделать с файлом на CD - то EInOutError


 
WithOut Any ... ©   (2003-11-05 19:43) [11]

Не совсем понял, при чем тут носитель (я ведь писал Readln а не Writeln)?


 
amisare ©   (2003-11-05 19:48) [12]

А если файл с атрибутом ReadOnly то вызов Reset дает EInOutError


 
amisare ©   (2003-11-05 19:49) [13]

а на CD все файлы с атрибутами ReadOnly


 
WithOut Any ... ©   (2003-11-05 20:04) [14]

Млин, дык ведь необходимо читать, а не писАть


 
amisare ©   (2003-11-05 20:44) [15]

To Without Any - читайте внимательней - RESET именно RESET а не REWRITE. И все равно EInOutError////


 
Anatoly Podgoretsky ©   (2003-11-05 21:14) [16]

amisare © (05.11.03 20:44) [15]
Не рассказывай сказки, у тебя ошибка в программе. Только что не поленился проверить, все нормально читает без всяких ошибок.
Вот код

procedure TForm1.Button1Click(Sender: TObject);
var
F : TextFile;
S : string;
begin
AssignFile(F,"H:Disk.txt");
Reset(F);
Readln(F,S);
CloseFile(F);
Label1.Caption := S;
end;


 
Anatoly Podgoretsky ©   (2003-11-05 21:16) [17]

Без проверки я еще задумываля не дурак ли я.
Что бы не было сомнения H: это CDROM


 
WithOut Any ... ©   (2003-11-05 21:24) [18]

Игра в одни ворота. Пора в "Потрепаться"


 
amisare ©   (2003-11-05 23:23) [19]

Не в одни ворота... У меня Reset(f,1) (файл нетипизированный)... Возникает ошибка EInOutError (Access denied)


 
amisare ©   (2003-11-05 23:24) [20]

Могу дать полный код... Проверил - ошибка возникает при вызове Reset(f,1) и не более чем... Если файл на жестком диске - ошибки нет...


 
app ©   (2003-11-05 23:27) [21]

TFileStream для работы с текстовыми файлами



Страницы: 1 вся ветка

Текущий архив: 2003.11.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
4-90174
frost63
2003-10-02 07:16
2003.11.27
Файлы Office.


3-89720
lovres
2003-11-10 09:43
2003.11.27
Ошибка Invalid use of keyword в запросе


8-90008
Spawn
2003-07-29 20:20
2003.11.27
AVI


3-89773
stud
2003-11-06 17:47
2003.11.27
отчеты........


8-90016
sam_perm
2003-08-01 13:37
2003.11.27
распознование бланков