Главная страница
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.04 c
8-1073328665
Ilya
2004-01-05 21:51
2004.04.18
Аналог процедуры Sound в Delphi


14-1080312361
Soft
2004-03-26 17:46
2004.04.18
Украинский хакер вылетает в США.


3-1079700045
Olivka
2004-03-19 15:40
2004.04.18
Помогите с FIB, редактирование данных в гриде


3-1079610906
ikondakov
2004-03-18 14:55
2004.04.18
Частичная автоматизация.


14-1080563280
Loki
2004-03-29 16:28
2004.04.18
Опять про Linux