Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизФайлы Найти похожие ветки
← →
Gaval (2004-03-30 10:59) [0]У меня такая проблема в программе есть две процедуры Одна Производит распаковку архивов, а другая выборку данных из распакованых файлов. После распаковки файлы(dbf) помещаються в папки. Когда пробую выполнить обработку информации процедура не работает до тех пор пока не произведу перезагрузку программы.
процедура распаковки
procedure TfmLoadFiles.dxButton3Click(Sender: TObject);
var
sr:TSearchRec;
res:string;
fn:String;
i:integer;
begin
i:=0;
getdir(0,path);
setCurrentDirectory(PChar(path+"\db\dbf\"));
if FindFirst("*.arj",faanyfile,sr)=0 then
begin
repeat
fn:=copy(SR.Name,1,3);
res:="arj.exe x "+SR.name+" "+path+"\db\dbf\"+fn+"\";
WinExec(PChar(res),SW_HIDE);
Sleep(2500);
DeleteFile(SR.Name);
I:=i+1;
fmMain.ProgressBar1.Position:=i*10;
until FindNext(SR)<>0;
FindClose(SR);
end;
if FindFirst("*.lzh",faanyfile,sr)=0 then
begin
repeat
res:="lha.exe x "+SR.name+" "+path+"\db\dbf\859\";
WinExec(PChar(res),SW_HIDE);
Sleep(2500);
DeleteFile(SR.Name);
I:=i+1;
fmMain.ProgressBar1.Position:=i*10;
until FindNext(SR)<>0;
FindClose(SR);
end;
fmMain.ProgressBar1.Position:=0;
ShowMessage("Загрузка завершена");
fmMain.Close;
end;
Процедура обработки
procedure TfmLoadFiles.LoadFile(T1:TTable;t2:TTable;fn:string);
var
SR:TSearchRec;
FileName:String;
sum:real;
dir:String;
begin
getdir(0,path);
dir:=path+"\db\dbf\"+fn;
if FindFirst(dir+"\"+"*.dbf",faAnyFile,SR)=0 then
begin
repeat
FileName:=Copy(SR.Name,1,4);
if FileName=organ[1] then
begin
t1.Close;
t1.DatabaseName:=dir;
t1.TableName:=SR.Name;
t1.Open;
sum:=StrToFloat(SumTable("SUM_PL",T1));
T2["gaz"]:=sum;
end;
DeleteFile(SR.Name);
until FindNext(SR)<>0;
FindClose(SR);
end;
Close;
end;
procedure TfmLoadFiles.dxButton1Click(Sender: TObject);
begin
fmTake.Table1.Insert;
loadfile(Table1,fmTake.Table1,banks[1]);
fmTake.Table1.Post;
end;
← →
Семен Сорокин © (2004-03-30 11:15) [1]а под отладчиком пройтись пробовал?
← →
Gaval (2004-03-30 11:20) [2]пробовал работает только после перезагрузки программы
← →
KapitanSerg © (2004-03-30 11:49) [3]Рекомендую поискать в Нете библитотеку "ZipLib". В ней распаковка файлов (любых) реализована на уровне классов. У меня алгоритм такой: в потоке создается временная Dir в Temp в которую разархивируется Zip-архив; затем производится поиск файлов, при необходимости загрузка в прогу; затем Dir уничтожается вместе с содержимым.
← →
Семен Сорокин © (2004-03-30 11:53) [4]В корне неверно следующее, где гарантия, что распакуется за 2,5 секунды?
WinExec(PChar(res),SW_HIDE);
Sleep(2500);
используй CreateProcess + WaitForSingleObject
← →
KapitanSerg © (2004-03-30 12:01) [5]PS Могу сбросить библиотеку на мыло.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c