Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   "Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen" Fehler (https://www.delphipraxis.net/167841-die-typen-der-tatsaechlichen-und-formalen-var-parameter-muessen-uebereinstimmen-fehler.html)

basti1994 21. Apr 2012 13:37

"Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen" Fehler
 
Hallo,

ich habe ein programm erstellt, welches ein dynamisches array von einer Unit an die andere übermitteln soll

dazu hab ich ich in der aufrufenden Unit dass array so Deklariert:

Delphi-Quellcode:
type
TRSnakeElements = record
                 x:integer;
                 y:integer;
  end;



    TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Elements : array of TRSnakeElements;
und rufe es dann mit
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Snake(Elements);
showmessage('haha' + inttostr(Elements[0].x));
end;
auf.

Die andere Unit schaut so aus:
Delphi-Quellcode:
unit USnake;

interface
type

TRSnakeElements = record
                 x:integer;
                 y:integer;
  end;
  TSnakeElements = array of TRSnakeElements;

 procedure Snake(var Elements: TSnakeElements);

implementation
procedure Snake(var Elements: TSnakeElements);
begin
SetLength(Elements, 2);
Elements[0].x:=3;
Elements[0].y:=4;
end;

end.
bekomme aber leider bei
Delphi-Quellcode:
Snake(Elements);
die Fehlermeldung das die Typen nicht die gleichen sind, sind sie doch aber oder?

Mit freundlichen Grüßen Basti

mkinzler 21. Apr 2012 13:44

AW: "Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen" Fe
 
Lagere

Delphi-Quellcode:
interface
type

TRSnakeElements = record
                 x:integer;
                 y:integer;
  end;
  TSnakeElements = array of TRSnakeElements;
in eine eigene Unit aus, und binde diese in den anderen ein.

Die Typen heissen zwar gleich und sehen genauso aus, sind aber für den Compiler 2 verschiedene Typen

basti1994 21. Apr 2012 14:01

AW: "Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen" Fe
 
Hmmmm,

jetzt schauts so aus:

Delphi-Quellcode:
unit UVisualization;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,StdCtrls, USnake,UTypen;

type
    TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Elements : array of TRSnakeElements;



implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
Snake(Elements);
showmessage('test' + inttostr(Elements[0].x));
end;

end.
in der anderen unit:
Delphi-Quellcode:
unit USnake;

interface
uses
 UTypen;
procedure Snake(var Elements: TSnakeElements);

implementation
procedure Snake(var Elements: TSnakeElements);
begin
SetLength(Elements, 2);
Elements[0].x:=3;
Elements[0].y:=4;
end;

end.
und das ausgelagerte:
Delphi-Quellcode:
unit UTypen;

interface
type

TRSnakeElements = record
                 x:integer;
                 y:integer;
  end;
  TSnakeElements = array of TRSnakeElements;

implementation

end.
bekomme aber trotzdem noch den gleichen Fehler :(, hast du noch ne Idee ?

Mfg Basti

Bjoerk 21. Apr 2012 14:09

AW: "Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen" Fe
 
Elements : TSnakeElements;

DeddyH 21. Apr 2012 14:10

AW: "Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen" Fe
 
Elements ist immer noch als Array of TRSnakeElements deklariert. Mach daraus einmal TSnakeElements.

basti1994 21. Apr 2012 14:11

AW: "Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen" Fe
 
ups, was fürn dummer Fehler ....ich danke euch , jetzt gehts :)


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