Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Integer in Zeit wert übernehmen und ausgeben? (https://www.delphipraxis.net/86615-integer-zeit-wert-uebernehmen-und-ausgeben.html)

Flom 16. Feb 2007 10:53


Integer in Zeit wert übernehmen und ausgeben?
 
Hallo,
habt ihr eine Idee wie ich einem Integer wert umstellen kann das vorne weg ein 0 bei 2 stellen seien sollen sowie vor den beiden letzten zahlen ein : kommen soll... so das am ende ein Zeit Wert entsteht aus 145 soll 01:45 werden.

Hat wer eine Idee ?


Meine erste Idee war ja ffFixed zu nehmen, bis mir dann ein viel das es ja mit einem Komma ausgegeben wird.

Grüße

ste_ett 16. Feb 2007 10:55

Re: Integer in Zeit wert übernehmen und ausgeben?
 
Delphi-Quellcode:
  ShowMessage(
    Format('%.2d:%.2d:%.2d', [1, 45, 0])
  );
.2 bedeutet, dass es mindestens 2 Stellen sein müssen und ggf. mit Nullen aufgefüllt wird. :)

Flom 16. Feb 2007 11:08

Re: Integer in Zeit wert übernehmen und ausgeben?
 
danke für die schnelle Antwort :)
werde es dann mal gleich probieren!
kleine frage am rande: kann ich irgendwie die Meldung "'FileCtrl' ist plattformspezifisch" weg

und wie kann ich am besten Sekunden in Minuten umrechnen da ich nicht auf die selbe Zeit komme wie WinAmp mit der Berechnung 197/60 = 3,283 also 3:28
Aber raus kommen sollen 3:17

jfheins 16. Feb 2007 11:15

Re: Integer in Zeit wert übernehmen und ausgeben?
 
Du musst den Nachkommateil (Frac()) noch mit 0.6 malnehmen ;)

(damit aus einer ganzen Dezimalminute 60 Sekunden werden statt 100)

Also:
Delphi-Quellcode:
Minute := Trunc(Dezimal) + 0.6*Frac(Dezimal);

Hawkeye219 16. Feb 2007 11:17

Re: Integer in Zeit wert übernehmen und ausgeben?
 
Hallo Flom,

warum nimmst du an, daß eine Minute 100 Sekunden enthält? Formatieren kannst du so:

Delphi-Quellcode:
function FormatSeconds (seconds: Cardinal): string;
begin
  Result := FormatDateTime('nn:ss', seconds / SecsPerDay);
end;
Gruß Hawkeye

Flom 16. Feb 2007 11:25

Re: Integer in Zeit wert übernehmen und ausgeben?
 
ich versteh irgendwie den sinn dieser Berechnung dahinter nicht...
Ich sag jetzt also:
Delphi-Quellcode:
   Dezimal:=aAudioFile.Dauer;
   Minute := Trunc(Dezimal) + 0.6*Frac(Dezimal);

   Item.SubItems.Add(FloatToStr(Minute));
Wobei ich noch ein Problem mit dem Format habe wo sag ich denn dort das er sich auf Minute beziehen soll?


Anfügung: Hawkeye219 da ich irgendwie mich immer so mit functionen habe: muss ich die A irgendwo deklarieren B wie bind ich die ein? Ich weiß doofe frage nur will nicht an dauernd rätseln und dann noch mehr post schreiben, da ich dafür zu begriffsstutzig bin

okay hat sich habs hin bekommen

nur was ist nun mit dem FileCRTL ?

jfheins 16. Feb 2007 12:19

Re: Integer in Zeit wert übernehmen und ausgeben?
 
Zitat:

Zitat von Flom
ich versteh irgendwie den sinn dieser Berechnung dahinter nicht...
Ich sag jetzt also:
Delphi-Quellcode:
   Dezimal:=aAudioFile.Dauer;
   Minute := Trunc(Dezimal) + 0.6*Frac(Dezimal);

   Item.SubItems.Add(FloatToStr(Minute));
Wobei ich noch ein Problem mit dem Format habe wo sag ich denn dort das er sich auf Minute beziehen soll?

Wenns funktioniert is ja gut ... das mit dem Format ginge dann so:
Delphi-Quellcode:
   Dezimal:=aAudioFile.Dauer;
   Item.SubItems.Add(IntToStr(Trunc(Dezimal)) + ':' + InttoStr(0.6*Frac(Dezimal)));
;)

IngoD7 16. Feb 2007 12:34

Re: Integer in Zeit wert übernehmen und ausgeben?
 
Zitat:

Zitat von Flom
nur was ist nun mit dem FileCRTL ?

Klick auf Warnung + F1

Flom 16. Feb 2007 12:50

Re: Integer in Zeit wert übernehmen und ausgeben?
 
danke für eure hilfe aber Mazel hat mir geholfen über Projekt -> Optionen -> Compiler Meldung

Flom 16. Feb 2007 15:25

Re: Integer in Zeit wert übernehmen und ausgeben?
 
Huhu,
Ich möchte nun die gesamt Zeit von allen MP3s ausgeben mit Hilfe der Funktion und hatte gedacht das es vielleicht so geht:
Delphi-Quellcode:
function FormatSeconds2 (seconds: Cardinal): string;
begin
  Result := FormatDateTime('hh:nn:ss', seconds / SecsPerDay);
end;
Aber leider nein. Wie kann ich es machen? Addieren lass ich es so:
dauer:=dauer+aAudioFile.Dauer;

die Ausgabe dann so:
Delphi-Quellcode:
LabelZeit.Visible:=True;
Zeit2 := Time;
LabelZeit.Caption:= 'Dauer der Suche: '+TimeToStr(Zeit2 - Zeit);


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 Uhr.

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