Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Überprüfung eines Image (https://www.delphipraxis.net/82462-ueberpruefung-eines-image.html)

MisterScary 13. Dez 2006 19:07

Re: Überprüfung eines Image
 
Delphi-Quellcode:
For i := xstelle to xstelle+breite do
begin
  For j := ystelle to ystelle - hoehe - (breite div 2) do
  begin
    ImBebauung.Canvas.Pixels[i,j]<> clwhite;
  end;
end;
Das hab ich am Anfang in die Prozedur eingefügt die ein Haus bauen soll. Aber wenn ich das Programm jetzt ausführen möchte kommt folgendes:

Zitat:

[Error] mBebauung.pas(96): E1019 For loop control variable must be simple local variable
[Error] mBebauung.pas(98): E1019 For loop control variable must be simple local variable
[Error] mBebauung.pas(139): E1019 For loop control variable must be simple local variable
[Error] mBebauung.pas(141): E1019 For loop control variable must be simple local variable
[Error] mBebauung.pas(183): E1019 For loop control variable must be simple local variable
[Error] mBebauung.pas(185): E1019 For loop control variable must be simple local variable
[Fatal Error] pBebauung.dpr(5): F2063 Could not compile used unit 'mBebauung.pas'

Jowo 13. Dez 2006 19:11

Re: Überprüfung eines Image
 
Die Fehlermeldung kenne ich, allerdings auf deutsch:
"Die for-Schleifenvariable muss eine einfache, lokale Variable sein"

Diese hatte ich als ich anfing zu programmieren dauernd.
Du musst wahrscheinlich die Variablen i und j in der Prozedur deklarieren, in der deine for-Schleife steht.
Zeig mal etwas mehr Quelltext!

MisterScary 13. Dez 2006 19:13

Re: Überprüfung eines Image
 
Na gut dann poste ich am besten mal alles *G*

Delphi-Quellcode:
unit mBebauung;

interface

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

type
  TBebauung = class(TForm)
    ImBebauung: TImage;
    BtStrasse: TButton;
    BtRotes_Haus: TButton;
    BtSchwarzes_Haus: TButton;
    BtGelbes_Haus: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edxstelle: TEdit;
    Edystelle: TEdit;
    Edbreite: TEdit;
    Edhoehe: TEdit;
    BtZuruecksetzen: TButton;
    BtBeenden: TButton;
    Label5: TLabel;
    procedure BtBeendenClick(Sender: TObject);
    procedure BtZuruecksetzenClick(Sender: TObject);
    procedure BtGelbes_HausClick(Sender: TObject);
    procedure BtRotes_HausClick(Sender: TObject);
    procedure BtSchwarzes_HausClick(Sender: TObject);
    procedure BtStrasseClick(Sender: TObject);
  private
    { Private declarations }
    var xstelle : Integer;
    var ystelle : Integer;
    var breite : Integer;
    var hoehe : Integer;
    var abstand : Integer;
    var i : Integer;
    var j : Integer;
  public
    { Public declarations }
  end;

var
  Bebauung: TBebauung;

implementation

{$R *.dfm}

procedure TBebauung.BtStrasseClick(Sender: TObject);
begin
 with ImBebauung.Canvas do
  begin
   abstand:= 20;
   MoveTo (0,480);
   Brush.Color:=clBlack;
   Rectangle (0,480,1000,420);
   Pen.Color:=clWhite;
   MoveTo (abstand-20,450);
   LineTo (abstand,450);
   repeat
   begin
   abstand:= abstand +20;
   MoveTo (abstand,450);
   abstand:= abstand + 20;
   LineTo (abstand,450)
   end
   until abstand > 1000;
   Brush.Color:=clWhite;
   Pen.Color:=clBlack;
   Pen.Width:=0
  end;
end;

procedure TBebauung.BtSchwarzes_HausClick(Sender: TObject);
begin

try
  strtoint(Edxstelle.text);
  strtoint(Edystelle.text);
  strtoint(Edhoehe.text);
  strtoint(Edbreite.text)
except
  showmessage('Bitte geben sie jeweils eine Zahl für Xstelle, Ystelle, Breite und Hoehe an!');
  exit
end;

xstelle:= StrToInt(Edxstelle.text);
ystelle:= StrToInt(Edystelle.text);
breite:= StrToInt(Edbreite.text);
hoehe:= StrToInt(Edhoehe.text);

For i := xstelle to xstelle+breite do
begin
  For j := ystelle to ystelle - hoehe - (breite div 2) do
  begin
    If ImBebauung.Canvas.Pixels[i,j]<> clwhite then showmessage ('Bauplatz ist nicht frei! Das Haus konnte nicht gebaut werden!');
  end;
end;


 with ImBebauung.Canvas do
  begin
   Brush.COlor:=clBlack;
   Pen.COlor:=clBlack;
   Pen.Width:=2;
   Rectangle(xstelle,ystelle,xstelle+breite,ystelle-hoehe);
   MoveTo(xstelle,ystelle-hoehe);
   LineTo(xstelle+breite div 2,ystelle-hoehe-breite div 2);
   LineTo(xstelle+breite,ystelle -hoehe);
   Brush.Color:=clWhite;
   Pen.Color:=clBlack;
   Pen.Width:=0
  end

end;

procedure TBebauung.BtRotes_HausClick(Sender: TObject);
begin

try
  strtoint(Edxstelle.text);
  strtoint(Edystelle.text);
  strtoint(Edhoehe.text);
  strtoint(Edbreite.text)
except
  showmessage('Bitte geben sie jeweils eine Zahl für Xstelle, Ystelle, Breite und Hoehe an!');
  exit
end;

xstelle:= StrToInt(Edxstelle.text);
ystelle:= StrToInt(Edystelle.text);
breite:= StrToInt(Edbreite.text);
hoehe:= StrToInt(Edhoehe.text);

For i := xstelle to xstelle+breite do
begin
  For j := ystelle to ystelle - hoehe - (breite div 2) do
  begin
    ImBebauung.Canvas.Pixels[i,j]<> clwhite;
  end;
end;


 with ImBebauung.Canvas do
  begin
   Brush.COlor:=clRed;
   Pen.COlor:=clRed;
   Pen.Width:=2;
   Pen.Width:=2;
   Rectangle(xstelle,ystelle,xstelle+breite,ystelle-hoehe);
   MoveTo(xstelle,ystelle-hoehe);
   LineTo(xstelle+breite div 2,ystelle-hoehe-breite div 2);
   LineTo(xstelle+breite,ystelle -hoehe);
   Brush.Color:=clWhite;
   Pen.Color:=clBlack;
   Pen.Width:=0
  end;

end;

procedure TBebauung.BtGelbes_HausClick(Sender: TObject);
begin

try
  strtoint(Edxstelle.text);
  strtoint(Edystelle.text);
  strtoint(Edhoehe.text);
  strtoint(Edbreite.text)
except
  showmessage('Bitte geben sie jeweils eine Zahl für Xstelle, Ystelle, Breite und Hoehe an!');
  exit
end;

xstelle:= StrToInt(Edxstelle.text);
ystelle:= StrToInt(Edystelle.text);
breite:= StrToInt(Edbreite.text);
hoehe:= StrToInt(Edhoehe.text);

For i := xstelle to xstelle+breite do
begin
  For j := ystelle to ystelle - hoehe - (breite div 2) do
  begin
    ImBebauung.Canvas.Pixels[i,j]<> clwhite;
  end;
end;


 with ImBebauung.Canvas do
  begin
   Brush.COlor:=clYellow;
   Pen.COlor:=clYellow;
   Pen.Width:=2;
   Pen.Width:=2;
   Rectangle(xstelle,ystelle,xstelle+breite,ystelle-hoehe);
   MoveTo(xstelle,ystelle-hoehe);
   LineTo(xstelle+breite div 2,ystelle-hoehe-breite div 2);
   LineTo(xstelle+breite,ystelle -hoehe);
   Brush.Color:=clWhite;
   Pen.Color:=clBlack;
   Pen.Width:=0
  end;

end;

procedure TBebauung.BtZuruecksetzenClick(Sender: TObject);
begin
 with ImBebauung.Canvas do
  begin
   Brush.Color:=clWhite;
   Pen.Color:=clWhite;
   Rectangle(0,500,1000,0);
   Pen.Color:=clBlack;
  end;
end;

procedure TBebauung.BtBeendenClick(Sender: TObject);
begin
 close
end;

end.

MisterScary 13. Dez 2006 19:17

Re: Überprüfung eines Image
 
Hehe du hattest recht ;-) Thx :thumb:


[Edit]
:cry: Aber Es funktioniert nicht richtig... Die Häuser werden immer noch übereinander gemalt !

Jowo 13. Dez 2006 19:17

Re: Überprüfung eines Image
 
Delphi-Quellcode:
procedure TBebauung.BtSchwarzes_HausClick(Sender: TObject);
----->var i,j: integer;<-----
begin

try
  strtoint(Edxstelle.text);
  strtoint(Edystelle.text);
  strtoint(Edhoehe.text);
  strtoint(Edbreite.text)
except
  showmessage('Bitte geben sie jeweils eine Zahl für Xstelle, Ystelle, Breite und Hoehe an!');
  exit
end;

xstelle:= StrToInt(Edxstelle.text);
ystelle:= StrToInt(Edystelle.text);
breite:= StrToInt(Edbreite.text);
hoehe:= StrToInt(Edhoehe.text);

For i := xstelle to xstelle+breite do
begin
  For j := ystelle to ystelle - hoehe - (breite div 2) do
  begin
    If ImBebauung.Canvas.Pixels[i,j]<> clwhite then showmessage ('Bauplatz ist nicht frei! Das Haus konnte nicht gebaut werden!');
  end;
end;
Die Variablen dürfen nicht oben unter private deklariert werden. Dies muss in der Prozedur selbst geschehen!

Jowo 13. Dez 2006 19:18

Re: Überprüfung eines Image
 
OK. Bitteschön :-D

DP-Maintenance 14. Dez 2006 08:42

DP-Maintenance
 
Dieses Thema wurde von "alcaeus" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Ist eine Delphi-Frage ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz