![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление временных dbf-файлов [D5, dBase, FoxPro, Paradox]
Tumcoat © (2003-10-16 04:39:00)
Всем здрасьте.
Понимаю, вопрос возможно ламерский, но никак не могу найти, как програмно удалять временные dbf-файлы?
Заранее спасиба.
Tumcoat (2003-10-17 02:30:00) [1]
Ладно, всем спасибо.
Anatoly Podgoretsky (2003-10-16 12:20:00) [2]
Только желательно эту операцию сделать еще раньше, прямо в dpr файле, еще до создания файлов.
Другим дешевым вариантом, если человек почти не умеет программировать является создание простого .bat файда, где сначала удаляется иерархия временных папок, затем запускается приложение. Просто и сердито и знаний не требует, только начальные.
grusty (2003-10-16 12:05:00) [3]
Anatoly Podgoretsky абсолютно прав и хочу немного дополнить:
...
uses FileCtrl;
...
procedure TForm1.FormCreate(Sender: TObject);
var
path: String;
begin
...
path:=ExtractFilePath(ParamStr(0));
if not DirectoryExists(path+"Temp") then CreateDir(path+"Temp") else DeleteAllFiles(path+"Temp");
Session.PrivateDir:=path+"Temp";
...
end;
Процедура удаления временных файлов может выглядеть, например, следующим образом:
procedure TMainForm.DeleteAllFiles(StartDir: String);
var
OpStruc: TSHFileOpStruct;
frombuf: array [0..128] of Char;
begin
FillChar(frombuf, Sizeof(frombuf), 0);
StrPCopy(frombuf, StartDir+"\*.*");
with OpStruc do begin
Wnd:= Handle;
wFunc:=FO_DELETE;
pFrom:=@frombuf;
pTo:=nil;
fFlags:=FOF_NOCONFIRMATION;
fAnyOperationsAborted:=False;
hNameMappings:=nil;
lpszProgressTitle:=nil;
end;
ShFileOperation(OpStruc);
end;
Перед ее вызовом желательно проверить наличие этих файлов...
Anatoly Podgoretsky (2003-10-16 10:34:00) [4]
Tumcoat © (16.10.03 09:49) [7]
Это не ошибки пользователя, а твои и самая грубая из них, то что ты созджаешь их в папке с базой, создавать нужно в отдельной, специально созданной папке, а ее удалять при старте программы.
Danilka (2003-10-16 09:54:00) [5]
[7] Tumcoat © (16.10.03 09:49)
а штатные средства не подходят?
deletefile + F1
Tumcoat (2003-10-16 09:49:00) [6]
Я не настолько мастер, чтоб учесть все возможные ошибки юзера и исправить их. Так что сбои будут, а значит будут и не удаленные временные файлы. А значит их надо удалять. А вот как это сделать программно я не знаю, даже не представляю с чего начать. Так что сорри, но хотелось бы получить ответ на этот вопрос.
Ильш (2003-10-16 09:23:00) [7]
А вообще почему возникают сбои? Их по сути должно быть мало. Продумать надо.
Можно попытаться удалить эти файлы прогнав в цикле имена файлов и, если таковые есть, поудалять. Ведь не так много получается их.
А еще может быть есть возможность настройки BDE, чтоб эти временные создавались в системной Temp папке. Тогда уж на них можно забить и забыть :)
Tumcoat (2003-10-16 08:37:00) [8]
> gek © (16.10.03 07:42) [3]
> Сами удаляются если все нормально работает
Вот именно, что если нормально работает.
А что делать если пошел сбой. Я-то конечно могу их удалить и ручками, а что делать с пользователем, который с компутером недавно познакомился. Ведь кол-во файлов растет с каждым сбоем.
Kurmanbek (2003-10-16 07:54:00) [9]
При выходе из программы Query1.Free или Table1.Free
gek (2003-10-16 07:42:00) [10]
Сами удаляются если все нормально работает
Tumcoat (2003-10-16 07:29:00) [11]
Стандартные временные файлы dbase-а, формат: _qsql*.dbf, где вместо * трехзначный номер. Появляются во время работы программы.
Ильш (2003-10-16 06:13:00) [12]
Что за такие "временные" dbf-файлы??? Это ваше изобретение? Поконкретнее пожалуйста.