AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TDate und Real vertragen sich nicht bei Funktionsaufruf

TDate und Real vertragen sich nicht bei Funktionsaufruf

Ein Thema von Mike_on_Tour · begonnen am 19. Feb 2009 · letzter Beitrag vom 19. Feb 2009
Antwort Antwort
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TDate und Real vertragen sich nicht bei Funktionsaufruf

  Alt 19. Feb 2009, 17:05
Hallo,

ich folgendes Problem mit diesen Funktionen:

UNIT_A.pas:
Delphi-Quellcode:
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;
UNIT_B.pas:
Delphi-Quellcode:
uses
  Unit_A;

var
  rValue : Real;
  dtValue : TDate;
begin
  rValue := GetValue ('Betrag', 0.00);
  dtValue := GetValue ('Datum', Date);
end;
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.

Am Ende eines langen Tages fällt mir aber dazu auch nichts anderes sein. Aber vielleicht kann mir ja jemand weiter helfen ?

Mike
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.358 Beiträge
 
Delphi 12 Athens
 
#2

Re: TDate und Real vertragen sich nicht bei Funktionsaufruf

  Alt 19. Feb 2009, 17:11
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:
rValue := GetValue ('Betrag', Real(0.00));

oder

const myRConst: Double = 0.0;

rValue := GetValue ('Betrag', myRConst);
[edit]
sicher, daß er beim Zweiten meckert?

sowas wär schonmal "sinnlos"
dtValue := GetValue ('Datum', TDate(Date));
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: TDate und Real vertragen sich nicht bei Funktionsaufruf

  Alt 19. Feb 2009, 17:20
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 ?
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.358 Beiträge
 
Delphi 12 Athens
 
#4

Re: TDate und Real vertragen sich nicht bei Funktionsaufruf

  Alt 19. Feb 2009, 17:27
Delphi-Quellcode:
type
  TDateTime = type Double;
  TDate = type TDateTime;

  Real = Double;
ich vermute mal da liegt das Problem ... beides ist im Grunde ein 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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: TDate und Real vertragen sich nicht bei Funktionsaufruf

  Alt 19. Feb 2009, 17:37
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.
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:29 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