Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   E2010 Inkompatible Typen: 'vec2arr' und 'Dynamic array (https://www.delphipraxis.net/187302-e2010-inkompatible-typen-vec2arr-und-dynamic-array.html)

Lyan 17. Nov 2015 17:01

Delphi-Version: XE8

E2010 Inkompatible Typen: 'vec2arr' und 'Dynamic array
 
Hallo,

könnte mir bitte einer das Problem erklären ?

Ich habe zwei Structs:

vec2 = packed record
x,y:double;
constructor Create(xi, yi: Double);
class operator add(v1, v2: vec2): vec2;
class operator subtract(v1, v2: vec2): vec2;
class operator multiply(d : double; v1 : vec2): vec2;
end;


THitObject = packed record
X : Integer;
Y : Integer;
Offset : Integer;
HitType : Integer;
SliderType : String;
SliderCoords : array of Vec2;
end;


...

einen typedef:

vec2arr = array of vec2;


... und eine Funktion:

function GetBezierPoint(points: vec2arr; numPoints: integer; t: double) : Vec2;


... die ich so aufrufen möchte:


...

var
v : vec2;

v := GetBezierPoint(HitObjects[1].SliderCoords, length(HitObjects[1].SliderCoords), 0.05);


... und erhalte dann die im Titel gesagte Fehlermeldung beim 1. Parameter.


Danke im voraus


EDIT:// Fehler gefunden...

Wusste nicht dass delphi zu dumm ist um zu verstehen dass der typedef das gleiche ist als was er definiert ist.

Der schöne Günther 17. Nov 2015 17:05

AW: E2010 Inkompatible Typen: 'vec2arr' und 'Dynamic array
 
Was ist wenn du bei deinem THitObject aus
Delphi-Quellcode:
SliderCoords : array of Vec2
ein
Delphi-Quellcode:
SliderCoords : vec2arr
machst?

Lyan 17. Nov 2015 17:16

AW: E2010 Inkompatible Typen: 'vec2arr' und 'Dynamic array
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1321706)
Was ist wenn du bei deinem THitObject aus
Delphi-Quellcode:
SliderCoords : array of Vec2
ein
Delphi-Quellcode:
SliderCoords : vec2arr
machst?

Ja ich habe den Fehler schon behoben..

Ich war zu naiv, ich dachte Delphi würde da tolleranter sein.

Danke trotzdem!

Stevie 18. Nov 2015 01:33

AW: E2010 Inkompatible Typen: 'vec2arr' und 'Dynamic array
 
array of T (T sei ein beliebiger Typ) an zwei unterschiedlichen stellen = 2 unterschiedliche Typen für Delphi und somit nicht zuweisungskompatibel, auch wenn sie binär identisch sind. Da hat nix mit zu dumm zu tun sondern ist so definiert.

Möchtest du an zwei verschiedenen Stellen ein zuweisungskompatibles dynamisches Array haben, dann benutze TArray<T>.


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