Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Файлы   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
3-1079995500
SunVit
2004-03-23 01:45
2004.04.18
oracle


8-1066990862
TRyaSS
2003-10-24 14:21
2004.04.18
3-d в Delphi(OpenGL , Direct X)


7-1076228238
Ермак
2004-02-08 11:17
2004.04.18
Взаимодействие с сервисом


1-1080811748
KapitanSerg
2004-04-01 13:29
2004.04.18
Конвертация RTF => TXT


14-1080029055
Alexander666
2004-03-23 11:04
2004.04.18
NTFS