AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

FomatDateTime für gesamtes Programm?

Ein Thema von F1nal · begonnen am 9. Dez 2020 · letzter Beitrag vom 9. Dez 2020
Antwort Antwort
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
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: FomatDateTime für gesamtes Programm?

  Alt 9. Dez 2020, 19:16
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:

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:
const SFormat = 'ss,zzz';

Gesamt := FormatDateTime(SFormat, H)
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).

Geändert von runningsoft ( 9. Dez 2020 um 19:28 Uhr)
  Mit Zitat antworten Zitat
F1nal

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

AW: FomatDateTime für gesamtes Programm?

  Alt 9. Dez 2020, 19:27
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:

Gesamt := FormatDateTime('ss,zzz', H)

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).
Ok aber wir hatten definitiv was im FormCreate was dann fürs gesamte Programm galt. Dann hab ich nur den Namen halt falsch in erinnerung. Irgendeine Idee was dass sein könnte?
Leon
  Mit Zitat antworten Zitat
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FomatDateTime für gesamtes Programm?

  Alt 9. Dez 2020, 19:36
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)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: FomatDateTime für gesamtes Programm?

  Alt 9. Dez 2020, 19:39
Meinst du FormatSettings ?
  Mit Zitat antworten Zitat
F1nal

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

AW: FomatDateTime für gesamtes Programm?

  Alt 9. Dez 2020, 19:46
Meinst du FormatSettings ?
Ja korrekt hab mir das mal angeguckt es müsste FormatSetting.LongDateFormat oder LongTimeFormat gewesen sein.
Vielen Dank an alle
Leon
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 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