Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem bei umstellung einer funktion von Delphi in pascal (https://www.delphipraxis.net/48016-problem-bei-umstellung-einer-funktion-von-delphi-pascal.html)

The_Tremendous 19. Jun 2005 13:26


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;

marabu 19. Jun 2005 16:23

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

ltiefland 19. Jun 2005 16:46

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.

The_Tremendous 19. Jun 2005 17:17

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.

ltiefland 19. Jun 2005 17:23

Re: Problem bei umstellung einer funktion von Delphi in pasc
 
Zitat:

Zitat von The_Tremendous
@ 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.

Und wie soll dann das Programm auf den Rechner kommen? Das wird ja auch "installiert", wenn es vielleicht ja nur kopiert wird. Die DLL könntest Du ja auch ins Programmverzeichnis packen. Die muß ja nicht ins Systemverzeichnis. In dem Moment wäre die DLL einfach nur eine weitere normale Datei. Ob Du nun eine ".exe" oder zusätzlich noch eine ".dll" lieferst, die sich BEIDE im gleichen Verzeichnis befinden, macht doch eigentlich keinen Unterschied, oder? Ich könnte Dir natürlich auch den Source geben und Du baust ihn in Dein Programm ein (mit Hinweis auf mich, versteht sich). Dann ist sogar die DLL überflüssig.

The_Tremendous 19. Jun 2005 18:04

Re: Problem bei umstellung einer funktion von Delphi in pasc
 
Naja ausprobieren kann ich sie ja mal.


Gruß, the-tremendous

ltiefland 19. Jun 2005 18:10

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:
function timestamp(Start: TDateTime):Int64; external 'datetime.dll';
function datum(tstamp:Int64):ShortString; external 'datetime.dll';
Für die Funktion "delphi_dat" sähe es so aus:
Delphi-Quellcode:
function delphi_dat(tstamp:Int64):TDateTime; external 'datetime.dll';
Sollte es Int64 bei Dir nicht geben, dann verwende einfach Integer! Das sollte auch groß genug sein.

TDateTime entspricht in Delphi übrigens einem Double Wert. Du solltest also statt TDateTime auch Double verwenden können.

The_Tremendous 19. Jun 2005 18:19

Re: Problem bei umstellung einer funktion von Delphi in pasc
 
ok, vielen Dank


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 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