Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi inkompatibel TArray<Integer> Pointer (https://www.delphipraxis.net/197405-inkompatibel-tarray-integer-pointer.html)

Fritzew 6. Aug 2018 19:14

AW: inkompatibel TArray<Integer> Pointer
 
Ja was den nun?
Pointer auf das Array oder neu erzeugt?

Delphi-Quellcode:
 meta := @pXY; //Pointer
  SetLength(meta, ArraySize * 2); //Neu
Ein TArray<t> ist etwas anderes als ein klassisches Array [0..n] of t

Und warum musst Du überhaupt casten?

Delphi-Quellcode:
for K := 0 to (ArraySize - 1) do
    begin
      x1 := min(x1, xy[k].x);
      x2 := max(x2, xy[k].x);
      y1 := min(y1, xy[k].y);
      y2 := max(y2, xy[k].y);
    end;
Aber nun gut........

EWeiss 6. Aug 2018 19:21

AW: inkompatibel TArray<Integer> Pointer
 
Zitat:

SetLength(meta, ArraySize * 2); //Neu
Der Inhalt von meta bleibt ja erhalte ich setze nur die neue länge.
Neu erzeugt wird da gar nichts.

Anbei zwei shots.. Du siehst also die Daten sind Korrekt.
Zitat:

Und warum musst Du überhaupt casten?
Ganz einfach weil ich ein TArray<Integer> definiert habe und nicht TArray<TPoint>;

Aber werde deine Variante mal testen. Danke!

gruss

EWeiss 6. Aug 2018 21:27

AW: inkompatibel TArray<Integer> Pointer
 
@Fritzew

Danke für deine Variante habe sie übernommen aber nur den Teil.
Delphi-Quellcode:
const
   maxIntArraysize = (maxint-sizeof(integer)) div sizeof(integer);

  type
   IntArray = Array [0.. maxIntArraysize] of integer;
   PIntArray = ^IntArray;

meta: PIntArray;
Das Ergebnis ist das gleiche aber kompatibler und ohne unnötiges casten.
Nochmals Danke schön :)

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 Uhr.
Seite 4 von 4   « Erste     234   

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