Autor Beitrag
Zlatan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175



BeitragVerfasst: Mi 16.02.11 16:55 
In diesem Quelltext ist ein Fehler(alles andere ist richtig)
soll eine automatische ampel werden
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button4Click(Sender: TObject);
begin
AutomatikAus:=false;
 repeat
 Button1Click(Sender);
 SetPause(500);
  Button2Click(Sender);
  SetPause(500);
  Button3Click(Sender);
  SetPause(500);
  until AutomatikAus=true;
  end;

end.


Moderiert von user profile iconNarses: Titel geändert, war: "Fehler".
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mi 16.02.11 17:02 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button4Click(Sender: TObject);
begin
  AutomatikAus:=false;
  repeat
    Button1Click(Sender);
    SetPause(500);
    Button2Click(Sender);
    SetPause(500);
    Button3Click(Sender);
    SetPause(500);
  until AutomatikAus=true;
end;


Was denn für eine Art von Fehler?
Wenn du einen Compilationsfehler meinst, würde ich mal dadrauf tippen, dass du die OnClick Prozeduren der Buttons falsch aufrufst. Versuche es mit ButtonX.Click.
Ansonsten müsstest du mal die Prozedur SetPause zeigen und uns erklären, wann AutomatikAus auf true gesetzt wird.

Lg
Zlatan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175



BeitragVerfasst: Mi 16.02.11 17:07 
DEr Fehler ist undefinierter Bezeichner: SetPause
Hier ist der komplette Text
ICh habe aber auch noch eine 2.Unit
Ist für dieses Problem aber eher unwichtig

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:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Rot: TShape;
    Gelb: TShape;
    Gruen: TShape;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    BitBtn1: TBitBtn;
    Button4: TButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  AutomatikAus : boolean;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Rot.Hide;
 Gelb.Hide;
 Gruen.Hide ;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Rot.Visible:=true;
Gelb.Visible:=false;
Gruen.Visible:=false;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Gelb.Visible:=true;
Rot.Visible:=false;
Gruen.Visible:=false;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Gruen.Visible:=true;
Rot.Visible:=false;
Gelb.Visible:=false;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
AutomatikAus:=false;
 repeat
 Button1Click(Sender);
 SetPause(500);
  Button2Click(Sender);
  SetPause(500);
  Button3Click(Sender);
  SetPause(500);
  until AutomatikAus=true;
  end;

end.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 16.02.11 17:13 
Moin!

user profile iconZlatan hat folgendes geschrieben Zum zitierten Posting springen:
DEr Fehler ist undefinierter Bezeichner: SetPause
Der Compiler kennt keine Prozedur/Methode dieses Namens. :nixweiss:

Du hast aber soweiso einen Konzept-Fehler in deinem Ansatz: Die repeat-Schleife ist hier falsch. In einer ereignisorientierten Anwendung solltest du das mit einer TTimer-Komponente lösen. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mi 16.02.11 17:14 
user profile iconZlatan hat folgendes geschrieben Zum zitierten Posting springen:
DEr Fehler ist undefinierter Bezeichner: SetPause
Hier ist der komplette Text

Du hast einfach irgendeine Prozedur in deinen Quelltext geschrieben, die es so nicht std mäßig gibt und wunderst dich, wieso er das nicht compiliert.
Ich vermute mal stark, dass du dir von der Seite die Übung geholt hast : www.spolwig.de/is/u-...lphi_ueb/ueb_1.3.htm .
Das ist aber eine Aufgabe, in der du die Komponenten selber schreiben musst.

Lg

Moderiert von user profile iconNarses: Zitat gekürzt.
Zlatan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175



BeitragVerfasst: Mi 16.02.11 17:16 
Meinst du so was?
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:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
unit uZeit;
(* ******************************************************************** *)
(*                                                                      *)
(* K L A S S E : TZeit                                                  *)
(* -------------------------------------------------------------------- *)
(* Version     : 1.1                                                    *)
(* Autor       : S. Spolwig, OSZ-Handel I, 10997 Berlin                 *)
(*                                                                      *)
(* Beschreibung: stellt ein Objekt ZEIT vom Typ TZeit mit Stopuhrfunk-  *)
(*               tionen zur Verfügung.                                  *)
(* Compiler    : DELPHI 3.0                                             *)
(* Aenderung   : V. 1.0   02-MAY-99                                     *)
(*               V. 1.1   15-MAR-00                                     *)
(* ******************************************************************** *)

interface
(* ==================================================================== *)
uses  Windows, Messages, Sysutils, Forms;


type
  TZeit = class (TObject)
    protected
    Startzeit,
    Stopzeit,
    Laufzeit  : longint;
    public
    function  GetDatum  : string;             virtual;
    function  GetUhrzeit: string;             virtual;
    function  GetStart  : longint;            virtual;
    function  GetStop   : longint;            virtual;
    function  GetStopZeit: longint;           virtual;
    function  GetStopZeitForm : string;       virtual;
    procedure SetPause (millisec : longint);  virtual;
    procedure Start;                          virtual;
    procedure Stop;                           virtual;
  end;

var Zeit : TZeit;

(* ----------------- B e s c h r e i b u n g -------------------------

Oberklasse    : TObject
Bezugsklassen : s.o.

Methoden

GetDatum
  Anfrage: aktuelles Datum liefern im Format : TT.MM.JJ

GetZeit
  Anfrage: aktuelle Uhrzeit liefern im Format : STST:MM.SS

GetStart, GetStop
  Anfrage: liefert Zeitpunkt in ms.

GetStopZeit
  Anfrage: Verstrichene Zeit zwischen Start und Stop in MilliSek.

GetStopZeitForm
   Anfrage: Verstrichene Zeit zwischen Start und Stop im Format 0000:000

Start
  Auftrag: Stopuhr starten

Stop
  Auftrag: Stopuhr anhalten und Laufzeit merken

SetPause
  Auftrag: Zeitschleife in Millisek. starten



 ---------------------------------------------------------------------- *)


implementation
(* ==================================================================== *)

procedure TZeit.Start;
(* -------------------------------------------------------------------- *)
begin
  startzeit := 0;
  startzeit := GetTickCount;
end;

procedure TZeit.Stop;
(* -------------------------------------------------------------------- *)
begin
 stopzeit := 0;
 stopzeit := GetTickCount;
 Laufzeit := Stopzeit - Startzeit ;
end;

function  TZeit.GetStart  : longint;
(* -------------------------------------------------------------------- *)
begin
  Result := Startzeit;
end;


function  TZeit.GetStop  : longint;
(* -------------------------------------------------------------------- *)
begin
  Result := Stopzeit;
end;


function TZeit.GetStopZeit : longint;
(* -------------------------------------------------------------------- *)
begin
  Result := Laufzeit ;
end;


function TZeit.GetStopZeitForm : string;
(* -------------------------------------------------------------------- *)
begin
  if Laufzeit < 1000
  then Result := '0:' + inttostr(Laufzeit)
  else
    begin
      Result := inttostr(Laufzeit DIV 1000) +':' + inttostr(Laufzeit MOD 1000)
    end;
end;

function TZeit.GetDatum : string;
(* -------------------------------------------------------------------- *)
begin
  Result := DateToStr(now)
end;


function TZeit.GetUhrzeit : string;
(* -------------------------------------------------------------------- *)
begin
  Result := TimeToStr(now)
end;

procedure TZeit.SetPause(millisec : longint);
(* -------------------------------------------------------------------- *)
var zeit1 : longint;
begin
  zeit1 := GetTickCount;
  repeat
    application.ProcessMessages;
  until ((GetTickCount - zeit1) > millisec);
end;

initialization
  Zeit := TZeit.create;
end.
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mi 16.02.11 17:22 
Die Prozedur SetPause ist in einer Klasse.
Das heißt, dass du sie nicht einfach wie eine normale Prozedur aufrufen kannst.
Dazu solltest du dich ein bisschen mit dem Thema ObjektOrientierte Programmierung beschäftigen, gibt sehr viele gute Tutorials dazu.
Wenn du dich allerdings (noch) nicht damit beschäftigen willst, dann schreib dir einfach eine Prozedur, die das gleiche macht.
Sprich so =)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure SetPause(millisec : longint);
var zeit1 : longint;
begin
  zeit1 := GetTickCount;
  repeat
    application.ProcessMessages;
  until ((GetTickCount - zeit1) > millisec);
end;


Lg
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 16.02.11 17:22 
Moin!

user profile iconZlatan hat folgendes geschrieben Zum zitierten Posting springen:
Meinst du so was?
Du hast den Namen des Objekts nicht mit angegeben, probier das mal so:
ausblenden Delphi-Quelltext
1:
Zeit.SetPause(500);					

Aber nochmal: die repeat-Schleife gehört (so) nicht in einer ereignisorientierte Anwendung! Hier ein FAQ-Beitrag dazu. :les: :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.


Zuletzt bearbeitet von Narses am Mi 16.02.11 17:37, insgesamt 1-mal bearbeitet
Zlatan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175



BeitragVerfasst: Mi 16.02.11 17:24 
Alles klar, habe den Fehler gefunden:
Es muss heißen:
Zeit.SetPause

und nicht nur SetPause :)

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Ich setze meine Ampel mal als Download rein :)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 16.02.11 17:41 
Moin!

user profile iconZlatan hat folgendes geschrieben Zum zitierten Posting springen:
habe den Fehler gefunden:
Es muss heißen:
Zeit.SetPause
Das hab ich doch oben schon geschrieben... :gruebel:

user profile iconZlatan hat folgendes geschrieben Zum zitierten Posting springen:
Alles klar,
Leider ist offensichtlich überhaupt nix klar, denn ich bin mal gespannt, wie du deine "Automatik" wieder beenden willst... 8) denn du setzt nirgendwo die Variable wieder auf TRUE

Ein letztes mal, vielleicht sind ja doch nicht alle Synapsen verstopft: Der Ansatz mit der repeat-Schleife ist hier ein klarer Konzeptfehler! Mach das besser mit einem Timer. :!:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Zlatan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175



BeitragVerfasst: Mi 16.02.11 17:43 
Das Beenden ist einfach:
ICh setze einfach einen Button, der AutomatikAus true macht

Funktioniert!!!
Hast du schon mal gedownloadet?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 16.02.11 17:47 
Moin!

user profile iconZlatan hat folgendes geschrieben Zum zitierten Posting springen:
ICh setze einfach einen Button, der AutomatikAus true macht
OK, der Code ist oben in deinem Quelltext allerdings noch nicht enthalten. :nixweiss:

user profile iconZlatan hat folgendes geschrieben Zum zitierten Posting springen:
Funktioniert!!!
Hab ich nicht bestritten, ist aber weit weg von brauchbar, oder gar gut. :?

user profile iconZlatan hat folgendes geschrieben Zum zitierten Posting springen:
Hast du schon mal gedownloadet?
Wozu, ich kann´s mir auch so vorstellen. Deine Signalfolge hat allerdings nix mit einer Ampel (jedenfalls nicht in Deutschland) zu tun. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Zlatan Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175



BeitragVerfasst: Mi 16.02.11 17:49 
Da hast du wohl recht :)
ISt ja aber nur ein kleiner fehler