Danke für eure Antworten! Ihr habt mir schon sehr geholfen.
Die Definition von Speichern function Speichern(s:String; var Value):Integer;
hat aber keinen Parameter für Fehler. Wie soll das gehen?
Ja, du hast recht. Ich war zu voreilig und hab den Quellcode von der Funktion "Speichern" geändert ohne das Button-Ereignis anzupassen.
Wenn ich das richtig Verstanden habe gibt es zwei Ansätze:
1) Mit dem Datentyp Variant arbeiten. Führt aber dazu, dass ich Variablen hin und her kopieren muss
Delphi-Quellcode:
function Speichern(s:String; var Value:Variant):Integer;
var help_int:Integer;
begin
case VarType(Value) of
VarInteger: Begin
Val(s,help_int,result);
Value:=help_int;
End;
(*
.
.
.
.
.
*)
Else result:=1;
end;
End;
procedure TForm1.Button2Click(Sender: TObject);
var
a:Integer;
aVar:Variant;
begin
aVar:=a;
Speichern(Edit1.Text,aVar);
a:=aVar;
end;
2) Für jeden Datentyp eine eigene Funktion überladen (wusste nicht, dass es möglich ist). Dann nimmt mir der Kompiler die Arbeit ab, sodass keine Typ-Unterscheidung meinerseits nötig ist.
Delphi-Quellcode:
function Speichern(s:String; var Value:Integer):Integer; overload;
begin
Val(s,Value,result);
End;
function Speichern(s:String; var Value:Double):Integer; overload;
begin
Val(s,Value,result);
End;
function Speichern(s:String; var Value:Single):Integer; overload;
begin
Val(s,Value,result);
End;
function Speichern(s:String; var Value:String):Integer; overload;
begin
Value:=s;
result:=0;
End;
procedure TForm1.Button2Click(Sender: TObject);
var
a:Double;
b:Single;
c:String;
begin
Speichern(Edit1.Text,a);
Speichern(Edit1.Text,b);
Speichern(Edit1.Text,c);
end;