AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Verständnisfrage zu try-except-finally

Verständnisfrage zu try-except-finally

Ein Thema von BAMatze · begonnen am 29. Apr 2009 · letzter Beitrag vom 29. Apr 2009
 
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

Verständnisfrage zu try-except-finally

  Alt 29. Apr 2009, 13:22
Hallo an alle DPler,

Hab eine Frage zu try-except-finally. Also ich habe schon sehr erfolgreich try-except-Abfragen in meinem Projekt eingebaut und alles lief wunderbar. Hier mal ein kleines Beispiel:

Delphi-Quellcode:
function TControlerBoard.anaAusgang_einschalten: boolean;
begin
  try
    if sKameraposition = 'obenthen
      begin
        OutputAnalogChannel(1,Diodenhelligkeit[1]);
        anaAusgang_ausschalten(2);
      end
    else
      begin
        OutputAnalogChannel(2,Diodenhelligkeit[2]);
        anaAusgang_ausschalten(1);
      end;
    result := true
  except
    // Fehlermeldung
    result := false;
  end;
end;

function TControlerBoard.anaAusgang_ausschalten(iNummer: Integer): boolean;
begin
  try
    ClearAnalogChannel(iNummer);
    result := true
  except
    // Fehlermeldung
    result := false;
  end;
end;

function TControlerBoard.alle_anaAusgeange_ausschalten;
begin
  try
    ClearAllAnalog;
    result := true
  except
    // Fehlermeldung
    result := false;
  end;
end;
Sind ein paar Funktionen für ein Controler-Board und wie gesagt, bin sehr zufrieden damit. Jetzt versuche ich in meiner Komponente ebenfalls eine try-except-Abfrage zu machen und bekomme trotz das ich den eigentlichen Fehlerpunkt damit "umschließe" immer eine Fehlermeldung und ich weiß einfach nicht, warum dies der Fall ist.

Hier meine derzeitige Routine an der ich arbeite.
Delphi-Quellcode:
procedure TContainer.Beschleunigungmanuellverlassen(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var Index: integer;
    dWert: double;
begin
  if Key = 13 then
    begin
      try
        dWert := strtofloat(FEdmanuelleBeschleunigungsEingabe.Text) // <-- Hier tritt der Fehler auf
      except
        Showmessage('Hier');
      end;
    end;
end;
Hab die Stelle markiert, wo der Fehler auftreten kann. Eigentlich, so aus meinem Verständnis heraus, sollte das Programm, wenn dWert nicht eine Gleitkomma-Zahl übergeben wird in die Except-Fkt springen und mir somit ein "Hier" ausgeben. Er meldet mir aber, dass in dem Edit (FEdmanuelleBeschleunigungsEingabe) dies nicht der Fall ist (es steht dort wirklich keine Gleitkomma drin!) was also richtig ist. Wie gesagt, eigentlich erwarte ich eigentlich, dass die Exception nicht auftritt und er mir statt dessen Die Showmessage zeigen sollte.
Kann mir das jemand mal erklären, warum dies in dem Fall so ist?

PS.: ich weiß mit der trystrtofloat könnte ich dieses ganze Problem umgehen, indem ich eine if-Abfrage starte aber wenn ich dies tun würde, dann wäre die try-Except-Abfrage in meinem bisherigen Verständnis der Problematik überflüssig, da ich alles mit if abfragen abfangen kann (in einem gewissen größeren Rahmen sicherlich).

Vielen Dank
BAMatze
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:41 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