Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi zahl in Uhrzeit darstellen (https://www.delphipraxis.net/72877-zahl-uhrzeit-darstellen.html)

Hawkeye219 9. Jul 2006 00:53

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:
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;
Gruß Hawkeye

Jelly 9. Jul 2006 01:16

Re: zahl in Uhrzeit darstellen
 
Zitat:

Zitat von Hawkeye219
Ich habe den Code mal ein wenig poliert, damit der Compiler ihn übersetzen kann und der Rechner ohne Laufzeitfehler das richtige Ergbnis liefert

Danke.... Die Quotes hatte ich echt vergessen

Cr3at0r 9. Jul 2006 13:46

Re: zahl in Uhrzeit darstellen
 
und wie bau ich eine function ein? wie eine prozedure?

Michael Habbe 9. Jul 2006 13:49

Re: zahl in Uhrzeit darstellen
 
Zitat:

Zitat von Cr3at0r
und wie bau ich eine function ein? wie eine prozedure?

Im Prinzip ja, aber Du willst ja auch was mit dem Ergebnis der Funktion was anfangen. Also z.B.:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := SecToStr(25000);
end;
Damit die Funktion "gesehen" wird, muss Sie vor dem Aufruf im Button1Click in die Unit eingefügt werden:

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.

Union 9. Jul 2006 14:00

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:
FormatDateTime(ShortTimeFormat, Seconds/(HoursPerDay*MinsPerHour*SecsPerMin));
Wenn man dann noch Format Variablen verwendet ist es auch noch auf der ganzen weiten Welt verwendbar.

Cr3at0r 9. Jul 2006 18:15

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

Cr3at0r 11. Jul 2006 23:28

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

Michael Habbe 12. Jul 2006 00:41

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. Delphi-Referenz durchsuchenInt64: Datentyp zum Speichern von ganzen Zahlen
[/edit]

Delphi-Quellcode:
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
HTH

mfg
Michael

Cr3at0r 12. Jul 2006 16:14

Re: zahl in Uhrzeit darstellen
 
Also ich habe jetzt bei dieser zeile:

Delphi-Quellcode:
irig := floattosec((irib - iriv) / iri2);
label51.caption := sectostr(irig);
irib, iriv und iri2 sind alles als real deklariert genauso wie irig.

den fehler:

"Undefinierter Bezeichner: floattosec"

Meine Frage wie mach ich das jetzt, dass das label irig in der Zeit angibt??

Michael Habbe 12. Jul 2006 18:14

Re: zahl in Uhrzeit darstellen
 
Zitat:

Zitat von Cr3at0r
Also ich habe jetzt bei dieser zeile:
Delphi-Quellcode:
irig := floattosec((irib - iriv) / iri2);
label51.caption := sectostr(irig);
irib, iriv und iri2 sind alles als real deklariert genauso wie irig.
den fehler:
"Undefinierter Bezeichner: floattosec"
Meine Frage wie mach ich das jetzt, dass das label irig in der Zeit angibt??

Ganz einfach: Eine Funktion programmieren, die das gewünschte Ergebnis liefert, benutzen kannst Du den Quelltext, den ich extra für Dich nach Aufforderung kommentiert habe, als Vorlage.

:!: -->> 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.
Seite 2 von 4     12 34      

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