Entwickler-Ecke

Internet / Netzwerk - Form bleibt bis download beendet gleich


Xearox - Mo 11.01.10 07:40
Titel: Form bleibt bis download beendet gleich
so folgendes...

Ich habe eine Unit zum Downloaden angelegt.
Soweit ja alles okay, Dateien werden downgeloadet, alles kein Thema...
Aber...

Ich habe 3 Panels(für 3 Dateien) angelegt, nun ist das Problem, das die Panels nicht Aktuallisiert werden.
Der Code dazu lautet(hab da was bei google gefunden, geht aber irgendwie nicht):


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
    
IdFTP1.Get('EEExtractor.exe', (ExtractFilePath(ParamStr(0)) + 'EEExtractor.exe'), true);
Panel1.Color:=clgreen;
Panel1.Caption:=('Fertig');
Form2.update;
IdFTP1.Get('Launcher.exe', (ExtractFilePath(ParamStr(0)) + 'Launcher.exe'), true);
Panel2.Color:=clgreen;
Panel2.Caption:=('Fertig');
Form2.update;
IdFTP1.Get('Updater.exe', (ExtractFilePath(ParamStr(0)) + 'Updater.exe'), true);
Panel3.Color:=clgreen;
Panel3.Caption:=('Fertig');
Form2.update;



Hat hier jemand eine Lösung?


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 11.01.2010 um 10:26


platzwart - Mo 11.01.10 10:55

Versuchs mal mit Form2.Refresh; Ansonsten: ist es wirklich die Form2 ?


Narses - Mo 11.01.10 11:27

Moin!

Das Verhalten ist völlig normal, da die Indy-Kompos mit blocking-socket-calls arbeiten. Du musst die Downloads in einen Thread auslagern (gibt zwar noch diese IdAntifreeze Frickelei, aber das ist Müll). :idea: ;)

cu
Narses


Bergmann89 - Mo 11.01.10 13:46

Hey,

ich hatte das gleich Problem mit TIdHTTP und hab mir dazu DAS [http://www.delphi-forum.de/viewtopic.php?p=590637#590637] geschrieben. Das sollte dir weiter helfen...

MfG Bergmann.


Xearox - Di 12.01.10 05:53

user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
    
IdFTP1.Get('EEExtractor.exe', (ExtractFilePath(ParamStr(0)) + 'EEExtractor.exe'), true);
Panel1.Color:=clgreen;
Panel1.Caption:=('Fertig');
Form2.update;
IdFTP1.Get('Launcher.exe', (ExtractFilePath(ParamStr(0)) + 'Launcher.exe'), true);
Panel2.Color:=clgreen;
Panel2.Caption:=('Fertig');
Form2.update;
IdFTP1.Get('Updater.exe', (ExtractFilePath(ParamStr(0)) + 'Updater.exe'), true);
Panel3.Color:=clgreen;
Panel3.Caption:=('Fertig');
Form2.update;



so, die lösung war eine einfache Sache, einfach Panel1.update, panel2.update, und Panel3.Update ändern...
so einfach...
Hab 2 Tage jetzt dran gesessen, und die lösung war so einfach :(


Narses - Di 12.01.10 11:28

Moin!

user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
so, die lösung war eine einfache Sache, einfach Panel1.update, panel2.update, und Panel3.Update ändern...
so einfach...
Hab 2 Tage jetzt dran gesessen, und die lösung war so einfach :(
Nein, das ist keine "Lösung", bestenfalls ein Workaround, und zwar ein schlechter. Versuch doch mal während des Downloads das Fenster zu verschieben... :roll:

cu
Narses


Bergmann89 - Di 12.01.10 17:21

Hey,

da geb ich Narses recht, die einzige sinnvolle Lösung ist hier n Thread. Man muss sich kurz rein fitzen aber am ende is es eigentlich ganz easy. Ich habs auch erst mit haufen Updates und ProgressMessages probiert aber es hat nie so richtig funktioniert!

MfG Bergmann


Xearox - Di 12.01.10 18:30

ich kann, während ich auf den Download Button klicke, nichts machen, sobald ich in das fenster rein Klicke, steht oben, keine Rückmeldung...
Also es geht garnichts...und dann kommt das Fenster von Windows, Auf Prgramm warten oder Programm schließen...


elundril - Di 12.01.10 18:38

genau deswegen sollst du es auch in einen Thread packen ;)

lg elundril


Xearox - Di 12.01.10 19:26

und wie mache ich das?


Bergmann89 - Di 12.01.10 19:53

user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
Hey,

ich hatte das gleich Problem mit TIdHTTP und hab mir dazu DAS [http://www.delphi-forum.de/viewtopic.php?p=590637#590637] geschrieben. Das sollte dir weiter helfen...

MfG Bergmann.