![]() |
Ungültiges Argument zum Codieren des Datums
Hallo zusammen,
ich berechne anhand dieses Codes den letzten Tag des angegebenen Monats. Wenn ich die Tage des letzten Monats herausfinden will, erhalte ich immer die Fehlermeldung: Ungültiges Argument zum Codieren des Datums. Mir ist bewusst, dass es die Funktion DaysInAMonth gibt, aber ich arbeite mit einem Report Generator und im Calculator des Report Generators werden eben nur EncodeDate und DecodeDate unterstützt. Hat jemand eine Idee, wie ich auch die Tage des Jahresabschlussmonats berechnen kann?
Delphi-Quellcode:
var
idTag, idMonat, idJahr: Integer; LetzterTag : TDateTime; begin LetzterTag := EncodeDate(2011, 12, 1) - 1; // Ungültiges Argument zum Codieren des Datums DecodeDate(LetzterTag,idJahr,idMonat,idTag); value := idTag; end; mfg David |
AW: Ungültiges Argument zum Codieren des Datums
Nimm einmal Word statt Integer.
|
AW: Ungültiges Argument zum Codieren des Datums
Scheint mir so, als ob der Report Calculator kein Datentyp Word unterstützt? :O
Delphi-Quellcode:
Error Line 3: Expected type, but found 'word' instead
procedure VarMonatPruefenOnCalc(var Value: Variant);
var idTag, idMonat, idJahr: Word; LetzterTag : TDateTime; begin LetzterTag := EncodeDate(DBPipelineUPlaner_Config['Jahr'], DBPipelineUPlaner_Config['Monat']+1, 1) - 1; DecodeDate(LetzterTag,idJahr,idMonat,idTag); value := idTag; end; Folgende Datentypen sind im Calculator verwendbar:
Code:
In Delphi lässt er bei mir ja Integer nicht einmal zu:
Currency
Double Extended Integer Single Char String
Delphi-Quellcode:
Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen.
procedure TForm1.Button1Click(Sender: TObject);
var idTag, idMonat, idJahr: Integer; LetzterTag : TDateTime; begin LetzterTag := EncodeDate(2011, 12, 1) - 1; DecodeDate(LetzterTag,idJahr,idMonat,idTag); ShowMessage(IntToStr(idTag)); end; |
AW: Ungültiges Argument zum Codieren des Datums
Da hilft wohl nur ein Blick in die Dokumentation des Report Calculators.
|
AW: Ungültiges Argument zum Codieren des Datums
ja da gibt es auch schon eine Möglichkeit, über die "Pass-Through Functions" lassen sich Funktionen, DLL calls, WIN API Calls in den Report Generator importieren ..
Bleibt mir wohl keine andre Möglichkeit übrig, als mich in das Themengebiet einzuarbeiten. |
AW: Ungültiges Argument zum Codieren des Datums
Du hast die Standardstrategie zur Fehlersuche noch nicht angewendet!
Wenn in einer komplexen Sourcecodezeile ein unerklärlicher Fehler auftritt, dann sollte man mehrere Zeilen daraus machen:
Delphi-Quellcode:
Tritt der Fehler nun in Zeile 1 oder Zeile 2 auf?
var
idTag, idMonat, idJahr: Integer; LetzterTag : TDateTime; begin LetzterTag := EncodeDate(2011, 12, 1); // 1. Zeile LetzterTag := LetzterTag - 1.0; // 2. Zeile DecodeDate(LetzterTag,idJahr,idMonat,idTag); value := idTag; end; Wahrscheinlich Zeile 1, oder? Nächster Schritt: Scriptfunktion soweit vereinfachen, bis nur noch die fehlerhafte Zeile übrig bleibt:
Delphi-Quellcode:
Vielleicht wurde die Funktion EncodeDate() abweichend zum Delphi-Standard implementiert; das lässt sich leicht überprüfen:
var
LetzterTag : TDateTime; begin LetzterTag := EncodeDate(2011, 12, 1); end;
Delphi-Quellcode:
var
LetzterTag : TDateTime; begin LetzterTag := EncodeDate(1, 12, 2011); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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