Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.22;
Скачать: 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 вся ветка

Текущий архив: 2002.04.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
3-69744
vasilly
2002-04-01 08:43
2002.04.22
Нельзя сохранить из дельф больше чем 256 символов в MS SQL!!!


7-70034
Андрей Татуков
2002-01-25 17:05
2002.04.22
как определить МОДЕЛЬ МОНИТОРА?


3-69661
Canny
2002-04-02 00:00
2002.04.22
Как подключиться к базе MySQL?


1-69924
Alexander Vasjuk
2002-04-09 19:48
2002.04.22
Как отключить Help по CLX


14-70023
Рамиль
2002-03-17 17:22
2002.04.22
Помогите настроить сеть на Win95/98 для работы с TCP/IP