Autor Beitrag
10S96
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 03.01.12 18:59 
Hallo. :) Ich habe ein Problem mit meinem Delphi MiniPaint.
Seit einigen Monaten habe ich in der Schule Informatik. Nun soll ich zum ersten Mal etwas programmieren. Ein MiniPaint mit dem man Punkte, freie Linien und "Gummilinien" zeichnen kann. Außerdem soll man Farbe und Dicke variieren können. Ich habe begonnen, doch schon bei den Punkten und Freihandlinen bekam ich Probleme.
Hier mein Quelltext. Ich hoffe ihr könnt mir helfen, denn ich kann mit den Angezeigten Fehlermeldungen leider noch nicht viel anfangen.


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

interface

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

type
  TPaint = class(TForm)
    PnlWerkzeug: TPanel;
    BitBtnFrei: TBitBtn;
    BitBtnPunkt: TBitBtn;
    procedure BitBtnPunktClick(Sender: TObject);
    procedure BitBtnFreiClick(Sender: TObject);
    procedure FormMouseDown (Sender: Tobject; Button: TMouseButton;
                             Shift: TShiftState; X,Y: Integer);
    procedure FormMouseUp (Sender: Tobject; Button: TMouseButton;
                             Shift: TShiftState; X,Y: Integer);
    procedure FormMouseMove (Sender: Tobject; Shift: TShiftState; X,Y: Integer);
  private
    { Private-Deklarationen }
  MausGedrueckt : Boolean;


  public
    { Public-Deklarationen }
  end;

var
  Paint: TPaint;


implementation

{$R *.dfm}



procedure TPaint.BitBtnPunktClick(Sender: TObject);
begin
 BitBtnPunkt.Enabled := False;
 BitBtnPunkt.Enabled := True;

end;

procedure TPaint.BitBtnFreiClick(Sender: TObject);
begin
 BitBtnFrei.Enabled := False;
 BitBtnFrei.Enabled := True;
end;

procedure TPaint.FormMouseDown (Sender:TObject; Button:TMouseButton;
                                Shift:TShifteState; X,Y:Integer);
begin
 MausGedrueckt := True;
 Canvas.MoveTo (X,Y);

begin
 if BitBtnFrei.Enabled = False
  then begin
  MausGedrueckt := True;
  Canvas.MoveTo (X,Y)
  end
  else
   Canvas.Ellipse (X-1,Y-1,X+1,Y+1)
end;

procedure TPaint.FormMouseMove (Sender:TObject; Shift:TShiftState; X,Y:integer);

begin
 if MausGedrueckt
  then Canvas.LineTo(X,Y)
end;

procedure TPaint.FormMouseUp (Sender:TObject; Button:TMouseButton;
                                Shift:TShifteState; X,Y:Integer);
begin
 MausGedrueckt := False
end;

end.




ausblenden Fehlermeldungen:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
[Fehler] Unit1.pas(59): Undefinierter Bezeichner: 'TShifteState'
[Fehler] Unit1.pas(59): Deklaration von 'FormMouseDown' unterscheidet sich von vorheriger Deklaration
[Fehler] Unit1.pas(61): Undefinierter Bezeichner: 'MausGedrueckt'
[Fehler] Unit1.pas(62): Undefinierter Bezeichner: 'Canvas'
[Fehler] Unit1.pas(65): Undefinierter Bezeichner: 'BitBtnFrei'
[Fehler] Unit1.pas(65): 'THEN' erwartet, aber Bezeichner 'Enabled' gefunden
[Fehler] Unit1.pas(68): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(71): ';' nicht erlaubt vor einem 'ELSE'
[Fehler] Unit1.pas(72): Operator oder Semikolon fehlt
[Fehler] Unit1.pas(72): Nicht genügend wirkliche Parameter
[Fehler] Unit1.pas(75): Anweisung erwartet, aber 'PROCEDURE' gefunden
[Fehler] Unit1.pas(83): Deklaration von 'FormMouseUp' unterscheidet sich von vorheriger Deklaration
[Fehler] Unit1.pas(85): Undefinierter Bezeichner: 'MausGedrueckt'
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden



Danke schon mal im Voraus :)

Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Der Rechtschreibfehler im Titel tut mir Leid. Ich meinte natürlich Probleme mit MiniPaint. :oops:
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 03.01.12 20:19 
Hallo und :welcome: in der Entwickler-Ecke!

Bitte verwende für Quellcode die entsprechenden [delphi]-Tags, dann wird er "schöner" dargestellt als im Fließtext. Beispiel:
ausblenden Quelltext
1:
<span class="inlineSyntax"><span class="codecomment">{PROTECTTAG5f3d415ef2f6885db57cb258acf7c728}</span></span>					

Wird:
ausblenden Delphi-Quelltext
1:
var Test: integer;					


Das kannst du nachträglich genauso editieren wie auch den Titel: einfach unten in deinem ersten Beitrag auf user defined image klicken und den Inhalt und/oder Titel ändern.
Ich war aber mal so frei, das gleich zu erledigen :zwinker:


Zum Thema: der Einzige Fehler den ich beim kurzen Überfliegen sehe, ist ein überflüssiges begin in Zeile 59... alles andere dürfte daher kommen dass sich der Compiler daran gründlich verschluckt.
Oh und: Vergleiche von Boolean-Werten auf true oder false sind eine ganz schlechte Idee.

Viele Grüße,
Martok

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."

Für diesen Beitrag haben gedankt: 10S96
10S96 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 03.01.12 22:53 
Danke für die schnelle Antwort und das Verbessern. ;)
Das Weglassen von begin in Zeile 59 reicht leider nicht um es ans Laufen zu bekommen. :(
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mi 04.01.12 01:48 
Zitat:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TPaint.BitBtnPunktClick(Sender: TObject);
begin
 BitBtnPunkt.Enabled := False;
 BitBtnPunkt.Enabled := True;

end;


Das sollte ungefähr gar nichts bewirken, du setzt Enabled erst auf False um es SOFORT wieder auf TRUE zu setzen. Nach dem Klicken ist also alles, wie gehabt. Wenn du den Wert eine Booleans ändern möchtest, schreibe einfach:

ausblenden Delphi-Quelltext
1:
MeinBool := not MeinBool;					


LG

Für diesen Beitrag haben gedankt: 10S96
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173
Erhaltene Danke: 43



BeitragVerfasst: Mi 04.01.12 10:51 
[Fehler] Unit1.pas(59): Undefinierter Bezeichner: 'TShifteState'
[Fehler] Unit1.pas(59): Deklaration von 'FormMouseDown' unterscheidet sich von vorheriger Deklaration

Delphi sagt doch ganz deutlich was nicht in Ordnung ist.
Der Typ nennt sich TShiftState und so steht es auch oben in der Deklaration.

Für diesen Beitrag haben gedankt: 10S96
10S96 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 05.01.12 08:29 
Vielen Dank für eure Hilfe :) jetzt funktioniert es!