Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pointarray (https://www.delphipraxis.net/84939-pointarray.html)

schuetzejanett 23. Jan 2007 20:25


Pointarray
 
hallo brauche viele punktarrays die meistens aus 4 punkten bestehen. Kann ich ein Array auch nur mit einer Codezeile definieren.

Also das ich nicht immer schreiben muss
Delphi-Quellcode:
  var pArray : Array[0..3] of TPoint;
  ...

   pArray[0] := ..;
   pArray[1] := ..;
   ..
ich will viele polygonregionen definieren. und möchte nicht jedesmal erst diese 4 zeilen nicht jedesmal schreiben sondern es wäre mir am liebsten wenn ich es so in der art schreiben könnte

Delphi-Quellcode:
  Rgn := CreatePolygonRgn((Point(192, 70), Point(185,100), Point(162,99), Point(157,62)),4,winding)
geht das oder muss ich wirklich jedes mal erst die 4 Zeilen schreiben in der ich das Pointarray fülle?

s.h.a.r.k 23. Jan 2007 20:29

Re: Pointarray
 
Ich kenne das nur aus PHP, dass man ein Array in "einer Zeile" so definieren kann, wobei ich dazu sagen muss, dass das kein schöner Programmierstil ist. Wer kann das später auf Anhieb noch lesen?

In Delphi geht das meines Erachtens nach nicht. Schreibe dir an dieser Stelle doch einfach eine eigene Methode, die dir das erledigt! Dort kannst du dann auch einfach bestimmen, was alles abgearbeitet werden soll.

schuetzejanett 23. Jan 2007 21:36

Re: Pointarray
 
hallo,

danke für die schnelle Antwort.
Habe deine Idee umgestzt und mir eine Methode geschrieben die mir aus 8 integerwerten ein Pointarray generiert.
Nun habe ich mir überlegt das es doch einfacher wäre in eine Datei die Punkte zu schreiben und dann die regionen automatisch mit einer Routine zu erstellen habe aber keine ahnung wie ich das Anfangen soll. Also was für ein dateityp die Dateis sein muss ob ich die Werte mit Komma, Leerzeichen oder tabstopp trennen soll und wie die einzelnen reginonen also nach acht werten return drücken . Und als letzzes wie ich die werte dann genau auslese.

Muetze1 24. Jan 2007 08:53

Re: Pointarray
 
Wenn CreatePolygonRgn das Pointer Array als Const deklariert hat, dann geht folgendes:

Delphi-Quellcode:
Rgn := CreatePolygonRgn([Point(192, 70), Point(185,100), Point(162,99), Point(157,62)],4,winding)

Hawkeye219 24. Jan 2007 10:35

Re: Pointarray
 
Zitat:

Zitat von Muetze1
Wenn CreatePolygonRgn das Pointer Array als Const deklariert hat, dann geht folgendes:

Delphi-Quellcode:
Rgn := CreatePolygonRgn([Point(192, 70), Point(185,100), Point(162,99), Point(157,62)],4,winding)

Leider funktioniert das auch in Delphi 2006 nur mit ordinalen Werten.

Folgendes sollte ab Delphi 2006 (2005?) funktionieren:

Delphi-Quellcode:
type
  TDynPointArray = array of TPoint;

procedure TForm1.Button1Click(Sender: TObject);
var
  Rgn : HRGN;
  Points : TDynPointArray;
begin
  Points := TDynPointArray.Create(Point(192, 70), Point(185, 100), Point(162, 99), Point(157, 62));
  Rgn := CreatePolygonRgn(Points, 4, WINDING);
end;
Wenn du nur Konstanten übergeben möchtest, wäre aber vielleicht eine lokale Arraykonstante die einfachere Lösung.

Gruß Hawkeye

Muetze1 24. Jan 2007 11:48

Re: Pointarray
 
Mist! Stimmt, das Point() irgendwie ignoriert - ist ja eine Funktion. Sorry.


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