Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Canvas.Polygon und Dynamisches Array of TPoint (https://www.delphipraxis.net/155779-canvas-polygon-und-dynamisches-array-tpoint.html)

Sim_Star 8. Nov 2010 08:37

Canvas.Polygon und Dynamisches Array of TPoint
 
Hallo, ich habe gerade das Problem, dass ich in einer eigenen Klasse ein Dynamisches Array vom Type TPoint erstellt habe.
Dieses möchte ich dann in der Funktion Canvas.Polygon zum Zeichnen übergeben.

Doch beim Compilieren funktioniert es nicht und er bleibt unterhalbe dieser Codezeile hängen.

Delphi-Quellcode:
Type THolder = record
      Polygon : array of TPoint;
      HolderPointCount : integer;
      HolderBrushColor : TColor;
      HolderPenColor : TColor;
      HolderPenWidth : TColor;
end;

...

FHolders : array of THolder;

...

self.FImage.Canvas.Polygon(FHolders[i - 1].Polygon);
das hier ist die Porblemzeile die nicht funktionieren will:

Delphi-Quellcode:
self.FImage.Canvas.Polygon(FHolders[i - 1].Polygon);
aber wieso?

Was mache ich falsch, bzw wo ist hier der Denkfehler?

LG Marco

DeddyH 8. Nov 2010 08:57

AW: Canvas.Polygon und Dynamisches Array of TPoint
 
Der Parameter ist ein offenes Array, da kannst Du kein dynamisches übergeben. Siehe auch http://www.delphibasics.co.uk/RTL.asp?Name=Array

Bummi 8. Nov 2010 09:13

AW: Canvas.Polygon und Dynamisches Array of TPoint
 
Kompiliert und läuft beides von D7 bis Delphi XE,
ich weiß leider nicht was bei Dir klemmt
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Type THolder = record
      Polygon : array of TPoint;
      HolderPointCount : integer;
      HolderBrushColor : TColor;
      HolderPenColor : TColor;
      HolderPenWidth : TColor;
end;
var

 i:Integer;
......
......

FHolders : array of THolder;

begin

Canvas.Polygon(FHolders[i - 1].Polygon);

end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
type
 TP=Array of TPoint;
 var
  p:TP;
begin
  SetLength(p,4);
  p[0].X := 10;
  p[0].Y := 10;
  p[1].X := 100;
  p[1].Y := 10;
  p[2].X := 100;
  p[2].Y := 200;
  p[3].X := 10;
  p[3].Y := 10;
  Canvas.Polygon(p)
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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