Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   integer überprüfen (https://www.delphipraxis.net/41963-integer-ueberpruefen.html)

Nisbo 11. Mär 2005 10:29


integer überprüfen
 
Moin Moin

Ich bastel gerade an einer Umwandlung der UNIX TimeStamp ins Normale Datum, das Funkioniert auch soweit ganz gut nur wenn der in Edit1 eigegebene Wert kein gültiger ingeger mehr ist dann Bekomme ich im programm die entsprechnde Fehlermeldung, möchte da aber gerne meine eigene Fehlermeldung ausgeben.

Bei Google habe ich bis jetzt noch nichts gefunden, ußer die Gültigkeitsbereiche :gruebel: aber das möchte ich ja gerne überprüfen

momentan schau das ganze so aus:

Delphi-Quellcode:
procedure TForm4.Button2Click(Sender: TObject);
var
  hh, mm, ss : cardinal;
  UnixZeit   : integer;
  Ausgabe    : integer;
  s          : string;
  t          : string;
 
const
  FirstOf1970 = 25569;

begin
   if Edit1.Text = '' then Edit1.Text := '0';

   UnixZeit  := strtoint(Edit1.Text);

   if UnixZeit < 0 then
      begin UnixZeit  := 0;
            Edit1.Text := '0';
      end;
     
   if UnixZeit > 2147483647 then
      begin UnixZeit  := 2147483647;
            Edit1.Text := '2147483647'; // 2147483647
      end;
   
   hh        := UnixZeit mod 86400;
   mm        := hh mod 3600;
   hh        := hh div 3600;
   ss        := mm mod 60;
   mm        := mm div 60;
   Ausgabe   := (UnixZeit div 86400) + FirstOf1970;
   t         := timetostr(EncodeTime(hh, mm, ss, 0));
   s         := FormatDateTime('dddd", " dd. ' +  'mmmm yyyy "-" ' + t + ' "Uhr"',Ausgabe);
   Edit2.Text := s;
end;
das Problem wird wohl in

UnixZeit := strtoint(Edit1.Text);

liegen, also bei der Konvertierung

Hat jemand nen Tipp für mich ?

alcaeus 11. Mär 2005 10:33

Re: integer überprüfen
 
Hallo,

[oh]TryStrToInt, StrToIntDef[/oh] wären gute Stichworte für die OH. (Von der Forensuche ganz zu schweigen ;))

Greetz
alcaeus

Kiste 11. Mär 2005 10:35

Re: integer überprüfen
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
blubb:integer;
begin
  try blubb:=StrToInt(edit1.text) except
    showmessage('blah');
  end;
end;
Funktioniert :)

Allerdings bekommste, solang du im debugger bist, erst die Fehlermeldung, dass es kin gueltiger Integer wert is... Wenne net mehr im Debugger bsit bekomsmte einfach nurnoch 'blah' ...

mfg Kiste

Nisbo 11. Mär 2005 10:47

Re: integer überprüfen
 
@ alcaeus

schicke mir mal dein Delphi dann schaue ich auch in dei OH rein, habe doch Lazarus ;)
gesucht habe ich bereits:

invalid integer 2147483647 pascal
integer überprüfen pascal

hatte ja nix gebracht

Kiste's Lösung war der Schlüssel wie ich es jetzt gelöst habe

Delphi-Quellcode:
procedure TForm4.Button2Click(Sender: TObject);
var
  hh, mm, ss : cardinal;
  UnixZeit   : integer;
  Ausgabe    : integer;
  s          : string;
  t          : string;
 
const
  FirstOf1970 = 25569;

begin
   if Edit1.Text = '' then Edit1.Text := '0';

   try
      UnixZeit := strtoint(Edit1.Text);
   except
      ShowMessage('Hier darf nur eine gültige UNIX-TimeStamp eingegeben werden!');
      Edit1.SetFocus;
      UnixZeit := 0;
   end;

   if UnixZeit < 0 then
      begin
           ShowMessage('Hier darf nur eine gültige UNIX-TimeStamp eingegeben werden!');
           UnixZeit := 0;
           Edit1.SetFocus;
      end;
   
   hh        := UnixZeit mod 86400;
   mm        := hh mod 3600;
   hh        := hh div 3600;
   ss        := mm mod 60;
   mm        := mm div 60;
   Ausgabe   := (UnixZeit div 86400) + FirstOf1970;
   t         := timetostr(EncodeTime(hh, mm, ss, 0));
   s         := FormatDateTime('dddd", " dd. ' +  'mmmm yyyy "-" ' + t + ' "Uhr"',Ausgabe);
   Edit2.Text := s;
end;
vielen Dank für die Hilfe


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