AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Gibts es Funktionen mit zwei Ergebnistypen!?
Thema durchsuchen
Ansicht
Themen-Optionen

Gibts es Funktionen mit zwei Ergebnistypen!?

Ein Thema von Propeller · begonnen am 2. Feb 2007 · letzter Beitrag vom 3. Feb 2007
Antwort Antwort
Seite 2 von 2     12   
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#11

Re: Gibts es Funktionen mit zwei Ergebnistypen!?

  Alt 2. Feb 2007, 18:58
Hallo,

hier ist noch eine Möglichkeit:

Delphi-Quellcode:
// uses Math (IsZero)

function Division (a, b: Double; var erg: Double): Boolean;
begin
  Result := not IsZero(b);
  if Result then
    erg := a / b;
end;

procedure TForm1.Button1Click (Sender: TObject);
var
  y: Double;
begin
  if Division(4, 3, y) then
    Label2.Caption := FloatToStr(y)
  else
    Label2.Caption := 'error';
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Propeller

Registriert seit: 18. Nov 2005
Ort: Berlin
9 Beiträge
 
#12

Re: Gibts es Funktionen mit zwei Ergebnistypen!?

  Alt 3. Feb 2007, 11:49
Hallo,

danke erstmal für eure Mühe, mir zu helfen!!!

Ich habe dennoch eine allgemeine Frage, was die Anweisung try...except betrifft. Habe diese noch nie im Informatikunterricht behandelt und sie einfach aus einem Beispiel übernommen. Ich habe mich ein bisschen darüber informiert, es stand in einem Buch von mir, dass wenn innerhalb des Try-Blocks ein Fehler auftritt, so wird die Programmausführung in diesem Block unterbrochen und hinter Except fortgesetzt.

Dazu folgendes primitives, jedoch anschauliches Beispiel:

Delphi-Quellcode:
function division(x,y: extended): extended;
begin
  try
  result := x/y
  
  except result := 1110
  End;
end;
So, nach meiner Logik sollte er nun die Anweisung "x/y" probieren. Tritt dabei ein Fehler auf, wie z.B. eine Division durch Null, so soll er als Result "1110" ausgeben (lassen wir den mathematisch völlig unlogischen Zusammenhang mal außen vor, die Zahl dient hier mal lediglich als Beispiel )

Führe ich die Funktion nun doch aus, so erhalte ich dennoch einen Laufzeitfehler mit dem Hinweis von "EZeroDivide", anstatt, dass er mir als Resultat "1110" schreibt.

Was habe ich nun falsch verstanden bzw. falsch gemacht???

[edit=Christian Seehase]Delphi-Tags korrigiert. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#13

Re: Gibts es Funktionen mit zwei Ergebnistypen!?

  Alt 3. Feb 2007, 11:57
Wenn du deine Anwendung aus Delphi heraus startest, bekommst du trotz try except blöcken noch Exceptions. Das kann man irgendwo ausschalten, keine Ahnung wo. Zum testen kannst du einfach die *.exe Datei aus deinem Projektverzeichnis öffnen. Dann gehts auch.
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Gibts es Funktionen mit zwei Ergebnistypen!?

  Alt 3. Feb 2007, 13:34
Moin Propeller,

in der englischen Version findest Du das unter Tools\Debugger Options...\Language Exceptions.
Dort gibt es eine Checkbox "Stop on Delphi-Exceptions".
Wenn die markiert ist werden Exceptions auch angezeigt, wenn sie ein try/except-Block abfängt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04:07 Uhr.
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