Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   got longint expected ansistring (https://www.delphipraxis.net/41925-got-longint-expected-ansistring.html)

Nisbo 10. Mär 2005 20:48


got longint expected ansistring
 
Habe bereits bei Google gesucht aber da gibt es nur 1 Seite und die ist französisch
http://www.developpez.net/forums/viewtopic.php?p=413796

glaube ich zumindest :cyclops:

Was ich vorhabe ist die UNIX TimeStamp aus einem Datum zu berechen, habe dazu mir eine Anleitung aus einem anderen Board geschnappt (weiß nicht ob link hier erlaubt ist) und die ein wenig umgebastelt und verkürzt so das dies rauskam

Delphi-Quellcode:
procedure TForm3.Button2Click(Sender: TObject);
var
   Result: integer;
   iTime: integer;
   HumanStamp: tDateTime;
   hh, mm, ss, ms: word;

const
  FirstOf1970 = 25569;      //    [s] seit 30.12.1899 bis 01.01.1970 (WinZeit -> UnixZeit)
  OneDay     = 86400;      // in [s]
  OneHour    = 3600;       // in [s]
  OneMinute  = 60;         // in [s]


begin
  //HumanStamp := '01.01.2005';
  Result    := 0;
  DecodeTime(HumanStamp, hh, mm, ss, ms);

  { Tage seit 1.1.1970 in Sekunden }

  iTime := (Trunc(HumanStamp) - FirstOf1970) * OneDay;

  { Stunden und Minuten und Sekunden aufaddieren }

  iTime := iTime + (hh * OneHour);
  iTime := iTime + (mm * OneMinute);
  iTime := iTime + ss;

  if iTime < 0 then iTime := 0;

  Result := iTime;
  Edit1.Text := iTime;
  //  ShowMessage ('UNIX-Datum: ' + iTime +' ');

end;
wenn ich das jetzt so mache dann bekomme ich diesen Fehler:
got longint expected ansistring

ich weiß da ist noch so einiges falsch, aber möchte wenigstens erstmal nen ergebnis bekommen
und jetzt lacht mich aus, in der anleitung war das ganze eine Funktion, leider weiß ich nicht wie man sowas einbaut (ja ja gelächter ;)) deshalb habe ich das etwas umgebaut

Robert_G 10. Mär 2005 20:51

Re: got longint expected ansistring
 
Dir ist schon klar, dass TEdit.Text keine numerische Property ist? :gruebel:
Und da du nicht mit VB arbeitest sondern mit einer halbwges typ sicheren Sprache, musst du natürlich erst den Integer in einen String umwandeln. ;)

Nisbo 11. Mär 2005 07:50

Re: got longint expected ansistring
 
Jo und so lautet die Lösung für alle die danach mal suchen:

Result := inttostr(iTime);

chrisw 11. Mär 2005 08:08

Re: got longint expected ansistring
 
Delphi-Quellcode:
function GetUnixTime(Zeit: TDateTime): LongInt;
const UnixDateDelta = 25569;
begin
  // Liefert die Zeit als Unix TimeStamp zurück...
  Result := Round(((Zeit-UnixDateDelta)*24*60*60)-7200.5);
end;

Nisbo 11. Mär 2005 08:48

Re: got longint expected ansistring
 
Liste der Anhänge anzeigen (Anzahl: 1)
mmm da wären wir wieder beim thema Function :D

habe es jetzt so gelöst und funktioniert Prima:

Delphi-Quellcode:
procedure TForm3.Button2Click(Sender: TObject);
var
   Ausgabe         : string;
   Eingabe         : string;
   Zeitverschiebung : integer;
   iTime           : integer;
   NormalesDatum   : tDateTime;
   hh, mm, ss, ms  : word;

const
  FirstOf1970 = 25569; // in Sekunden seit 30.12.1899 bis 01.01.1970 (WinZeit -> UnixZeit)
  OneDay     = 86400; // Sekunden
  OneHour    = 3600; // Sekunden
  OneMinute  = 60;   // Sekunden

begin
   if Edit1.Text = '' then Edit1.Text := FormatDateTime('dd.mm.yyyy', now);
   if Edit2.Text = '' then Edit2.Text := '00:00';
   if Edit3.Text = '' then Edit3.Text := '0';

   Eingabe         := Edit1.Text + ' ' + Edit2.Text;     // Datum und Zeit zusammenfuegen
   NormalesDatum   := StrToDateTime(Eingabe);            // Eingabe in Datumsformat umwandeln
   Zeitverschiebung := strtoint(Edit3.Text) * OneHour;    // Zeitverschiebung berechnen

   DecodeTime(NormalesDatum, hh, mm, ss, ms);

   iTime := (Trunc(NormalesDatum) - FirstOf1970) * OneDay; // Tage seit 1.1.1970 in Sekunden abziehen
   iTime := iTime + (hh * OneHour);                       // Stunden
   iTime := iTime + (mm * OneMinute);                     // Minuten
   iTime := iTime + ss;                                   // Sekunden
   iTime := iTime + Zeitverschiebung;                     // Zeitverschiebung beachten

   if iTime < 0 then iTime := 0;                          // nur positive Ausgabe

   Ausgabe   := inttostr(iTime);
   Edit4.Text := Ausgabe;
end;
so schaut das ganze in der Eingabe aus:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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 by Thomas Breitkreuz