Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-69984
Кулюкин Олег
2002-03-12 08:57
2002.04.22
DBAware компоненты - за и против


3-69710
sergiocho
2002-03-31 16:44
2002.04.22
Ограничение размера талблицы Paradox


3-69743
Alexandr
2002-04-02 06:19
2002.04.22
Секретность в IB


7-70046
Dimich
2002-01-25 11:41
2002.04.22
Индикатор текушего шрифта


14-69973
tovSuhov
2002-03-13 11:45
2002.04.22
Настройка принтера под DOS...





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