![]() |
String To Int/Time
Hallo,
und zwar habe ich jetzt folgendes Problem. Ich habe eine Uhrzeit als string gespeichert, die möchte ich mit einer andere Uhrzeit die als string gespeichert ist vergleichen - so weit kein Problem. Nun ist es aber so, dass wenn z.B. uhrzeit1 + 1-29min = uhrzeit 2 eine fehlermeldung ausgegeben werden soll. Doch wie krieg ich es nun hin, zu einem string die 29min hinzuzurechnen? bzw. kann ich den String iwie in Time oder Int umwandeln? Danke für alle Ideen schon einmal! :) |
Re: String To Int/Time
StrToInt macht einen String zu einer Integer Zahl.
|
Re: String To Int/Time
Aber besser TryStrToInt() oder StrToIntDef()
|
Re: String To Int/Time
StrToTime hört sich vielversprechend an :wink:
|
Re: String To Int/Time
Nun hab ich aber das Problem, dass 16:30 kein zugelassener Int-Wer ist ...
Was wäre denn dafür die beste Methode? Das ':' löschen und dann plus 30 rechnen und das ':' wieder einfügen? Doch was ist, wenn die Uhrzeit nun 16:50 ist und ich + 30min rechne, dann ist das ja keine Uhrzeit mehr! EDIT: Bei StrToTime ... von welchem Datentyp muss dann die variable sein? |
Re: String To Int/Time
Welche Variable? Versuch mal TTime oder TDateTime.
|
Re: String To Int/Time
Wiw wäre es mit TTime oder TDateTime ?
|
Re: String To Int/Time
Hach ... das ist gerade verwirrend. :oops:
Und wenn ich jetzt eine Variable vom Typ TTime habe, wie muss dann die Syntax aussehen, wenn ich eine zeit eingeben will? zeit := '16:20'; und zeit := 16:20; funktionieren nämlich nicht! :( |
Re: String To Int/Time
Delphi-Quellcode:
var
zeit: TTime; ... zeit := StrToTime( '16:20:00'); |
Re: String To Int/Time
Delphi-Quellcode:
const ONE_MINUTE = 1.0 / (24.0 * 60.0);
var Zeit, zeit2: TDateTime; begin zeit := StrToTime('12:01:00'); zeit2 := zeit + 29.0 * ONE_MINUTE; // 29 Minuten dazu ShowMessage(TimeToStr(zeit2)); // sollte 12:30:00 rauskommen |
Re: String To Int/Time
schaue dir mal die unit: "dateutils" an, die sollte dir weiterhelfen können ;-)
|
Re: String To Int/Time
Hallo Stelo,
Delphi-Quellcode:
In Edit8 23:59 eingeben
Edit10.Text:= FormatDateTime('HH:NN', (StrToTime(Edit8.Text)+ StrToTime(Edit9.Text)));
In Edit9 00:29 eingeben Ergebnis in Edit10 = 00:28 Bis bald Chemiker |
Re: String To Int/Time
Danke erst einmal für die vielen netten Antworten.
Das mit ONE_MINUTE funktioniert bei mir leider nicht! :( "Undeclared indentifier" Alles andere hat so weit geklappt. Aber wie ist es denn, wenn ich in einer for schleife von 1 bis 29 die Uhrzeit je um eine Minute hochzählen möchte? Denn wenn ich z.B. StrToTime('00:j:00') oder s.ä. verwende, dann funktioniert das ja dann bei 5 z.B. nicht, weil dann ja 05 da stehen müsste. habt ihr vllt. eine Idee? :) |
Re: String To Int/Time
Zitat:
Delphi-Quellcode:
const ONE_MINUTE = 1.0 / (24.0 * 60.0);
|
Re: String To Int/Time
Delphi-Quellcode:
if j<10 then
str:='0'+IntToStr(j); |
Re: String To Int/Time
Also
StrToTime('00:str:00') funktioniert leider überhaupt nicht! :( Und ich habs auch versucht mit ... if StrToTime(uhrzeit) = StrToTime(copy(zeile,1,pos(';',zeile)-1)) + j * ONE_MINUTE then da gibt es zwar eine fehlermeldung, wenn es genau die gleiche Uhrzeit ist ... aber hochzählen tut es leider auch nicht! :( |
Re: String To Int/Time
str ist ja keine Zahl
|
Re: String To Int/Time
Hallo Stelo,
oder so:
Delphi-Quellcode:
Bis bald Chemiker
var
min: Extended; UhrZeit: Extended; I: Integer; begin min:= strToTime('00:01'); for I := 0 to 61 do begin UhrZeit:= min*i; ShowMessage(FormatDateTime('HH:NN',UhrZeit)); end; end; |
Re: String To Int/Time
nochmal:
codiere alles in TDateTime und verwende dann die unit dateutils, mit dieser kannst du so ziemlich alles mit TDateTime machen.... edit: und such mal in der delphi hilfe nach: "Datetime routines" unglaublich was man dort alles findet ;-) |
Re: String To Int/Time
Zitat:
Es funktioniert aber leider trotzdem noch nicht so richtig. Den ich will die Uhrzeit (also die Minutenzahl) ja nicht nur ausgeben, sondern zu .. eben z.B. 16:30 dazu rechnen. Und ich krieg das einfach nicht hin! O.o |
Re: String To Int/Time
Hallo Stelo,
steht doch alles schon in den Beiträgen:
Delphi-Quellcode:
Bis bald Chemiker
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; |
Re: String To Int/Time
Ja schon klar.
Also mein Code sieht jetzt wie folgt aus:
Delphi-Quellcode:
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
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; Seht ihr vllt. den Fehler? Und Danke noch mal für die Hilfe. |
Re: String To Int/Time
Delphi-Quellcode:
so sollte es eigentlich gehen, nicht getestet!!
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; edit verständnis halber noch was geändert!! |
Re: String To Int/Time
Hallo Stelo,
Delphi-Quellcode:
Was kommt hier raus???
StrToTime(copy(zeile,1,pos(';',zeile)-1))
Bis bald Chemiker |
Re: String To Int/Time
Zitat:
Das gibt irgend ein seltsames Datum aus, obwohl es ja eigtl. eine Uhrzeit ist. :cry: |
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.
|
Re: String To Int/Time
Zitat:
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. |
Re: String To Int/Time
Zitat:
also so:
Delphi-Quellcode:
uses
windows, sysutils, ... dateutils, //hier die dateutils eintragen, die reihenfolge ist dabei unwichtig, wo du sie einfügst!! forms; |
Re: String To Int/Time
Vielen Dank, genau das war der fehler. :oops:
ich habe es jetzt wie folgt geschrieben:
Delphi-Quellcode:
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.
if IncMinute(min, j) = StrToTime(copy(zeile,1,pos(';',zeile)-1)) then
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: |
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!! |
Re: String To Int/Time
Zitat:
23.05.2008;15:30;Anglerversammlung und da muss ich ja vorher die Uhrzeit "rausschneiden". Ich habe jetzt mal die unit angesehen und es mit MinuteSpan() umgesetzt. Es scheint auch super zu funktionieren! :) Vielen Dank! ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 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