Autor Beitrag
DaVinciFF7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP
Delphi 2007
BeitragVerfasst: Do 29.01.09 19:48 
Moin und so.
Ich bin momentan am Programmieren eines Programmes, mit dem man schauen kann, wieviele Anschläge man pro Minute auf der Tastatur schafft. Dafür muss ich ja irgendwie die Zeit durch die Anschläge teilen und ausgeben, doch er will irgendwie nicht und gibt mir nur die Fehlermeldung "Incompatible Types "Integer" and "Extented".
Hier auch mal der Quelltext:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Eingabe: TMemo;
    Vorgabe: TMemo;
    Start: TButton;
    Timer1: TTimer;
    Testlaenge: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Ergebnis: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure StartClick(Sender: TObject);
    procedure Keypress(Sender: TObject; var Key: Char);
    procedure Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Laenge: integer;
  Anschlaege: integer;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var i: integer;
begin
Eingabe.Enabled:=false;
i:=(laenge/60)/anschlaege;
Ergebnis.Caption:='Anschläge pro Minute:'+inttostr(i);

end;

procedure TForm1.StartClick(Sender: TObject);
begin
Eingabe.Enabled:=true;
timer1.Interval:=strtoint(testlaenge.text)*1000;
timer1.Enabled:=true;
end;

procedure TForm1.Keypress(Sender: TObject; var Key: Char);
begin
inc(anschlaege);
end;

procedure TForm1.Change(Sender: TObject);
begin
Laenge:=Strtoint(Testlaenge.Text);
end;

end.

_________________
Ich würde ja gerne die Welt verändern...Aber Gott will mir den verdammten Sourcecode nicht geben!
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Do 29.01.09 19:50 
i:=(laenge/60)/anschlaege;

imho ist I=integer aber "/" liefert immer float. Verwende dann "div" oder setze I auf "Double".
Dann sollte es funktionieren.
:-)msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
DaVinciFF7 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP
Delphi 2007
BeitragVerfasst: Do 29.01.09 19:59 
Funktioniert jetz zumindest annähernd ^^ Er gibt immer aus, dass ich 0 Anschläge schaffe, aber das krieg ich schon gelöst :)
Dankeschön

_________________
Ich würde ja gerne die Welt verändern...Aber Gott will mir den verdammten Sourcecode nicht geben!
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: Do 29.01.09 21:55 
Wenn du div verwendest, dann bedenke dass :
div ist eine ganzzahlige Divison. Das heißt, dass 1 div 5 = 0 ist, da es normal 0,2 währen, er aber nur die 0 zurück gibt.
Das führt oft zu Fehlern.

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 29.01.09 22:07 
Ich verstehe die Logik hinter der Berechnung auch nicht wirklich. Was hat das Intervall des Timers damit zu tun? Dieses sollte doch fest sein, warum soll z.B. der Abstand zwischen der Anzeigeaktualisierung von der Länge des Textes abhängen? :shock:
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 29.01.09 22:09 
Bei Divisionen gilt immer: Multiplikationen VOR Divisionen ausführen, da du sonst Genauigkeit verlierst.

ausblenden Delphi-Quelltext
1:
I := (Anschläge * 60div Zeit;					


Wobei die Zeit in Sekunden anzugeben wäre. Wenn Du mit Gleitkommazahlen rbeitest, könnten für Dich auch die Funktionen Floor, Ceil, Trunc und Round interessant sein. Mehr dazu verrät die Hilfe.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.