Einzelnen Beitrag anzeigen

Tenobaal

Registriert seit: 9. Mai 2013
21 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Funktion soll als Parameter verschiedene Datentypen akzeptieren

  Alt 10. Mai 2013, 10:11
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;
  Mit Zitat antworten Zitat