Hi,
also ich arbeite wie in meine vorherigen Fragen an einem Programm welches nach einer Zahl fragt und dann muss man so oft klicken wie man eingegeben hat.
Nun wäre es toll wenn ich die zeit stoppen könnte für z.B. 100 Klicks.
Meine grobe Vorstellung ist das wenn man auf der Form2 OK klickt, der Timer startet und wenn der Wert minuszahl = 0 ist der Timer aufhört und dann das Ergebnis präsentiert.
Vielen Dank schonmal im Voraus.
MfG
Tristan
schau Dir mal die Funktionen GetTickCount und GetTickCount64 an.
(wenlche Version von Delphi benutzt Du eigentlich?)
Ich hab Delphi 7
ah, das beste Delphi, das Borland je gemacht hat. Allerdings legtEmbarcadero jetzt ein ziemliches Tempo vor in Sachen Delphi-Entwicklung.
Also ich hab mit Google gesucht und folgendes gefunden:
at := GetTickCount; // Anfangszeit
fn := fib(n);
et := GetTickCount; // Endzeit
eIterativ.text := IntToStr(fn);
eIterZeit.text := IntToStr(et-at);
Ich werde daraus aber nicht schlau.
Könntest du mir ein bisschen unter die Arme greifen, Niels?
Schonmal vielen Dank im Voraus.
MfG
Tristan
1 „Gefällt mir“
Die Funktion gibt Dir die Millisekunden seit Einschalten des Rechners.
HIlfe
Also ich bin jetzt schon relativ weit, denke ich.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
t1 : integer;
t2 : integer;
time1 : String;
time2 : String;
time3 : String;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
t1:=Gettickcount;
t2:=Gettickcount;
time1 := IntToStr(t1);
time2 := IntToStr(t2);
time3 := time2 - time1
Showmessage (time3)
end;
end.
Aber Delphi sagt mir bei Showmessage (time3):
[Fehler] Unit1.pas(39): Operator ist auf diesen Operandentyp nicht anwendbar.
Was hab ich falsch gemacht?
MfG
Tristan
1 „Gefällt mir“
time1 : String;
time2 : String;
time3 : String;
was hast Du eigentlich immer mit Deinen Strings?
time1 := IntToStr(t1);
wozu?
time2 := IntToStr(t2);
wozu?
time3 := time2 - time1
hier kommt der Fehler
Showmessage (time3)
nicht hier
1 „Gefällt mir“
Hi,
weil wenn ich das so machen würde:
var
Form1: TForm1;
t1 : integer;
t2 : integer;
t3 : integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
t1:=Gettickcount;
t2:=Gettickcount;
t3 := t1-t2 ;
Showmessage (t3)
end;
kommt die Fehlermeldung:
[Fehler] Unit1.pas(35): Inkompatible Typen: ‚String‘ und ‚Integer‘
Also hab ich integer in string umgewandelt.
Was henau ist denn jetzt falsch? Wie würdest du es machen?
MfG
Tristan
1 „Gefällt mir“
Habs hinbekommen. Danke.
Quellcode:
var
Form1: TForm1;
t1 : integer;
t2 : integer;
t3 : integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
t1:=Gettickcount;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
t2:=Gettickcount;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
t3 := t2-t1 ;
ShowMessage(IntToStr(t3))
end;
end.
Bis bald, denk ich mal. 
Hallo,
nachdem Du das jetzt hinbekommen hast, hier noch eine von mir etwas verbesserte Version:
var
Form1: TForm1;
implementation
{$R \*.dfm}
var
t1 : DWord; //DWord ist ein vorzeichenloser Integer...
t2 : DWord; //und der richtige Typ für GetTickCount
//Integer geht aber etwas eingeschränkt auch
procedure TForm1.Button1Click(Sender: TObject);
begin
t1:=Gettickcount;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
t2:=Gettickcount;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ShowMessage(IntToStr(t2-t1))
end;
end.
Auch wenn es im ersten Moment kleinkariert erscheint. Variablen sollten immer so lokal wie möglich deklariert werden (also nur in der Unit oder Funktion gültig sein, in der sie benötigt werden).
Spätestens, wenn Du mal ein Projekt hast, in dem mehrere Units Variablen mit gleichem Namen veröffentlichen kommst Du ins schwimmen.
Solche Fehler sind dann ganz schlecht zu finden!
Aber…
Wenn ich das jetzt so mache:
ShowMessage(IntToStr(t2-t1))
oder so
t3 := t2-t1;
ShowMessage(IntToStr(t3));
Kann ich garnichts anderes mehr schreiben. Also ich meine etwa wie:
„Du hast 1416 millisekunden gebraucht“
Wie wäre das zu realisieren?
Kann ich garnichts anderes mehr schreiben. Also ich meine etwa
wie:
„Du hast 1416 millisekunden gebraucht“
Wie wäre das zu realisieren?
ShowMessage(‚Du hast ‚+IntToStr(t3)+‘ Millisekunden gebraucht‘);
oder
ShowMessage(Format(‚Du hast %d Millisekunden gebraucht‘,[t3]));
VG
Jochen
1 „Gefällt mir“
Hat wunderbar geklappt. Danke Jo
MfG
Tristan
1 „Gefällt mir“