AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Systemfehler Code 6

Ein Thema von ONeill · begonnen am 21. Jan 2012 · letzter Beitrag vom 21. Jan 2012
Antwort Antwort
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#1

AW: Systemfehler Code 6

  Alt 21. Jan 2012, 15:24
Hallo,

Die adb.exe ist kein Windows Service sondern ein zusätzlicher daemon für die Android ENtwicklung. Man kann den Service nur über das starten der adb.exe starten und auch über das Beenden des Prozeses oder durch den adb kill-server befehl beenden.
Ich beende also den Service ganz normal, wie ich es auch per Hand tun würde.
Ich hatte halt Service eher mit Widowsdienst in Verbindung gebracht.

Er steigt bei der selben stelle nach dem ausführen von "fastboot flash recovery recovery.img" aus.
Ich denke da ist wieder das Problem, das Delphi bei einem Fehler nicht direkt an der Stelle in der Funktion steht bleibt, sonder außerhalb der Funktion. Beim zweiten rüber schauen über Tfmain.RunCaptured, ist mir das aufgefallen
Code:
        CloseHandle(procInfo.hThread);
        CloseHandle(procInfo.hProcess);
        Windows.CloseHandle(tmp);
        { Die Ausgaben hinzufügen }
        if KillProcess(GetProcessID('adb.exe')) = true then
in Verbindung mit dem
Code:
    except
      Windows.CloseHandle(tmp);
      Windows.DeleteFile(PChar(tmpName));
      raise;
    end;
  finally
  end;
end;
Es könnt dazu kommen das Windows.CloseHandle(tmp) zweimal aufgerufen wird. Was Windows beim zweiten Aufruf macht weiß ich jetzt nicht. Aber ich könnte mir denkt das es zu deinem Fehler führt. Mach doch mal einen Haltepunkt nach dem except und schau ob er da vorbei kommt. Wenn du damit auch nicht weiterkommst bleibt dir wohl nichts anderes übrig als mal mit F7 durchzudebuggen.

einbeliebigername.
  Mit Zitat antworten Zitat
ONeill

Registriert seit: 17. Nov 2011
28 Beiträge
 
#2

AW: Systemfehler Code 6

  Alt 21. Jan 2012, 15:36
Das zweite WIndow.CloseHandle(tmp) ist aber in dem Exceptbereich. Wenn ich das richtig in Erinnerung habe, dürften niemals beide Windows.CloseHandle(tmp) ausgeführt werden. Dafür ist es ja da

Dann werde ich wohl mal den Debugger bedienen müssen
Falls noch jemand eine Idee hat, bitte posten
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#3

AW: Systemfehler Code 6

  Alt 21. Jan 2012, 15:50
Hallo,

Das zweite WIndow.CloseHandle(tmp) ist aber in dem Exceptbereich. Wenn ich das richtig in Erinnerung habe, dürften niemals beide Windows.CloseHandle(tmp) ausgeführt werden. Dafür ist es ja da
Das ist aber nur so, wenn zwischen dem ersten CloseHandle und dem except keine Exception ausgelöst wird. Dritt da aber eine auf, wird das Handle zweimal geschlossen.

einbeliebigername.
  Mit Zitat antworten Zitat
ONeill

Registriert seit: 17. Nov 2011
28 Beiträge
 
#4

AW: Systemfehler Code 6

  Alt 21. Jan 2012, 16:09
Dann wäre es doch besser, wenn ich das CloseHandle in die finally abschnitt reinschreibe, oder?
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#5

AW: Systemfehler Code 6

  Alt 21. Jan 2012, 16:59
Hallo,

CloseHandle in die finally abschnitt reinschreibe, oder?
Ich würde auch das löschen der Datei in ein finally verfrachten.

einbeliebigername.
  Mit Zitat antworten Zitat
ONeill

Registriert seit: 17. Nov 2011
28 Beiträge
 
#6

AW: Systemfehler Code 6

  Alt 21. Jan 2012, 19:57
Hallo, ich bins nochmal

Also, ich habe das zweite Window.CloseHandle noch nicht verschoben, aber mir ist nun der Fehler bewusst geworden (natürlich, wie kann es anders sein unter der Dusche ).

Wenn man mal genau hinguckt, wird einem auffallen, das der Fehler bei dem Befehl "fastboot flash recovery recovery.img" auftritt. Wenn man dann noch ein wenig weiter nachguckt (nicht den Befehl vergessen ), wird man feststellen, das ich wie gesagt die adb.exe beende.
Problem dabei wird allerdings, das nicht adb.exe sondern fastboot.exe ausgeführt wurde. Die adb.exe gibt es also (noch) gar nicht und kann deswegen auch nicht beendet werden

Einfach und ergreifende Lösung: Genau, man baut eine Funktion ein, die vor dem Beenden der adb.exe überprüft, ob diese überhaupt als Prozess vorhanden ist. Genommen habe ich die Funktion der Schweizer:
http://www.swissdelphicenter.ch/de/showcode.php?id=2554
Damit klappt es dann einwandfrei

Trotzdem danke für eure/deine Hilfe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz