![]() |
Problem bei umstellung einer funktion von Delphi in pascal
Habe das Problem, dass ich das in Delphi geschrieben habe, und es unter devpascal zum laufen bringen muss. Das wiederum hat aber keinen Datumstypen und ich habe keine Ahnung wie ich das umschrieben kann.
waäre cool, wenn ihr mir da helfen könntet.
Delphi-Quellcode:
function TFrmDatum.CheckString(EinleseDatum:string):TDate;
var i :integer; s1,s2:string; begin if (pos('.',EinleseDatum)>0) and (pos(' ',EinleseDatum)<=0) then begin //wenn es 01.01.2005 ist result:=StrToDate(EinleseDatum); end; if (pos('-',EinleseDatum)>0) then begin //wenn es 2005-01-01 ist i:=pos('-',EinleseDatum); s1:=copy(EinleseDatum,1,i-1); Delete(EinleseDatum,1,i); i:=pos('-',EinleseDatum); s2:=copy(EinleseDatum,1,i-1); Delete(EinleseDatum,1,i); result:=StrToDate(EinleseDatum + '.' + s2 + '.' + s1); end; if (pos('.',EinleseDatum)>0) and (pos(' ',EinleseDatum)>0) then begin //wenn es 1. Januar 2005 ist i:=pos(' ',EinleseDatum); s1:=Copy(EinleseDatum,1,i-2); Delete(EinleseDatum,1,i); i:=pos(' ',EinleseDatum); s2:=Copy(EinleseDatum,1,i-1); Delete(EinleseDatum,1,i); if LowerCase(s2)='januar' then s2:='1'; if LowerCase(s2)='februar' then s2:='2'; if LowerCase(s2)='märz' then s2:='3'; if LowerCase(s2)='april' then s2:='4'; if LowerCase(s2)='mai' then s2:='5'; if LowerCase(s2)='juni' then s2:='6'; if LowerCase(s2)='juli' then s2:='7'; if LowerCase(s2)='august' then s2:='8'; if LowerCase(s2)='september' then s2:='9'; if LowerCase(s2)='oktober' then s2:='10'; if LowerCase(s2)='november' then s2:='11'; if LowerCase(s2)='dezember' then s2:='12'; result:=StrToDate(s1 + '.' + s2 + '.' + EinleseDatum); end; end; |
Re: Problem bei umstellung einer funktion von Delphi in pasc
Wenn du DevPascal auf FreePascal aufgesetzt hast, dann hast du einiges an Arbeit vor dir, da dort ein Datumskonzept nicht existiert (lt. Doku). Wenn du GNU Pascal verwendest, dann ist es leichter. Du musst dann nur den Rückgabewert von TDate auf TimeStamp ändern und die Funktion StrToDate() durch eine Prozedur ersetzen, die den TimeStamp-Record füllt.
Grüße vom marabu |
Re: Problem bei umstellung einer funktion von Delphi in pasc
Seit Ihr an einer DLL interessiert, die genau diese Funktionen (Umrechnen von TDateTime nach UnixTimeStamp und zurück) bietet? Ich hätte da so etwas zu bieten.
|
Re: Problem bei umstellung einer funktion von Delphi in pasc
@ ltiefland:
Das mit der Dll wäre ansich ne feine sache, aber da das Programm auch auf nem anderen Rechner laufen muss, und ich dort nichts installieren darf, wird mir das nichts bringen. Trotzdem vielen Dank. @ marabu: ich muss leider den Freepascal Compiler nehmen. Vielleicht habt ihr ja noch andere ideen, wie man das machen könnte. Zum Beispiel mit Rekursion oder so. |
Re: Problem bei umstellung einer funktion von Delphi in pasc
Zitat:
|
Re: Problem bei umstellung einer funktion von Delphi in pasc
Naja ausprobieren kann ich sie ja mal.
Gruß, the-tremendous |
Re: Problem bei umstellung einer funktion von Delphi in pasc
Liste der Anhänge anzeigen (Anzahl: 1)
Hier, bitte. Eine kleine Doku ist mit dabei. Sollte eigentlich nicht schwer sein die Funktionen einzubinden. In Delphi würde man es so machen:
Delphi-Quellcode:
Für die Funktion "delphi_dat" sähe es so aus:
function timestamp(Start: TDateTime):Int64; external 'datetime.dll';
function datum(tstamp:Int64):ShortString; external 'datetime.dll';
Delphi-Quellcode:
Sollte es Int64 bei Dir nicht geben, dann verwende einfach Integer! Das sollte auch groß genug sein.
function delphi_dat(tstamp:Int64):TDateTime; external 'datetime.dll';
TDateTime entspricht in Delphi übrigens einem Double Wert. Du solltest also statt TDateTime auch Double verwenden können. |
Re: Problem bei umstellung einer funktion von Delphi in pasc
ok, vielen Dank
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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