Pomocy!

0

Mam taki kodzik :

for I := 0 to JvxCheckListBox1.Items.Count -1 do
         if JvxCheckListBox1.Checked[Idx]then
char := PAnsiChar(extractfilepath(application.ExeName)+'uharc.EXE'+' l -lg'+extractshortpathname(extractfilepath(application.ExeName))+'zawartosc.txt '+extractshortpathname(JvxCheckListBox1.Items[I]));
WinExec(char,SW_hide);
showmessage('Proszę czekać.');
sleep(2000);
memo1.Lines.LoadFromFile(extractfilepath(application.ExeName)+'zawartosc.txt');

,uruchamia uharc-a z komendą stworzenia pliku textowego z zawartością wybranego archiwum . Pytanie brzmi :

Co zrobić zamiast sleep , przechwycić moment stworzenia pliku , a dopiero wtedy załadować plik do memo

0

mozesz uzyc fileexist (wiecej pod f1), w petli sprawdzaj, jesli bedzie plik to wczytaj.

ps. formatuj kod, znaczniki < delphi >

0

Jestem "zielony" , próbowałem zrobić to o czym pisze wesolyedi , ale mi nie wychodzi . Może coś dokładniej? ;-(

0
for I := 0 to JvxCheckListBox1.Items.Count -1 do
             if JvxCheckListBox1.Checked[Idx]then
char := PAnsiChar(extractfilepath(application.ExeName)+'uharc.EXE'+' l -lg'+extractshortpathname(extractfilepath(application.ExeName))+'zawartosc.txt '+extractshortpathname(JvxCheckListBox1.Items[I]));
WinExec(char,SW_hide);
showmessage('Proszę czekać.');
while FileExists(extractfilepath(application.ExeName)+'zawartosc.txt') = False do Continue;
memo1.Lines.LoadFromFile(extractfilepath(application.ExeName)+'zawartosc.txt'); 
0

tą linijkę z while bym skonstruwał inaczej:

while not FileExists(extractfilepath(application.ExeName)+'zawartosc.txt') do sleep(100);

bez sleepa zjesz kawał mocy procesora, przez co pliki będą się dużo wolniej wypakowywać.

[dopisane]
a jeszcze lepiej by było sprawdzać, czy rozmiar pliku jest większy od 0.

0

Dziękuję wszystkim za pomoc !!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0