Вниз
Скачать: CL | DM;

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

← →
DeMoN-777   (2002-04-09 00:43) [0]

Проблема вот в чём....
Мне надо считать данные с файла и записать их в другой.
Делаю следующее....

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
x, c : textfile;
z : string;
begin
assignfile(c, ExtractFilePath(Application.ExeName)+"cfg.txt");
assignfile(x, "c:\mustdie\wincmd.ini");
rewrite(c);
reset(x);
while not eof(x) do
begin
readln(x,z);
writeln(c,z);
end;
end;
Всё-бы хороошо только последние 7 строчек файла нивкакую не хочет
записывать. Я проверял на лэйбле, он всё считывает, а вот последние 7
строчек записывать не хочет =(.
В чём-же дело ???


← →
Вася Пупкин ©   (2002-04-09 01:12) [1]

А файл закрывать Пушкин должен ?


← →
Anatoly Podgoretsky ©   (2002-04-09 01:13) [2]

У тебя наверно недопустимые символа в файле, попробуй так

Procedure FileCopy(Const src, dst: String );
Var
S,T: TFileStream;
Begin
S := TFileStream.Create(src, fmOpenRead );
try
T := TFileStream.Create(dst, fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
End;


← →
Вася Пупкин ©   (2002-04-09 01:14) [3]

2Anatoly Podgoretsky © (09.04.02 01:13)Не... он просто CloseFile не сделал ;)


← →
DeMoN-777 ©   (2002-04-09 01:16) [4]

Anatoly Podgoretsky
Спасибо большое всё фунциклирует.
Но в том-то коде какая ошибка ???
Файл закрывается по onclosequery.


← →
DeMoN-777 ©   (2002-04-09 01:26) [5]

Вася ты был прав !
Вот этот код работает.

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
x,c : textfile;
z : string;
begin
assignfile(c, ExtractFilePath(Application.ExeName)+"cfg.cfg");
assignfile(x, "c:\mustdie\wincmd.txt");
rewrite(c);
reset(x);
while not EOF(x) do
begin
readln(x,z);
writeln(c,z);
end;
closefile(c);
closefile(x);
end;

Вопрос закрыт, всем спасибо


← →
Вася Пупкин ©   (2002-04-09 01:26) [6]

>Файл закрывается по onclosequery.
По Вашему коду - не вижу, чтоб закрывался (у Вас x, c : textfile; - локальные ) :)

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
x, c : textfile;
z : string;
begin
assignfile(c, ExtractFilePath(Application.ExeName)+"cfg.txt");
assignfile(x, "c:\mustdie\wincmd.ini");
rewrite(c);
reset(x);
while not eof(x) do
begin
readln(x,z);
writeln(c,z);
Label1.Caption:=z;
end;
CloseFile(x);
CloseFile(c);
end;


← →
Вася Пупкин ©   (2002-04-09 01:27) [7]

DeMoN-777 © (09.04.02 01:26)
Вася Пупкин © (09.04.02 01:26)

Синхронное плавание :))))))


← →
DeMoN-777 ©   (2002-04-09 01:28) [8]

=)


← →
Rooman ©   (2002-04-09 08:42) [9]

Хоть там файлы - локальные переменные, файлы все равно закрываются самой ОС при закрытии приложения! Но это не суть, конечно, нужно их закрывать всегда по окончания использования.


← →
Anatoly Podgoretsky ©   (2002-04-09 11:18) [10]

DeMoN-777 © (09.04.02 01:16)
Нет закрытия файлов, но это уже сказали
По OnCloseQuery он закрываться не может, они у тебя локальные

Rooman © (09.04.02 08:42)
Не обязательно, но сообственно не важно, даже если закрываются то в каком соостоянии решит система.

Вместо приведенного мною кода, проще использовать функцию copyfile, но в Д1 ее нет


← →
Flx   (2002-04-09 13:31) [11]

Не буду утверждать, но по-моему, у Дельфей для текстовых файлов есть свой 128-байтный буфер. Остатки в нем обычно и теряют. ОС то пишет, что ей передали, а получается что не все (см. размер обрезанного файла - он кратен 128-ми).


← →
Song ©   (2002-04-09 14:03) [12]

2Flx (09.04.02 13:31)
Для этого есть процедура Flush();



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
6-69937
Ivanroot
2002-02-04 06:39
2002.04.22
подсчет трафика


3-69677
tovSuhov
2002-03-29 14:36
2002.04.22
Люди, ну не оставляйте в беде...


14-70020
ASM
2002-03-16 01:01
2002.04.22
Профессианальная Помощь нужна!


1-69877
Еще один Новичок
2002-04-09 11:24
2002.04.22
Pos() для двоичных данных


1-69882
koks
2002-04-05 15:26
2002.04.22
Подскажите, где можно найти хорошие коллекции битмапов...




   Наверх