Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление временных 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-файлы??? Это ваше изобретение? Поконкретнее пожалуйста.


Наверх

Титульная страница Поиск, карта сайта Написать письмо