Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi try...except problem (https://www.delphipraxis.net/84061-try-except-problem.html)

Hybrid666 10. Jan 2007 19:14


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:
  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;
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...

was kann ich tun?

MfG Hybrid666

mkinzler 10. Jan 2007 19:20

Re: try...except problem
 
Kann es sein, daß es sein, daß
Delphi-Quellcode:
joy := TGamePad.Create(Nil);
heißen müßte?
Wo Testet es du es in der IDE oder außerhalb? (In der IDE wird Exception trotzdem ausgelöst)

Hybrid666 10. Jan 2007 19:25

Re: try...except problem
 
Zitat:

Zitat von mkinzler
Kann es sein, daß es sein, daß
Delphi-Quellcode:
joy := TGamePad.Create(Nil);
heißen müßte?
Wo Testet es du es in der IDE oder außerhalb? (In der IDE wird Exception trotzdem ausgelöst)

Also ja ich teste es in der IDE, mein problem hab ich aber glaub wohl unverständlich daargestellt, das problem ist das except in GARKEINEM fall ausgelöst ist, weder wenn das device da ist oder nicht...und das 0 ist die device ID, also der erste angeschlossene joystick ;)

Matze 10. Jan 2007 19:34

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"

Hybrid666 10. Jan 2007 19:38

Re: try...except problem
 
Zitat:

Zitat von Matze
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"

hab ich schon probiert ausm explorer raus, da kommt der fehler der nicht kommen sollte (list index out of bounds)

mkinzler 10. Jan 2007 19:40

Re: try...except problem
 
Versuch mal
Delphi-Quellcode:
except
    on Exception do
    showmessage('No Joystick/Gamepad found');
...

Klaus01 10. Jan 2007 19:45

Re: try...except problem
 
Benutzt Du diese Unit -> http://www.delphipraxis.net/internal...ct.php?t=85712
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:
    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');
Grüße
Klaus

Hybrid666 10. Jan 2007 19:45

Re: try...except problem
 
Zitat:

Zitat von mkinzler
Versuch mal
Delphi-Quellcode:
except
    on Exception do
    showmessage('No Joystick/Gamepad found');
...

wird immernoch nur der try teil abgewarbeitet, das iss so wie wenn kein try dastehen würde...

paritycheck 10. Jan 2007 20:14

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');

Muetze1 10. Jan 2007 21:00

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 00:01 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz