Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Automatische Erkennung ob Pixel in Kreis funktioniert nicht (https://www.delphipraxis.net/166608-automatische-erkennung-ob-pixel-kreis-funktioniert-nicht.html)

MisterKnister 21. Feb 2012 15:43

Automatische Erkennung ob Pixel in Kreis funktioniert nicht
 
Hallo,
ich möchte dass mein Programm automatisch erkennt ob ein Pixel im Kreis liegt oder nicht und diesen gegebenenfalls einfärbt.
(soll nicht per fill geschehen).
Leider funktioniert nur die manuelle Eingabe, aber nicht die komplette suche über das ganze Bild.

Wäre nett, wenn mir jemand helfen oder einen Tipp geben könnte damit ich es hinbekomme.

Code:
procedure TForm1.Button4Click(Sender: TObject);
var
i, j : Integer;
A : TPoint;

begin
try
A.X := i; //StrToInt (Edit3.Text) ; // i;
A.Y := j; //StrToInt (Edit4.Text) ; // j;

for i := 0 to Breit-1 do
 for j := 0 to Hoch-1 do
 begin
 if sqrt(sqr(A.X - M.X) + sqr(A.Y - M.Y)) <= Radius1
 then
 Image1.Picture.Bitmap.Canvas.Pixels[A.X,A.Y] := clBlack ;
end;
 except
ShowMessage ('Fuck my Life!');

end;
end;

Bummi 21. Feb 2012 15:50

AW: Automatische Erkennung ob Pixel in Kreis funktioniert nicht
 
Überleg mal wann (wie oft) hier A.X und A.Y zugewiesen werden ....

himitsu 21. Feb 2012 16:18

AW: Automatische Erkennung ob Pixel in Kreis funktioniert nicht
 
Zitat:

Zitat von Bummi (Beitrag 1152166)
Überleg mal wann (wie oft) hier A.X und A.Y zugewiesen werden ....

Praktisch gesehn garnicht, da i und j an dieser Stelle uninitialisiert sind.

MisterKnister 21. Feb 2012 16:36

AW: Automatische Erkennung ob Pixel in Kreis funktioniert nicht
 
Zitat:

Zitat von Bummi (Beitrag 1152166)
Überleg mal wann (wie oft) hier A.X und A.Y zugewiesen werden ....

Ohje, und daran mache ich echt schon tagelang rum.
Vielen Dank!

Ist jetzt zwar erstmal nur mit i und j als Variablen gelöst, aber mal schaun ob das für den weiteren Verlauf erstmal reicht.

Nochmal Danke! :thumb:

Namenloser 21. Feb 2012 16:37

AW: Automatische Erkennung ob Pixel in Kreis funktioniert nicht
 
MisterKnister, denke daran, dass
Delphi-Quellcode:
:=
keine mathematische Gleichsetzung, sondern eine Zuweisung ist! Delphi führt deine Anweisungen Schritt für Schritt von oben nach unten aus. Jetzt guck dir mal an, wo du A.X bzw. A.Y zuweist, und wo die Schleife beginnt.

Edit: Ok, war etwas zu langsam...

himitsu 21. Feb 2012 17:21

AW: Automatische Erkennung ob Pixel in Kreis funktioniert nicht
 
Zitat:

Zitat von MisterKnister (Beitrag 1152173)
Ohje, und daran mache ich echt schon tagelang rum.

PS: Delphi und vermutlich auch Lazarus sind ganz nett.

In Delphi gibt der Compiler z.B. eine Warnung aus, ala "Variable sei nicht initialisiert".
Wenn man sich das mal durchlesen und auf den Compiler hören würde, dann wäre das Leben viel leichter.

MisterKnister 21. Feb 2012 17:26

AW: Automatische Erkennung ob Pixel in Kreis funktioniert nicht
 
Zitat:

Zitat von himitsu (Beitrag 1152178)
Zitat:

Zitat von MisterKnister (Beitrag 1152173)
Ohje, und daran mache ich echt schon tagelang rum.

PS: Delphi und vermutlich auch Lazarus sind ganz nett.

In Delphi gibt der Compiler z.B. eine Warnung aus, ala "Variable sei nicht initialisiert".
Wenn man sich das mal durchlesen und auf den Compiler hören würde, dann wäre das Leben viel leichter.

(*
Sorry, aber ich bin sozusagen auch noch Delphi Neuling, und deshalb sagen mir diese Hilfen (die ich natürlich lese) allerdings nicht immer etwas was mir zur Lösung hilft, und in diesem Falle stand da auch nichts davon ;)


Aber falls solche Fragen nicht in dieses Forum gehören ist es auch okay und ich werde mir gegebenenfalls ein Noobie Forum suchen.
Soll nicht böse klingen, aber so habe ich deinen Beitrag leider interpretiert.*)

Hilfe somit angekommen =)
Danke!

Namenloser 21. Feb 2012 17:30

AW: Automatische Erkennung ob Pixel in Kreis funktioniert nicht
 
Zitat:

Zitat von MisterKnister (Beitrag 1152180)
Aber falls solche Fragen nicht in dieses Forum gehören ist es auch okay und ich werde mir gegebenenfalls ein Noobie Forum suchen.
Soll nicht böse klingen, aber so habe ich deinen Beitrag leider interpretiert.

Newbie-Fragen sind schon okay. himitsu wollt dir glaub ich nur einen Tipp geben, wie du solche Fehler selbst leichter finden kannst.

himitsu 21. Feb 2012 18:15

AW: Automatische Erkennung ob Pixel in Kreis funktioniert nicht
 
Zitat:

Zitat von NamenLozer (Beitrag 1152182)
himitsu wollt dir glaub ich nur einen Tipp geben, wie du solche Fehler selbst leichter finden kannst.

Jupp.

Delphi meint üblicher Weise Folgendes zu deinem Code, aus Beitrag #1.
Zitat:

[DCC Warnung] Unit7.pas(34): W1036 Variable 'j' ist möglicherweise nicht initialisiert worden
[DCC Warnung] Unit7.pas(33): W1036 Variable 'i' ist möglicherweise nicht initialisiert worden
Und zwar hier.
Delphi-Quellcode:
A.X := i; //StrToInt (Edit3.Text) ; // i;
A.Y := j; //StrToInt (Edit4.Text) ; // j;
Da wird i und j verwendet, obwohl ihnen vorher kein Wert zugewiesen wurde.

Nja, zum Glück bist du nicht auf die Idee gekommen, i und j als globale Variablen zu deklarieren, sondern richtiger Weise lokal. :thumb:
Sonst würde diese Meldung nicht kommen. (ein Grund mehr, warum globale Variablen böse sind)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 Uhr.

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