abend,
Zitat:
@heiopei: Hast du denn verstanden, dass ich deine Frage nach der Fehlerursache beantwortet hatte?
ich versteh den sinn des satzes leider nich
sorry
Zitat:
Nochmal im Klartext: Du hast den Aufruf von DateTimeToTimeStamp eliminiert, der in der Original-
Unit die Basistransformation durchführt.
schon klar, dass ich den eliminiert habe, aber ich habe auch die ganze "datums"-verwaltung daran angepasst. also, jetz zeig ich noch mal meinen ganzen lösungsweg auf.
ich erhalte ein datum mittels get_sysdate. hier wird eine
api-funktion aufgerufen, die das datum (+zeit) in form von tsystemtime ausgibt. dann wandle ich dieses ergebnis mit encodedate in eine gültige integer-zahl um. die sollte jetz
imho timestamp.date (oder wie das heißt) entsprechen.
so, jetzt löse ich diese zahl mit hilfe (der gegenfunktion) von encodedate wieder in die einzelnen zahlen-werte auf. dabei sollte es doch eigentlich völlig egal sein, dass ich timestampto... weglasse, da ich ja eh nur mit dem datum arbeite und nicht auch noch mit der zeit.
--> da ich von vornherein nur mit integerwerten arbeite, brauche ich auch keine umformung mit timestampto... vornehmen!!!!
oder liege ich hier jetzt falsch -wenn ja tuts mir fett sorry
noch ein paar ergenzungen:
Delphi-Quellcode:
type TSystemTime = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;
//diese funktion berechnet aus dem übergebenen jahr, monat und dem tag das datum
function EncodeDate(Year, Month, Day: Word): Integer;
var
I: Integer;
DayTable: PDayTable;
begin
try
result := 0;
DayTable := @MonthDays[IsLeapYear(Year)];
if (Year >= 1) and (Year <= 9999) and (Month >= 1) and (Month <= 12) and
(Day >= 1) and (Day <= DayTable^[Month]) then
begin
for I := 1 to Month - 1 do
Inc(Day, DayTable^[I]);
I := Year - 1;
result := I * 365 + I div 4 - I div 100 + I div 400 + Day - 693594;
end;
except
raise conv.Create('Fehler beim codieren von Datumswerten in einen ' +
'Integer-Wert!');
end;
end;
//funktion ermittelt das aktuelle systemdatum
function Get_SysDate: Integer;
var
SystemTime: TSystemTime;
begin
GetSystemTime(SystemTime);
with SystemTime do
Result := EncodeDate(wYear, wMonth, wDay);
end;
mfg,
heiopei