Entwickler-Ecke

Dateizugriff - Problem Dateizugriff und Wertebereich in Rechnung


Cosmic - Di 10.12.02 19:26
Titel: Problem Dateizugriff und Wertebereich in Rechnung
Hi,
also ich habe ein Programm geschrieben das rechnet toll alles aus, was es soll! Nur bei ungünstiger Konstelation aller Eingabewerte, also manche zu groß, manche zu klein, entsteht das Problem! Denn dann kommt das Programm irgendwann zu einer Stelle wo eine Wurzel gezogen wird und der Wert ist negativ (durch die großen Anfangswerte).
So nun kann ich aber leider KEINE Abfrage ala :

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var n: Single;
    code : Integer;
    s   : string;
begin
    s := e.text;
    try
      Val(s,n,code);
    except
          MessageBox(0,'Wertebereich überschritten','Problem',16);
          e.SetFocus
    end;
    if code <> 0 then begin
       MessageBox(0,'Fehler im Ausdruck','Problem',16);
       e.SetFocus
    end
end;

machen, weil ich insgesammt 12 Werte eingebe und wenn alle groß genug sind, gibts kein negativen Wert und somit kein Problem. Das kann ich aber erst bei der Berechnung feststellen (deswegen rechne ich das ja ;-) )
Meine Frage ist nun:

X) Ist es geschickt mit einer If Abfrage nach jedem Teilergebnis den Wert zu checken ( ob er negativ ist) oder geht das vielleicht auch bei der finalen Rechnung, wo auch die Wurzel vorkommt? Denn es werden mehrere Rechnungen mit den Werten fabriziert, wenn nur eine ein Problem hätte könnte der Rest ja angezeigt werden..

Gruß Cosmic

-----------------------------------------
Let´s Fetz heute beginnt Dein Leben


Keldorn - Di 10.12.02 19:57

Hallo,

yeahh, ein Matheproblem bei Dateizugriff ... :shock:

es wäre nicht verkehrt, genau zu wissen, WAS und wie Du was ausrechnest.

Mfg Frank


ase - Do 19.12.02 18:17
Titel: exception
Servus!

Nimm einfach einen Try...Except Block. Das sieht dann so aus:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Try
  x := Sqr(y);   // y = -4
Except
  On EMathError do
    Begin
        ShowMessage('Negativer Wert unter Wurzel');
    End;
End;

Das sieht dann ziemlich hässlich aus wenn du das Programm mit nem Debugger ausführst (1000e Message Boxes...) aber der Endbenutzer sieht nur diese Meldung die du da oben siehst.

Zu Try und Except findest du in der Hilfe auch einiges.

(19.12. 17:22 Tino) Code-Tags hinzugefügt.


Cosmic - Do 19.12.02 18:43
Titel: Danke
Hi,
super -- Danke! das habe ich noch nicht gewust!
Ciao Cosmic

-----------------------------------------
Let´s Fetz heute beginnt Dein Leben