Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String To Int/Time (https://www.delphipraxis.net/114098-string-int-time.html)

Chemiker 19. Mai 2008 22:50

Re: String To Int/Time
 
Hallo Stelo,

steht doch alles schon in den Beiträgen:

Delphi-Quellcode:
var
  min: Extended;
  UhrZeit: Extended;
  AnfangsUhrZeit: Extended;
  I: Integer;
begin
  AnfangsUhrZeit:= strToTime('02:00');
  min:= strToTime('00:01');
  for I := 0 to 61 do
  begin
    UhrZeit:= AnfangsUhrZeit+(min*i);
    ShowMessage(FormatDateTime('HH:NN',UhrZeit));
  end;
end;
Bis bald Chemiker

Stelo 19. Mai 2008 22:57

Re: String To Int/Time
 
Ja schon klar.
Also mein Code sieht jetzt wie folgt aus:

Delphi-Quellcode:
min:= strToTime('00:01');
          for j:= 0 to 29 do
                begin
                  if StrToTime(uhrzeit) = StrToTime(copy(zeile,1,pos(';',zeile)-1)) + (min*j) then
                  begin
                    showmessage ('Zu dieser Zeit spielt bereits eine andere Band.');
                    abort;
                  end;
                end;
Nun kommt zwar meine Fehlermeldung, wenn ich genau die gleiche Zeit eingebe. Doch wenn meine Zeit denn 10min größer ist, meckert er komischer Weise nicht mehr rum! Oo

Seht ihr vllt. den Fehler?

Und Danke noch mal für die Hilfe.

lbccaleb 19. Mai 2008 23:04

Re: String To Int/Time
 
Delphi-Quellcode:
var
  TimeToAdd: TDateTime;
  NeueUhrzeit: String;
begin
  TimeToAdd := StrToTime(Edit1.Text);
// jetzt kannst du mit folgenden bsp zb sekunden min und so addieren (die 1 kann auch geändert werden zu 20 oder weiß ich was):

  TimeToAdd := IncMinute(TimeToAdd, 1); //addiert ne min
  TimeToAdd := IncHour(TimeToAdd, 1); //addiert ne stunde
  TimeToAdd := IncSecond(TimeToAdd, 1); //addiert ne sekunde
  TimeToAdd := IncMilliSecond(TimeToAdd, 1); //addiert ne millisekunde


//und dann noch alles wieder in einen string gewandelt:
  NeueUhrzeit := TimeToStr(TimeToAdd);

end;
so sollte es eigentlich gehen, nicht getestet!!

edit verständnis halber noch was geändert!!

Chemiker 19. Mai 2008 23:27

Re: String To Int/Time
 
Hallo Stelo,

Delphi-Quellcode:
StrToTime(copy(zeile,1,pos(';',zeile)-1))
Was kommt hier raus???

Bis bald Chemiker

Stelo 19. Mai 2008 23:44

Re: String To Int/Time
 
Zitat:

Zitat von Chemiker
Hallo Stelo,

Delphi-Quellcode:
StrToTime(copy(zeile,1,pos(';',zeile)-1))
Was kommt hier raus???

Bis bald Chemiker

Da haben wir den Fehler.
Das gibt irgend ein seltsames Datum aus, obwohl es ja eigtl. eine Uhrzeit ist. :cry:

mkinzler 20. Mai 2008 06:31

Re: String To Int/Time
 
Ein TDateTime besteht aus einem datum und einem Zeitwert. Es handelt sich um einen Double, bei dem vor dem komma das datum und nach dem Komma die Uhrzeit steht. Falls du den 31.12.1899 als Datum meinst, entspricht das dem Wert 0.

Stelo 20. Mai 2008 11:18

Re: String To Int/Time
 
Zitat:

Zitat von mkinzler
Ein TDateTime besteht aus einem datum und einem Zeitwert. Es handelt sich um einen Double, bei dem vor dem komma das datum und nach dem Komma die Uhrzeit steht. Falls du den 31.12.1899 als Datum meinst, entspricht das dem Wert 0.

achso ok, danke. Ich hab jetzt eine Variable vom Typ TTime genommen und es klappt.

Also d.h. dieser Teil funktioniert jetzt wieder:
StrToTime(uhrzeit) = StrToTime(copy(zeile,1,pos(';',zeile)-1))

Nur das mit dem x Minuten hochzählen will einfach nicht funktionieren.
IncMinute klappt bei mir irgendwie auch nicht (Undeclared indentifier). Hab ich etwas übersehen?

EDIT:
Um euch mein Problem noch mal genauer zu erklären (ich hatte vorher nämlich einen kleinen Denkfehler) erklär ich es eben noch mal ...

Und zwar ist es so, dass uhrzeit von dem Anwender eingegeben wird. zeile,1,pos(';',zeile)-1 ist eine in der TStringList gespeicherte Zeit. Nun sollen alle Zeiten, die in der TStringList gespeichert sind durchgegangen werden.
Doch da jede Band 29min spielen muss, muss die eingegeben Uhrzeit um 29min hochgezählt werden um festzustellen, dass nicht nach 15min schon eine andere Band spielen würde.
Ich hoffe ihr versteht jetzt mein Problem und findet den Fehler nun vllt. eher! :) Vielen Dank noch einmal für die Mühe.

lbccaleb 20. Mai 2008 12:03

Re: String To Int/Time
 
Zitat:

Zitat von Stelo
Nur das mit dem x Minuten hochzählen will einfach nicht funktionieren.
IncMinute klappt bei mir irgendwie auch nicht (Undeclared indentifier). Hab ich etwas übersehen?

ja bestimmt, du musst die unit "dateutils" unter uses einbinden!!

also so:


Delphi-Quellcode:
uses
  windows,
  sysutils,
  ...
  dateutils, //hier die dateutils eintragen, die reihenfolge ist dabei unwichtig, wo du sie einfügst!!
  forms;

Stelo 20. Mai 2008 12:08

Re: String To Int/Time
 
Vielen Dank, genau das war der fehler. :oops:

ich habe es jetzt wie folgt geschrieben:
Delphi-Quellcode:
if IncMinute(min, j) = StrToTime(copy(zeile,1,pos(';',zeile)-1)) then
Bei gleich Zeit wird wie gewollt die Fehlermeldung ausgegeben, doch wenn jetzt z.B. die gespeicherte Zeit 12:30 ist und ich 12:20 eingebe, wird zwar keine Fehlermeldung ausgegeben, aber es wird auch nichts gespeichert, also wird es anscheind doch abgebrochen. :gruebel: Das ist sehr seltsam.
Also, dass ist jetzt wirklich seltsam. Es funktioneirt jetzt, nur nicht, wenn sich um eine Uhrzeit in der 12 Stunde handelt.
Also mit 14:20 usw. kein Problem, nur bei 12:xx macht es Probleme! :shock:

lbccaleb 20. Mai 2008 12:18

Re: String To Int/Time
 
wie ich jetzt schon paar mal geschrieben hab, schaue dir mal GENAU die dateutils unit an, in der hast du sehr viele funktionen die dir das problem lösen!!!
und so wie du es gerade gemacht hast, würd ich es nicht machen, da es nicht nötig ist, den timestring noch mit pos und copy usw zu zerlegen und drinn umherzustückeln, dafür gibt es alles funktionen!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 Uhr.
Seite 3 von 4     123 4      

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