Patcher patcht nur teilweise

  • Guten Abend Zusammen,

    ich habe hier einen Patcher am laufen, welcher sich von meinem Webspace Daten ziehen soll.
    Dies klappt auch soweit bei allen Datentypen, bis auf zwei. .eix & .epk.
    Die Dateien wurden zB mit 669KB Dateigröße aufs Webspace geladen und werden mit dem Patcher mit 7KB Dateigröße heruntergeladen.

    Kann ich mir nicht erklären..
    Der Code:

    Wäre echt klasse, wenn dazu jemand eine Idee hat. Bis jetzt ists mir nur bei den zwei Dateitypen aufgefallen.


    Danke !

    Gruß
    Paul01

  • Okey, mach ich.
    Hab noch eine Frage, auch zum selben Programm.
    Ich eröffne mal kein neuen Thread, ich hoff das ist okey?

    Wenn der Patcher patcht, und ich den Patcher schließen möchte indem ich aufs Kreuz rechts oben vom Fenster klickt, ignoriert er es gekonnt.

    Habs mal so versucht:

    AutoIt
    Case $GUI_EVENT_CLOSE
    	_Crypt_Shutdown()
    	Exit

    Leider ohne Erfolg.

  • Patcht du auch was? Weil das ist nur der Fall, wenn er gerade was läd.

  • Also das Problem hab ich nur wenn er gerade was läd.
    Wenn der so offen ist und ich nichts mach, kann ich ihn auch schließen.

    Wenn ich nichts mache: -3
    Mit patchen: Passiert iwie gar nichts, nichtma ne Ausgabe. Also ruft er die Case Abfrage ja nichma auf oder?

  • Mit patchen: Passiert iwie gar nichts, nichtma ne Ausgabe. Also ruft er die Case Abfrage ja nichma auf oder?

    Kanns nich testen wenn ich die hälfte der Dateien nicht habe. Pack doch eine MsgBox bei dem Case für den Patch Button hin.
    Ich glaube es liegt daran das die Hover-Proc die Message frisst und es nicht geschlossen wird.

  • Meinst du so?

    Weil wenn ja, versteh ich den Sinn noch nicht

  • Ich meinte beim Proc, aber da kannst du auch einen hinsetzen. Dann kannst du sehen welche MsgBox aufgerufen wird, eventuell nimmt dir die Proc ja tatsächlich die Message für die Loop weg.
    Du meinst selber das beim Klick auf Patch nichts passiert, warum verstehst du denn dann den Sinn nicht? Du musst ja schauen ob die Funktion überhaupt aufgerufen wird.

  • Hi,

    solange du was Downloadest befindet er sich nicht in der Hauptschleife (151-167), daher kann er natürlich nicht auf das Close Event reagieren.

    Du könntest deine _patch() Funktion durch eine mit AdlibRegister aufgerufene Funktion erstetzen, welche dann deinen Patch in Schritten abarbeitet (welche Datei grade gedownloadet wird usw. müssten dann in Globale oder Static Varriable).

    Du könntest so eine Funktion natürlich auch über die Hauptschleife wiederholt aufrufen.

    Oder du fragst in der Do-Until Schleife nach $GUI_EVENT_CLOSE ab und beendest dein Programm dann darüber.

    Edit:

    Du meinst selber das beim Klick auf Patch nichts passiert

    Ich glaube er meinte das er wärend des Patch vorgangs das Programm nicht schließen kann, dass der Patch Button nicht Funktioniert kann ich eigentlich nicht rauslesen.

    mfg
    Zeitriss

  • Das mit der Do-Until Schleife erscheint mir gerade am einfachsten ist aber denke ich nicht die beste Möglichkeit, was? :D
    Naja ich versuchs mal mit ner Do-Until Schleife. Die muss dann in _patch oder?

    EDIT:

    Ich glaube er meinte das er wärend des Patch vorgangs das Programm nicht schließen kann,

    ^ hab ich aber auch 3 mal geschrieben? :D

    Einmal editiert, zuletzt von Paul01 (17. Februar 2017 um 17:07)

  • Hi,

    Die Do-Until ist schon in der Funktion _Patch() von Zeile 189 bis 196.
    Dort bleibt das Programm wärend des Downloads hängen, somit sollte eine einfache Abbruchbedingung das Problem lösen.

    Denk aber daran dass du _Crypt_Shutdown() aufrufst.
    Und beende den Download und lösche die Datei, vll macht AutoIt letzteres auch Automatisch.
    usw.

    Edit:

    ^ hab ich aber auch 3 mal geschrieben?

    Die letzte Zeile in deinem Beitrag 11 ließ da etwas Spielraum für Interpretationen.

    mfg
    Zeitriss

    2 Mal editiert, zuletzt von Zeitriss (17. Februar 2017 um 17:23)

  • Kann man das so machen?
    Bin noch Anfänger :)

  • Nein, du musst es im Prinzip wie in der Hauptschleife machen, also den Return wert von GUIGetMsg() mit $GUI_EVENT_CLOSE vergleichen.

    Zudem macht das Else keinen Sinn wenn du eh das Programm beendest.

    Dies ist auch etwas umständlich:

    AutoIt
    GUICtrlRead($progr_dateidown) <> $FileProgress

    Das solltest du vielleicht nochmal überdenken.
    Wie sinnvoll ist es deine Daten von deiner eigenen GUI auszulesen?

    Edit: Oh viel zu langsam... ;( (6min)

    mfg
    Zeitriss