Autor Beitrag
tr3bor
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 19



BeitragVerfasst: Fr 29.12.06 17:57 
Hallo,
in meinem Programm benutze ich die ICQClient Komponente. Wenn ich mich connected habe und ich das Programm dann schließen will oder ich den befehl zum disconnecten gebe, kommt eine Fehlermeldung (hier schon ein anderer Post zu dem thema:www.delphi-forum.de/...nt+LogOff_67779.html). Ich möchte jetzt nur wissen wie ich diese Fehlermedlung Unterdrücken kann.

DANKE
max120b
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

WinXP, Linux 9.0
Delphi 2005 Professional
BeitragVerfasst: Fr 29.12.06 17:59 
Was gibts denn für nen Fehler? Vielleicht brauchst du den ja gar nicht zu unterdrücken, sondern er lösst sich beheben (is immer die bessere Lösung ;) ).

Aber ich hab sowas schonmal gemacht...ich such mal eben den code dazu raus
tr3bor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 19



BeitragVerfasst: Fr 29.12.06 18:02 
Deswegen hatte ich das alte Thema hinzugefügt ;)

aber hier nochmal:
ausblenden Quelltext
1:
2:
Im Projekt project2.exe ist eine Exception der Klasse EThread aufgetreten. Meldung: 'Thread-Fehler: Das Handle ist ungültig(6)'.
Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzten.


und in dem alten Thema konnte mir niemand helfen den Fehler zu beheheben. Und da der mich nicht weiter stört würde das reichen auch wenn es natürlich eleganter wäre den Fehler zu beheben.
max120b
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33

WinXP, Linux 9.0
Delphi 2005 Professional
BeitragVerfasst: Fr 29.12.06 18:03 
Hmm also spontan hab ich jetzt nur sowas hier anzubieten

ausblenden Quelltext
1:
2:
3:
4:
5:
  try
    //Hier kommt der Code hin
  except
    //Das hier soll gemacht werden, wenn ein Fehler auftritt
  end;



Damit kannst du die Fehler zwar nicht unterdrücken, aber du kannst sie abfangen und darauf reagieren...vielleicht hilft das ja schon weiter
tr3bor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 19



BeitragVerfasst: Fr 29.12.06 18:06 
Ja das problem dabei ist ja das ich kein Code ausführe der den Fehler verursacht. Der Fehler tritt beim beenden des Programms auf. und wenn ich die Disconnect funktion in die try except sache mache wird er sich ja einfach nur nicht disconnecten und beim beenden des Programms kommt wieder der Fehler
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 30.12.06 20:03 
user profile icontr3bor hat folgendes geschrieben:
Und da der mich nicht weiter stört würde das reichen auch wenn es natürlich eleganter wäre den Fehler zu beheben.

Du setzt eine ApplicationEvents-Komponente auf dein Formular, doppelklickst im OI auf Ereignisse/OnException und fügst einfach ein ; dort ein:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
begin
 ;
end;

Das sorgt dafür, dass im Falle einer Fehlers "nichts" (-> ; ) getan wird. Allerdings fängt das jeden Fehler ab und du erhältst auch keine anderen Fehlermeldungen mehr.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
C.Schoch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

WinXp
Turbo Dephi Win 32
BeitragVerfasst: So 31.12.06 01:15 
Das hört sich aber eher dannach, dass irgendein Thread nicht richtig beendet/freigegeben wurde oder du versuchst einen bereits beendeten Thread nochmals zu beenden.

_________________
Das System hofft auf Besserung
[Siemens]
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 31.12.06 10:08 
was willst du denn mit dem ungültigen handle anstellen? nimm doch einfach ein gültiges ;-)

denke, diese fehlermeldung sollte man nicht unterdrücken, sondern deinen code korrigieren, damit er vernünftig funktioniert... sonst machst du nur speicherlöcher oder noch schlimmeres...
tr3bor Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 19



BeitragVerfasst: Di 02.01.07 00:04 
also das mit der application events exception hat nicht geklappt.

Und weiter weiß ich nicht wo ich auswählen kann welches Handle ich benutzte oder ob ich das schon beendet habe. Um den Fehler beheben zu können müsste ich an den Quellcode von der Funktion rankommen, da weiß ich aber nicht wie das geht.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 02.01.07 00:09 
Der Thread wird beendet (Thread-Handle ist also ungültig). Danach wird versucht, mit diesem Handle etwas zu machen. Das klappt nicht.

Also

1. Fehler finden.
2. Wenn 1 nicht funktioniert, weiter suchen.
3. Goto 2
4. goto 3
...

...
978. Verwende einen Sentinel:

Der 'Sentinel' ist ein kleines unsichtbares Programm, das auf eine Message 'WM_KILLME = WM_USER + 1234' wartet. Der lparam der Message ist das Applikationshandle der Anwendung, die abgeschossen werden soll. Der Sentinel schießt dann die Anwendung ab.

Die Anwendung, die nicht korrekt terminieren will, schickt im 'OnClose' diese Message raus und sezt 'Action' auf caHide: Der finalization-Code wird nicht ausgeführt, die Software abgeschossen, der Anwender ist zufrieden.

Ok, Dateien werden u.U. nicht geschlossen, Datenbanken (Paradox!!) nicht korrekt geschlossen und das Ganze ist eine 100% bescheuerte Lösung, aber sie funktioniert.

_________________
Na denn, dann. Bis dann, denn.