![]() |
TDate und Real vertragen sich nicht bei Funktionsaufruf
Hallo,
ich folgendes Problem mit diesen Funktionen: UNIT_A.pas:
Delphi-Quellcode:
UNIT_B.pas:
function GetValue (ParamIdent : String; ParamDefault : Real) : Real; overload;
function GetValue (ParamIdent : String; ParamDefault : TDate) : TDate; overload; function GetValue (ParamIdent : String; ParamDefault : Real) : Real; begin Result := ReadFloat (...); end; function GetValue (ParamIdent : String; ParamDefault : TDate) : TDate; begin Result := ReadDate (...); end;
Delphi-Quellcode:
Der Compiler schmeißt bei der zweiten Zeile (dtValue) eine Fehlermeldung "E2251 Doppeldeutiger überladener Aufruf von 'GetValue'". Delphi will hier auch die Funktion mit Real-Werten nehmen und das paßt halt nicht zum Datumstyp.
uses
Unit_A; var rValue : Real; dtValue : TDate; begin rValue := GetValue ('Betrag', 0.00); dtValue := GetValue ('Datum', Date); end; Am Ende eines langen Tages fällt mir aber dazu auch nichts anderes sein. Aber vielleicht kann mir ja jemand weiter helfen ? Mike |
Re: TDate und Real vertragen sich nicht bei Funktionsaufruf
Da 0.0 keinen Typ hat, weiß der Kompiler nun nicht welchen Float-Typ (Real oder Double/TDate) er dafür festlegen soll.
versuch mal
Delphi-Quellcode:
[edit]
rValue := GetValue ('Betrag', Real(0.00));
oder const myRConst: Double = 0.0; rValue := GetValue ('Betrag', myRConst); sicher, daß er beim Zweiten meckert? :gruebel: sowas wär schonmal "sinnlos"
Delphi-Quellcode:
dtValue := GetValue ('Datum', TDate(Date));
|
Re: TDate und Real vertragen sich nicht bei Funktionsaufruf
Die 0.0 sollen eigentlich nur symbolisch für einen Real-Wert stehen.
Ja, er zeigt die zweite Zeile als die Zeile mit dem Fehler an. Wenn ich die Maus auf 'GetValue' ziehe, bekomme ich als Hilfe die Funktion mit Real angezeigt. Demzufolge will er hier Real statt TDate verwenden. Das TDate im Prinzip auch eine Real-Zahl (Extended) ist, ist mir bekannt. Nur wie ganz ich die Funktion mit TDate verwenden ? |
Re: TDate und Real vertragen sich nicht bei Funktionsaufruf
Delphi-Quellcode:
ich vermute mal da liegt das Problem ... beides ist im Grunde ein Double
type
TDateTime = type Double; TDate = type TDateTime; Real = Double; falls es nicht stört kannst du ja TDate und Co. auch als Double speichern, also nur noch eine Funktion. Ansonsten bleibt dir hier nur noch die Möglichkeit die eine Funktion umzubenennen, oder statt Real das kleinere Single oder das größere Extended zu nutzen |
Re: TDate und Real vertragen sich nicht bei Funktionsaufruf
Ja, da werde ich wohl den Datumswert auch als Zahl behandeln. Aber das Problem schiebe ich auf morgen. Vielleicht gibt es in den nächsten Stunden noch eine andere Idee. Ich mache erst mal mit einem anderen Problem weiter.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 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