![]() |
Delphi-Version: 10.3 Rio
FomatDateTime für gesamtes Programm?
Hallo, wir haben im Unterricht ein kleines Programm geschrieben womit man die Reaktionszeit testen kann. Dafür haben wir die Anfangs und Endzeit genommen und dann den Durchscnitt berechnet. Da für mich aber nur Sekunden und Millisekunden interressant sind würde ich gerne einstellen dass auch nur Millisekunden und Sekunden genutz werden. Wenn ich mich richtig erinnere haben wir dass mit
Delphi-Quellcode:
. Ich hab das Programm mittlwerweile zuhause nachgebaut da ich noch paar sachen verfeinern wollte (dafür gibts oft eine gute Note oder vorzüge in Mitarbeit) allerding kommt bei mir ein Fehler bei FormatDateTime Hier der Code es geht um Zeile 65 in FormCreate (Ebenfalls ist mir auch aufgefallen dass manchmal der Buchstabe nur angezeigt wird wenn man dass Fenster auf Vollbild macht, obwohl ich extra mit Width und Height arbeite dass das nicht Passiert):
FormatDateTime := 'ss,zzz'
Delphi-Quellcode:
unit mReaktionszeit;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type TStimulus = record x, y : integer; Zeichen : char; end; Tfm_Reaktionstest = class(TForm) p_Control: TPanel; lb_Versuche: TLabel; ed_Versuche: TEdit; lb_Zeit: TLabel; bt_Start: TButton; lb_Buchstabe: TLabel; procedure FormCreate(Sender: TObject); procedure bt_StartClick(Sender: TObject); procedure bt_StartKeyPress(Sender: TObject; var Key: Char); private var Anfang, Ende, H : TDateTime; var Anzahl, Erfolg : integer; var Buchstabe : TStimulus; var Gesamt : string; procedure SetzenAuswerten; procedure Zufall; public { Public-Deklarationen } end; var fm_Reaktionstest: Tfm_Reaktionstest; implementation {$R *.dfm} procedure Tfm_Reaktionstest.bt_StartClick(Sender: TObject); begin Anzahl := StrToInt(ed_Versuche.text); Erfolg := 0; Anfang := Time; lb_Zeit.Visible := false; lb_Buchstabe.Visible := true; SetzenAuswerten end; procedure Tfm_Reaktionstest.bt_StartKeyPress(Sender: TObject; var Key: Char); begin if uppercase(Key) = lb_Buchstabe.caption then begin Zufall; Erfolg := Erfolg + 1; SetzenAuswerten; end; end; procedure Tfm_Reaktionstest.FormCreate(Sender: TObject); begin randomize; formatdatetime := 'ss,zzz'; Zufall; end; procedure Tfm_Reaktionstest.SetzenAuswerten; begin if Anzahl <> Erfolg then begin lb_Buchstabe.caption := Buchstabe.Zeichen; lb_Buchstabe.Top := Buchstabe.y; lb_Buchstabe.Left := Buchstabe.x; end else begin Ende := Time; H := (Ende - Anfang) / Anzahl; Gesamt := timetostr(H); lb_Zeit.Caption := 'Durchschnittszeit pro Buchstabe: ' + Gesamt; lb_Zeit.Visible := true; lb_Buchstabe.Visible := false; end; end; procedure Tfm_Reaktionstest.Zufall; begin Buchstabe.Zeichen := chr(random(26)+65); Buchstabe.y := random(fm_Reaktionstest.Height - 70) + 70; Buchstabe.x := random(fm_Reaktionstest.Width); end; end. |
AW: FomatDateTime für gesamtes Programm?
Hier bringst Du was durcheinander.
FormatDatetime ist eine Funktion, die Dir einen Wert vom Typ TDateTime oder auch nur TTime formatiert als String zurück gibt. Prinzipiell müsste die Funktion für Dein Beispiel in der Prozedur Setzenauswerten etwa so angewendet werden:
Delphi-Quellcode:
Gesamt := FormatDateTime('ss,zzz', H)
Wenn Du in Deinem Programm die Formatierung an mehreren Stellen vornehmen musst, könntest Du auch eine Konstante deklarieren, die du dann in Deine jeweilige formatierte Ausgabe der Zeit einbaust:
Delphi-Quellcode:
Die Definition "FormatDateTime" im FormCreate muss raus. So wie es dort steht, sieht es wie eine Variablendeklaration aus, aber es gibt nirgendwo eine Variable FormatDatetime (wäre auch kein guter Name für eine solche).
const SFormat = 'ss,zzz';
Gesamt := FormatDateTime(SFormat, H) |
AW: FomatDateTime für gesamtes Programm?
Zitat:
|
AW: FomatDateTime für gesamtes Programm?
Vielleicht habt Ihr auch irgendwo eine globale Variable definiert, die Ihr dann im FormCreate initialisiert habt:
Delphi-Quellcode:
private
{ Private-Deklarationen } var SFormat: string; //im FormCreate SFormat := 'ss,zzz'; //und in Deiner Ausgabeprozedur: Gesamt := FormatDateTime(SFormat, H) |
AW: FomatDateTime für gesamtes Programm?
Meinst du FormatSettings ?
|
AW: FomatDateTime für gesamtes Programm?
Zitat:
Vielen Dank an alle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:07 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