Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
ВнизПроблема с текстовымми файлами Найти похожие ветки
← →
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 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c