![]() |
try...except problem
Hi
ich hab folgendes problem: ich nutze eine komponente um bestimmte devices zu suchen, die hat jedoch keine funktion um zu sagen ist das device da oder nicht, drum will ich das über try except machen. Ist das Devicer (oder mehrere) da, so werden sie einer liste hinzugefügt, ist es nicht da soll ein error kommen...ich habe das so gemacht:
Delphi-Quellcode:
Ohne das try except würde kommen: List index out of bounds (-1), das sollte ja nun nicht mehr kommen...das problem: es kommt trotzdem...und das except wird NICHT ausgeführt...
try
joy := TGamePad.Create(0); for i := 0 to GamePadCount - 1 do begin joy.ID := i; cbpads.Items.Add(joy.InstanceName); end; except showmessage('No Joystick/Gamepad found'); end; was kann ich tun? MfG Hybrid666 |
Re: try...except problem
Kann es sein, daß es sein, daß
Delphi-Quellcode:
heißen müßte?
joy := TGamePad.Create(Nil);
Wo Testet es du es in der IDE oder außerhalb? (In der IDE wird Exception trotzdem ausgelöst) |
Re: try...except problem
Zitat:
|
Re: try...except problem
Hast du in den Debugger-Optionen die Sprach-Exceptions auch ausgeschalten? Denn sonst meldet Delphi das weiterhin.
Teste es doch mal, deine Anwendung aus dem Explorer heraus zu starten und sage uns dann, was du dort siehst. Kommt auch die Access-Violation, dann liegt's am Code, kommt deine Meldung, dann stelle in den Optionen um, dass dich Delphi selbst nicht benachrichtigen soll. Edit: Tools - Debugger-Optionen - Sprach Exceptions: Haken weg bei "bei Delphi-Exceptions stoppen" |
Re: try...except problem
Zitat:
|
Re: try...except problem
Versuch mal
Delphi-Quellcode:
except
on Exception do showmessage('No Joystick/Gamepad found'); ... |
Re: try...except problem
Benutzt Du diese Unit ->
![]() Dann bringt TGamePad.create keine Exception wenn kein GamePort da ist. Das Objekt wird einfach erstellt. Du müsstest dann die DeviceNr abfragen, wenn die 0 ist, sit kein GamePort da. Wenn es eine andere Unit sein sollte, post sie doch bitte mal. Ansonsten kannst Du Deinen Code auch so ändern, das Du abfragst ob etwas in der Liste ist:
Delphi-Quellcode:
Grüße
joy := TGamePad.Create(0);
if GamePadCount > 0 then for i := 0 to GamePadCount - 1 do begin joy.ID := i; cbpads.Items.Add(joy.InstanceName); end else showmessage('No Joystick/Gamepad found'); Klaus |
Re: try...except problem
Zitat:
|
Re: try...except problem
Ich kenne die Komponente leider nicht aber was ich mich gefragt hab ist wo GamePadCount herkommt? Ist das ein von Dir definierter Wert oder müsste es nicht eher joy.GamePadCount heissen?
Ansonsten vielleicht so:
Delphi-Quellcode:
cbpads.clear;
for i := 0 to GamePadCount - 1 do try joy.ID := i; cbpads.Items.Add(joy.InstanceName); except end; if cbPads.Items.count = 0 then Showmessage('Kein Joystick bla bla'); |
Re: try...except problem
Wenn hier ständig behauptet wird, dass der Except Teil nicht durchlaufen wird und immer trotzdem die EBoundsError Exception ausgelöst wird, dann würde ich hier ganz frech behaupten: Die Exception wird nicht in dem hier gezeigten Codestück ausgelöst sondern an einer anderen Stelle in der App. Also überprüfe z.B. mal ein mögliches OnChange Event der ListBox oder sonstige Events, wo der Index beim Zugriff auf Listenelemente zu gross sein könnte/ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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-2025 by Thomas Breitkreuz