![]() |
Re: zahl in Uhrzeit darstellen
Ich habe den Code mal ein wenig poliert, damit der Compiler ihn übersetzen kann und der Rechner ohne Laufzeitfehler das richtige Ergbnis liefert:
Delphi-Quellcode:
Gruß Hawkeye
function SecToStr (t: Int64): string;
var DT : TDateTime; begin DT := t / (60 * 60 * 24); Result := Format('%d Tag(e), %s', [Trunc(DT), FormatDateTime('h "Stunden", n "Minuten und" s "Sekunden"', DT)]); end; |
Re: zahl in Uhrzeit darstellen
Zitat:
|
Re: zahl in Uhrzeit darstellen
und wie bau ich eine function ein? wie eine prozedure?
|
Re: zahl in Uhrzeit darstellen
Zitat:
Delphi-Quellcode:
Damit die Funktion "gesehen" wird, muss Sie vor dem Aufruf im Button1Click in die Unit eingefügt werden:
procedure TForm1.Button1Click(Sender: TObject);
begin Label1.Caption := SecToStr(25000); end;
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} function SecToStr (t: Int64): string; var DT : TDateTime; begin DT := t / (60 * 60 * 24); Result := Format('%d Tag(e), %s', [Trunc(DT), FormatDateTime('h "Stunden", n "Minuten und" s "Sekunden"', DT)]); end; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := SecToStr(25000); end; end. |
Re: zahl in Uhrzeit darstellen
Und damit das ganze noch besser lesbarer ist, sollte man statt 24*60*60 lieber die definierten Zeitkonstanten nehmen, z.B.:
Delphi-Quellcode:
Wenn man dann noch Format Variablen verwendet ist es auch noch auf der ganzen weiten Welt verwendbar.
FormatDateTime(ShortTimeFormat, Seconds/(HoursPerDay*MinsPerHour*SecsPerMin));
|
Re: zahl in Uhrzeit darstellen
@Michael:
Wie hängt die Prozedure mit der Funktion zusammen? @All: Was mir glaub ich am meisten hilft, wenn mir einer ma dei Zelen dazu auch erklärt um es nachvoll ziehen zu können. MfG |
Re: zahl in Uhrzeit darstellen
hmmm keine Antworten mehr...ich hoffe ich nerve euch nicht zu sehr damit. :(
Ich kenne mich eben in delphi nicht so aus und darum wäre eine erklärungen u den zeilen der hilfreich wie zb. was ist int64 ist und so. MfG |
Re: zahl in Uhrzeit darstellen
Nochmal die Unit und die wichtigsten Hinweise dahinter.
Um dieses Beispiel nachzubilden, brauchst Du ein leeres Formular (neues Projekt), wo Du einen Button und ein Label rauftust. Anschließend einen Doppelklick auf den Button. [edit] 1. nochmals vereinfacht 2. ![]() [/edit]
Delphi-Quellcode:
HTH
unit Unit1; // war Delphi
// interface // überall, wo ein leerer // Kommentar hintersteht, uses // soll stellvertretend Windows, Messages, SysUtils, Variants, // darstellen, dass diese Classes, Graphics, Controls, Forms, Dialogs, // Zeilen von Delphi StdCtrls; // generiert wurden // type // TForm1 = class(TForm) // Label1: TLabel; // Button1: TButton; // procedure Button1Click(Sender: TObject); // nach Doppelklick auf den Button private // { Private-Deklarationen } // public // { Public-Deklarationen } // end; // // var // Form1: TForm1; // // implementation // // {$R *.dfm} // // die folgende Funktion muss kopiert und in Delphi eingefügt werden // und zwar an genau dieser Stelle, dadurch wird sichergestellt, // dass alle nachfolgenden "ButtonClicks" und andere Funktionen/Prozeduren // diese Benutzerfunktion "sehen" können function SecToStr (sec: Int64): string; // Name der Funktion mit einem // Übergabeparameter vom Typ var // Integer, Rückgabe nach // Verarbeitung des Parameters DT : TDateTime; // lokale Variable // ist ein String, der die // Sekunden umgewandelt hat begin DT := sec / (60 * 60 * 24); // Sekunden umwandeln in Tage // die folgende Zeile kodiert die Tage aus dem "Double" = TDateTime // in einen lesbaren String, der die Angabe Tage enthält Result := IntToStr(Trunc(DT)) + ' Tage'; // Trunc schneidet den // Nachkommaanteil einer // Dezimalzahl ab // IntToStr wandelt Zahl // in String um end; procedure TForm1.Button1Click(Sender: TObject); // begin // // in dieser Zeile wird die selbstgeschriebene Funktion aufgerufen "SecToStr" // und ihr ein Wert mitgegeben (25000 Sekunden) // die Funktion wird ausgeführt und der Rückgabewert (der ein String ist) // im Label ausgegeben Label1.Caption := SecToStr(25000); end; // end. // Finale mfg Michael |
Re: zahl in Uhrzeit darstellen
Also ich habe jetzt bei dieser zeile:
Delphi-Quellcode:
irib, iriv und iri2 sind alles als real deklariert genauso wie irig.
irig := floattosec((irib - iriv) / iri2);
label51.caption := sectostr(irig); den fehler: "Undefinierter Bezeichner: floattosec" Meine Frage wie mach ich das jetzt, dass das label irig in der Zeit angibt?? |
Re: zahl in Uhrzeit darstellen
Zitat:
:!: -->> Nicht alle Funktionen, die man gerne benutzen möchte, gibt es auch, manchmal muss man selbst Hand anlegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 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 by Thomas Breitkreuz