Problem bei Delphi-Programm

    Problem bei Delphi-Programm

    Hallo, wir sind ein Informatitkurs und haben ein Problem mit dem folgenden Programm:

    Delphi-Code

    1. unit Unit1;
    2. interface
    3. uses
    4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    5. Dialogs, StdCtrls, ExtCtrls;
    6. type
    7. TForm1 = class(TForm)
    8. Button1: TButton;
    9. Edit1: TEdit;
    10. Edit2: TEdit;
    11. Edit3: TEdit;
    12. Edit4: TEdit;
    13. procedure Button1Click(Sender: TObject);
    14. procedure FormCreate(Sender: TObject);
    15. procedure Bot ;
    16. private
    17. { Private-Deklarationen }
    18. public
    19. { Public-Deklarationen }
    20. end;
    21. var
    22. X: integer ;
    23. Y: integer;
    24. Form1: TForm1;
    25. Z : integer ;
    26. LPX : integer ;
    27. LPY : integer ;
    28. {Farbe : TColor ;
    29. dc : HDC ;}
    30. implementation
    31. {$R *.dfm}
    32. procedure TForm1.Button1Click(Sender: TObject);
    33. begin
    34. if Z = 0 then
    35. begin
    36. Z := 1
    37. end
    38. else
    39. Z:= 0;
    40. Edit1.Text:= inttostr(Z);
    41. Bot;
    42. end;
    43. procedure TForm1.FormCreate(Sender: TObject);
    44. begin
    45. LPX:= screen.Width ;
    46. LPY := screen.Height ;
    47. Edit2.Text := inttostr(LPX);
    48. Edit3.Text := inttostr(LPY);
    49. Z:= 1;
    50. Edit1.Text:= inttostr(Z);
    51. end;
    52. procedure TForm1.Bot ;
    53. var Farbe : TColor ;
    54. Farbe2 : TColor ;
    55. dc : HDC ;
    56. begin
    57. Farbe2:=0;
    58. X:=1 ;
    59. Y:=1 ;
    60. repeat
    61. begin
    62. dc := GetDC(0) ;
    63. Farbe := GetPixel(dc, X, Y) ;
    64. if Farbe = Farbe2 then
    65. begin
    66. SetCursorPos(X,Y) ;
    67. Z:= 1;
    68. end ;
    69. if NOT Farbe = Farbe2 then
    70. begin
    71. if not X = LPX then
    72. begin
    73. X:= X+1 ;
    74. end;
    75. if (X = LPX) and (Y = LPY) then
    76. begin
    77. X:= 1;
    78. Y:= 1;
    79. Z:=1;
    80. end ;
    81. if (X=LPX) and Not (Y = LPY) then
    82. begin
    83. X := 1 ;
    84. Y := Y+1 ;
    85. end;
    86. end;
    87. ReleaseDC(0, dc) ;
    88. end;
    89. until Z=1 ;
    90. end;
    91. end.


    Das Programm soll einen schwarzen Pixel auf dem Bildschirm finden und den Curser dann auf diesen Pixel setzen. Das kann es auch prinzipiell, aber nur mit dem Pixel (1/1), die andere Pixel scheint es nicht zu überprüfen...
    Daher unsere Frage an euch, ob ihr uns helfen könnt und uns sagen könnt, wo sich unser Fehler befindet.

    LG Breiner :thumbup:
    Moin... 8o

    Ich mach dann mal die Spaßbremse... :thumbup:

    1. Bitte gebe deinen Controls vernünftige Namen. Einem Außenstehenden fällt es (sinngemäß) schwer zu wissen was in Edit1 liegt wenn Z0 zugewiesen wird.
    ... edtScreenSizeX wäre einer..
    2. Sind euch bei den Variablen die Buchstaben ausgegangen? (X,Y,Z,LPX...) Warum können diese nicht sprechende Namen haben? (Farbe, Farbe2... sind keine... :P )
    ... CurrentPixelColor wäre einer.. :thumbup:
    3. Verfrachte deine Variablen in den private Abschnitt der Form mit F als Prefix. Es gibt keinen vernünftigen Grund globale Variablen zu definieren. PS: "Es geht doch" ist keiner... :P