Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-90103
PavelSin
2003-11-04 10:40
2003.11.27
Просмоторщик дайджестов


1-89920
Olga_Oo
2003-11-18 10:57
2003.11.27
Qreport


1-89828
evgeniy132
2003-11-17 05:54
2003.11.27
Поиск символа в строке


1-89854
Mishenka
2003-11-15 22:48
2003.11.27
Неправильно печатается файл :(((


1-89935
malefik
2003-11-18 09:03
2003.11.27
Не происходит события ONTIMER





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский