Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Внизработа с текстовым файлом Найти похожие ветки
← →
pathfinder (2005-09-01 20:43) [0]Подскажите пожалуйста, как читать и записывать символы в текстовом файле из определеных позиций?
← →
Kerk © (2005-09-01 20:45) [1]Seek
← →
Fay © (2005-09-01 20:46) [2]SetFilePointer
← →
pathfinder (2005-09-01 21:27) [3]что я делаю неправильно?
procedure TForm1.Button1Click(Sender: TObject);
var f1, f2: textfile;
ch: char;
begin
if opendialog1.Execute then
begin
AssignFile(f1, OpenDialog1.FileName);
Reset(f1);
assignfile(f2, "out.txt");
rewrite(f2);
seek(f1, 19);
read(f1, ch);
write(f2, ch);
end;
end;
← →
Anatoly Podgoretsky © (2005-09-01 21:38) [4]что я делаю неправильно?
Ты пытаешься использовать seek для текстовых файлов, это потоковое устройство только в одном направлении и последлвательно или с самого начала или с конца, если режим append.
← →
pathfinder (2005-09-01 21:41) [5]а чем пользоваться в текстовом файле для установки курсора на нужную позицию?
← →
Anatoly Podgoretsky © (2005-09-01 22:02) [6]Не использовать текстовые файлы, а использовать или АПИ или VCL, но тогда работу со строками будешь сам обесчечивать ручками по полной программе.
← →
pathfinder (2005-09-02 10:30) [7]В АПИ это SetFilePointer? Покажите пожалуйста пример ее использования. Не могу разобраться с параметрами:(
← →
pathfinder (2005-09-02 11:02) [8]понял свою ошибку)
открываю файл не как текстовый. только вот в выходной файл записывается символ "B" хотя должны быть цифры.. В чем тут дело?
← →
pathfinder (2005-09-02 11:03) [9]вот мой код:
rocedure TForm1.Button1Click(Sender: TObject);
var f1, f2:file of byte;
v1, v2:byte;
begin
if opendialog1.Execute then
assignfile(f1, opendialog1.FileName);
reset(f1);
assignfile(f2, "out.111");
rewrite(f2);
seek(f1, 5);
read(f1, v1);
write(f2, v2);
end;
end.
← →
begin...end © (2005-09-02 13:26) [10]> pathfinder (02.09.05 11:02) [8]
> pathfinder (02.09.05 11:03) [9]
В выходной файл записывается содержимое переменной v2, которой до этого Вы никакое значение не присваиваете.
← →
pathfinder (2005-09-02 13:44) [11]
> begin...end ©
Спасибо вам. Вроде вещь очевидная, а сам не заметил по невнимательности:(
← →
pathfinder (2005-09-02 17:32) [12]Возникла новая дилемма. Как установить указатель на следущую строку с помощью seek или еще как-нибудь? Помогите!:)
← →
begin...end © (2005-09-02 18:05) [13]> pathfinder (02.09.05 17:32) [12]
> Как установить указатель на следущую строку с помощью seek
> или еще как-нибудь?
Читать файл до тех пор, пока не встретится конец строки: cLF, cCR + cLF, cCR + cEOF или cEOF. Читать лучше, конечно, не по одному байту, а в буфер побольше. Вы, по сути дела, хотите реализовать свой ReadLn, поэтому может помочь код процедуры System._ReadLn. Правда, он на ассемблере.
← →
Digitman © (2005-09-02 18:18) [14]а еще лучше, если файл сравнительно невелик, воспользоваться удобным "посредником" - классом TStringList - и не зарабатывать себе геморрой, ибо он вряд ли оправдывает достижение цели.
← →
pathfinder (2005-09-02 18:31) [15]
> Читать файл до тех пор, пока не встретится конец строки:
> cLF, cCR + cLF, cCR + cEOF или cEOF.
а как проверять прочитанный байт на наличие кода конца строки?
> Вы, по сути дела, хотите реализовать свой ReadLn, поэтому
> может помочь код процедуры System._ReadLn. Правда, он на
> ассемблере.
ну да..с ассемблером только к сожалению не дружу..((
> а еще лучше, если файл сравнительно невелик, воспользоваться
> удобным "посредником" - классом TStringList - и не зарабатывать
> себе геморрой, ибо он вряд ли оправдывает достижение цели.
TStringlist тут не актуален, так как необходимо заменять символы в определенных позициях строки, а не целиком строки. Да пожалуй оправдывает, потому что сейчас приходится производить корректировку файла вручную. А строк в файле бывает больше 1000..
← →
begin...end © (2005-09-02 18:35) [16]> pathfinder (02.09.05 18:31) [15]
> TStringlist тут не актуален, так как необходимо заменять
> символы в определенных позициях строки, а не целиком строки.
TStringList позволяет заменять символы в определённых позициях строк.
← →
pathfinder (2005-09-02 18:39) [17]
> begin...end ©
> TStringList позволяет заменять символы в определённых позициях
> строк.
КАК???
← →
begin...end © (2005-09-02 18:49) [18]> pathfinder (02.09.05 18:39) [17]
В примере ниже первый символ третьей строки заменяется на "A":var
S: string;
begin
with TStringList.Create do
try
LoadFromFile("C:\MyFile.txt");
if Count >= 3 then
begin
S := Strings[2];
if Length(S) > 0 then
begin
S[1] := "A";
SaveToFile("C:\MyFile.txt")
end
end
finally
Free
end
end.
← →
pathfinder (2005-09-02 18:55) [19]
> begin...end ©
СПАСИБО!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.017 c