-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
5. Mai 2018
Danke Zacherl, ich glaube ich Verstehe in welche Richtung Du mich bringen magst!
System.Net.HttpClient.THTTPClient.OnReceiveData da könnte/müßte ich glaube ich ansetzen und dann noch gucken wie ich disconnect hinbekomme (ich vermute darauf warst Du aus?).
Wenn ich es wie zuletzt gezeigt in einer Prozedur mit createthread(hier der threadcode).Start aufrufe, ist das dann wie FreeOnTerminate :=...
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
4. Mai 2018
Ok Danke nochmal für die vielen Warnungen, ich hatte eh das falsche hier her kopiert,
if CancelThread then if not Winapi.Windows.TerminateThread(MyThread.Handle, 0) then MyThread.Terminate;
so war es.
Ich habe nun die zweite Code Variante erfolgreich umgesetzt
Hier mein jetziger Code:
procedure TFormMain.GetTHTTPClient ( Const xURL : String );
Var tmp : String;
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
4. Mai 2018
Hallo Fritzew, Danke für Dein Beispiel, das funktioniert bei mir leider nicht so, Whookie gab mir bereits ähnlichen Code.
So sieht jetzt eine Funktion aus:
function TFormMain.GetTHTTPClient ( Const xURL : String ) : String;
var
tmp : String;
MyThread: System.Classes.TThread;
begin
tmp := '';
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
3. Mai 2018
Also ProcessExplorer zeigt mir an das ein seperater Thread gestartet ist, wenn ich auf "Cancel Download" klicke wird "CancelThread := True;" gesetzt und der Thread ist verschwunden, meinst Du der lädt dann trotzdem noch weiter bzw wie könnte ich das unterbinden?
edit
Ok ich kann nun nachvollziehen was Du meinst und habe das Problem so gelöst:
MyThread.Terminate; // das hier (beschreibung...
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
3. Mai 2018
Aber das ist es doch, ich warte bis Handle nicht mehr gefunden wird (WAIT_FAILED)
Wie könnte ich es besser machen?
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
3. Mai 2018
until ((tmp <> '') or (WaitForSingleObject(MyThread.Handle, 5) = WAIT_FAILED));
Das ist die Lösung, auf den String zu achten, super Idee Edelfix. Danke! Nun klappt es exakt so wie ich es wollte, ich kann abbrechen, ich bekomme 'Download aborted.' und Thread schließt sich bzw bei Nicht-Abbruch bekomme ich auch das Ergebnis :thumb::thumb:
edit
Falls jemand mal brauchen sollte, so sieht eine...
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
3. Mai 2018
@NG: Um ehrlich zu sein, ich weiß nicht ob ein Thread das Richtige Mittel ist.
Es nur eine Idee die ich mal ausprobieren wollte um an dieses Ziel zu gelangen:
Behebe bei App "keine Rückmeldung" und biete Option an den Download abzubrechen.
Mal klappt es mal nicht, ich spiele zu viel mit der until Bedingung rum.
Wenn ich wieder die kombination drinnen habe die funktioniert, also das ich...
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
3. Mai 2018
MyThread.FreeOnTerminate := True;
MyThread.Start;
repeat
Application.ProcessMessages;
Sleep(5);
if CancelThread then
begin
ButtonDownload.Enabled := True;
ButtonSaveOriginal.Enabled := False;
ButtonCancelDownload.Enabled := False;
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
2. Mai 2018
Danke NG, jetzt hab ich verstanden was Du mit der Zeit meintest und Erfolgreich umgesetzt.
Falls es jemand Interessiert, hier die Lösung für mein Problem
function TFormMain.GetTHTTPClient ( Const xURL : String ) : String;
var
tmp : String;
MyThread: TThread;
begin
tmp := '';
MyThread := TThread.CreateAnonymousThread(
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
2. Mai 2018
Hier ist der komplette Source im "so ist es gerade in meiner IDE" Zustand.
Whookies Vorschlag ist gerade zum Test drinnen aber ich komme damit noch nicht ganz klar.
Bei mir waren es halt Funktionen weil ich ja das Result abwarten muss.
In Arbeit ist halt gerade "GetTHTTPClient" Funktion/Prozedur, als Prozedur bekomme ich es so noch nicht zum laufen.
unit uMain;
interface
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
2. Mai 2018
while WaitForSingleObject(MyThread.Handle, INFINITE) = WAIT_OBJECT_0 do Application.ProcessMessages;
scheint auch nicht zu helfen.
@Whookie: Ich verstehe zwar wie Du es meinst aber kann es so noch nicht praktikabel umsetzen.
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
2. Mai 2018
Ja Danke für Eure Aussagen,
himitsu hat Recht, es handelt sich um die inet-download Geschichte.
Ich werde mich mal bei den Links von euch durchlesen wie ich es korrekt anstellen sollte.
Es geht mir nicht um parallele Threads, einfach nur ein Thread der arbeitet und wenn er fertig ist mir ein Ergebnis liefert aber solange wie er arbeitet das Programm nicht blockiert wird, und das ganze bei...
-
Forum: Programmieren allgemein
Delphi
by KodeZwerg,
2. Mai 2018
Hallo, im folgenden zeige ich eine Pseudo-Funktion die einen Thread startet, trotzdem friert das Programm ein, ich finde nicht meinen Fehler, fällt jemand auf was ich falsch mache dann bitte Hilfe! :thumb:
Ziel sollte sein den Mainthread zu entlasten aber nach wie vor als eine Funktion zu arbeiten wenn im Hauptcode angesprochen (deswegen repeat schleife)
function TFormMain.Machwas ( Const...