Autor Beitrag
MettMaX
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 29.06.06 17:49 
Hallo,
momentan befinde ich mich in einem abgestumpften Zustand geistiger Umnachtung in dem ich nur noch den unsaubersten Müll programmiere....
Ich habe jetzt länger an einem Programm gearbeitet. In einer Funktion dieses Programmes soll ein String wie zb: 40h 48m 23s oder auch
4h 8m 2s in die Variabeln
-stunden
-minuten
-sekunden
umgeschrieben werden.

Ich weiß dass es Funktionen wie explode, pos, copy usw gibt. Doch damit hab ich es nie geschafft, weil das Trennzeichen halt nicht immer dasselbe ist.
Deswegen habe ich das ganze sehr unschön mit einer for- mit vielen verschachtelten if-Schleifen probiert, das hat geklappt, bis mein Delphi sich mit einer mysteriösen Fehlermeldung verabschiedet hat und ich natürlich nichts gespeichert hatte.
Jetzt habe ich daran gedacht einfach das "h" "m" "s" in meinem String durch ";" zu replacen und dann explode zu verwenden.
Aber ich weiß, dass ich in diesem Zustand in dem ich mich gerade befinde nur noch Bruch produziere, durch den ich 2 Tage später nicht mehr durchblicke. Deswegen will ichs ordentlich haben.

Klingt jetzt wie eine Aufforderung "macht mal", solls aber nicht sein, aber vllt habt ihr ja einen passenden Codeschnipsel rumliegen oder einfach leichtere Ideen.

Grüße
Max
der Berliner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: Do 29.06.06 18:09 
Hallo
wenn ich dich richtig verstanden habe könntest du das hier mal probieren:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
Var
  Zeit:String ;
  CodeZeit:TDateTime;
  Std,min,sek,msec:Word;
begin
Zeit:='8:4:2';
CodeZeit:=StrToTime(Zeit);
Decodetime(CodeZeit,Std,min,sek,msec);
ShowMessage(IntTostr(Std));
end;

Gruß

_________________
[b]Ich weiß nicht immer, wovon ich rede. Aber ich weiß, dass ich recht habe.[b]
MettMaX Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 29.06.06 20:18 
Hallo
Danke erstmal, an sowas hatte ich jetzt zwar eigentlich nicht gedacht, aaaaaber, ich konnte es für meine Zwecke gut umfunktionieren!

So, jetzt hab ich ein neues Problem ;)
ich möchte die Zeit die ich mit deinem Code erzeugt habe, in Sekunden umrechnen.

ausblenden Delphi-Quelltext
1:
 gesamt := (StrToInt(TimeToStr(Std)) * 3600) + (StrToInt(TimeToStr(min)) * 60) + StrToInt(TimeToStr(sek));					


Verursacht einen Fehler [...]class EConvertError with message "00:00:00" is not a valid integer value[...] ... da hat er sogar recht :?


Gruß
Max
root_at_localhost
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 191



BeitragVerfasst: Do 29.06.06 20:28 
sind nicht Std, Min, etc. schon als Integertypen definiert? Dann kannst du dir nämlich das (StrToInt(TimeToStr(Std)) usw. schenken und einfach nur
ausblenden Delphi-Quelltext
1:
gesamt := (Std * 3600) + (min * 60) + sek;					

schreiben...
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 30.06.06 00:11 
Hallo MettMaX,

erstmal :welcome: in der Entwickler-Ecke.

Durch diesen Thread habe ich mich wieder an eine Funktion erinnert.
Die Funktion findest Du jetzt in der Delphi-Library:
...Zeitwerte aus String extrahieren und berechnen

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )