Einzelnen Beitrag anzeigen

F1nal

Registriert seit: 8. Mai 2020
Ort: Brandenburg
10 Beiträge
 
Delphi 10.3 Rio
 
#1

FomatDateTime für gesamtes Programm?

  Alt 9. Dez 2020, 18:50
Delphi-Version: 10.3 Rio
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 FormatDateTime := 'ss,zzz' . 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):
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.
Leon
  Mit Zitat antworten Zitat