Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Вниз

Удаление файла   Найти похожие ветки 

 
Не молодой   (2005-12-02 15:48) [0]

Подскажите, что нужно сделать, чтобы можно было удалитть временный файл 1.txt после
Var OutStream: TMemoryStream;
...
OutStream.SaveToFile("1.txt");

....
OutStream.Destroy;
...
AssignFile(Ft, "1.txt");
Reset(Ft);
CloseFile(Ft);
Erase(Ft);

....
Получаю ошибку ввода/вывода IO Error 32.
что еще необходимо освободить (файл занят)?


 
Tonich ©   (2005-12-02 16:03) [1]

DeleteFile() модуль Sysutils


 
gdaujk ©   (2005-12-03 01:14) [2]

>Не молодой   (02.12.05 15:48)

>Получаю ошибку ввода/вывода IO Error 32.

А я почему-то не получаю. Что у тебя вместо "..."? Зачем:

Reset(Ft);
CloseFile(Ft);


, если можно просто:

AssignFile(Ft, "1.txt");
Erase(Ft);


, а лучше [1].

>Tonich ©   (02.12.05 16:03) [1]

>модуль Sysutils

Можно и не SysUtils, а Windows.


 
Не молодой   (2005-12-03 12:10) [3]

Спасибо, собственно, подходит и [1] и [2], только при [1] - возвращает False,
а при [2] - IO Error 32.
Как (чем) освободить файл после OutStream.SaveToFile("1.txt"); ?


 
gdaujk ©   (2005-12-03 14:30) [4]

Не молодой   (03.12.05 12:10) [3]

Приведи конкретный код. У меня ни в одной из ситуаций ошибки не выскакивает.

Как (чем) освободить файл после OutStream.SaveToFile("1.txt");

SaveToFile заключается в конечном счёте в вызове 3-х WinAPI-функций:

CreateFile    (создание файла)
WriteFile     (запись файла)
CloseHandle   (закрытие файла)


т. е. файл в конечном итоге освобождается.


 
Не молодой   (2005-12-03 14:54) [5]

gdaujk ©   (03.12.05 14:30) [4]

InStream := TFileStream.Create("0.txt", fmOpenRead);
OutStream := TMemoryStream.Create;
Repeat
 InStream.ReadBuffer(Xcurr, SizeOf(Xcurr));
 Case RC of
  1:Ycurr:= C;
  2:Ycurr:= D;
 end;
 OutStream.WriteBuffer(Ycurr, SizeOf(Ycurr));
 Xprev:= Xcurr; Yprev:= Ycurr; Aprev:= Acurr; Bprev:= Bcurr;
Until InStream.Position = InStream.Size;
OutStream.SaveToFile("1.txt");
OutStream.Destroy;
InStream.Destroy;
Bool:= DeleteFile(Stemp);

Получаю Bopl:= False (да и файл на диске остается)


 
Не молодой   (2005-12-03 14:58) [6]

Case RC of
 1:Ycurr:= Xcurr+C;
 2:Ycurr:= Xcurr+D;
end;


 
Anatoly Podgoretsky ©   (2005-12-03 15:30) [7]

Не молодой   (03.12.05 14:54) [5]
Видимо файл Stemp занят, ты его сначала закрой.


 
Zeqfreed ©   (2005-12-03 15:32) [8]

Не молодой   (03.12.05 14:54) [5]
Вместо Destroy лучше использовать Free.


 
gdaujk ©   (2005-12-03 16:23) [9]

>Zeqfreed ©   (03.12.05 15:32) [8]

>Вместо Destroy лучше использовать Free.

Точно, а то вдруг один из стримов будет nil :-)

Не молодой   (03.12.05 14:54) [5]

Следующий код у меня работает без сбоев:

procedure TForm1.Button2Click(Sender: TObject);
const
 TempFile = "1.txt";
 C = 1;
 D =2;
var
 InStream: TFileStream;
 OutStream: TMemoryStream;
 Xcurr, Ycurr, Xprev, Yprev, Aprev, Acurr, Bprev, Bcurr: Longword;
 RC: Integer;
 FileDeleted: Boolean;
begin
 InStream := TFileStream.Create("0.txt", fmOpenRead);
 OutStream := TMemoryStream.Create;
 Repeat
   InStream.ReadBuffer(Xcurr, SizeOf(Xcurr));
   //!!!если размер файла "0.txt" не кратен SizeOf(Xcurr), то здесь вылетает ошибка!!!
   Case RC of
     1:Ycurr:= C;
     2:Ycurr:= D;
   end;
   OutStream.WriteBuffer(Ycurr, SizeOf(Ycurr));
   Xprev:= Xcurr; Yprev:= Ycurr; Aprev:= Acurr; Bprev:= Bcurr;
 Until InStream.Position = InStream.Size;
 OutStream.SaveToFile(TempFile);  //(1)
 OutStream.Destroy;
 InStream.Destroy;
 FileDeleted:= DeleteFile(TempFile);   //(2) лучше заменить Bool на FileDeleted
end;


В OutStream.SaveToFile(...) и DeleteFile(...) (строки, помеченные  (1) и (2)) указывай одинаковый файл.

PS: обрати внимание на пометки...



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

Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.015 c
14-1133126705
ПЕС
2005-11-28 00:25
2005.12.18
Подскажите компонент


2-1133278046
Катерина
2005-11-29 18:27
2005.12.18
Работа с Canvas.


2-1132726445
AndreyAR
2005-11-23 09:14
2005.12.18
Не виден сервер


14-1132247011
Shluz
2005-11-17 20:03
2005.12.18
Проблема с локальной сетью в XP


14-1132353545
lookin
2005-11-19 01:39
2005.12.18
Skype никто не хочет воспользоваться?





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