Форум: "Потрепаться";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c