AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Ungültiges Argument zum Codieren des Datums
Thema durchsuchen
Ansicht
Themen-Optionen

Ungültiges Argument zum Codieren des Datums

Ein Thema von Metallicwar · begonnen am 21. Jan 2011 · letzter Beitrag vom 21. Jan 2011
Antwort Antwort
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#1

Ungültiges Argument zum Codieren des Datums

  Alt 21. Jan 2011, 12:06
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.620 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ungültiges Argument zum Codieren des Datums

  Alt 21. Jan 2011, 12:09
Nimm einmal Word statt Integer.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#3

AW: Ungültiges Argument zum Codieren des Datums

  Alt 21. Jan 2011, 12:19
Scheint mir so, als ob der Report Calculator kein Datentyp Word unterstützt? :O

Delphi-Quellcode:
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;
Error Line 3: Expected type, but found 'word' instead


Folgende Datentypen sind im Calculator verwendbar:
Code:
Currency
Double      
Extended  
Integer
Single  
Char                  
String
In Delphi lässt er bei mir ja Integer nicht einmal zu:

Delphi-Quellcode:
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;
Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen.

Geändert von Metallicwar (21. Jan 2011 um 12:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.620 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ungültiges Argument zum Codieren des Datums

  Alt 21. Jan 2011, 12:42
Da hilft wohl nur ein Blick in die Dokumentation des Report Calculators.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Metallicwar

Registriert seit: 5. Feb 2010
Ort: Bad Kissingen
293 Beiträge
 
Delphi XE Architect
 
#5

AW: Ungültiges Argument zum Codieren des Datums

  Alt 21. Jan 2011, 12:49
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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: Ungültiges Argument zum Codieren des Datums

  Alt 21. Jan 2011, 15:13
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:
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;
Tritt der Fehler nun in Zeile 1 oder Zeile 2 auf?
Wahrscheinlich Zeile 1, oder?

Nächster Schritt: Scriptfunktion soweit vereinfachen, bis nur noch die fehlerhafte Zeile übrig bleibt:
Delphi-Quellcode:
var
  LetzterTag : TDateTime;
begin
  LetzterTag := EncodeDate(2011, 12, 1);
end;
Vielleicht wurde die Funktion EncodeDate() abweichend zum Delphi-Standard implementiert; das lässt sich leicht überprüfen:
Delphi-Quellcode:
var
  LetzterTag : TDateTime;
begin
  LetzterTag := EncodeDate(1, 12, 2011);
end;
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:27 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