Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eine"array of set of Byte" an eine andere Form übergeben? (https://www.delphipraxis.net/74161-eine-array-set-byte-eine-andere-form-uebergeben.html)

Hallo_Thomas 29. Jul 2006 12:34


Eine"array of set of Byte" an eine andere Form übe
 
Hallo,

wie übergebe ich eine array of set of Byte an eine andere Form(Klasse)?

Delphi-Quellcode:
type
  TSetOfByte = array of set of Byte;

procedure TForm2.Button2Click(Sender: TObject);
var Werte:TSetOfByte;
begin
  SetLength(Werte,5);
  Form1.SetLaenge(Werte,Werte);
  Label1.Caption:=IntToStr(length(Werte));
end;

procedure TForm1.SetLaenge(Wert:TSetOfByte;var Werte:TSetOfByte);
begin
  SetLength(Werte,10);
end;
[Fehler] E2010 Inkompatible Typen: 'Unit1.TSetOfByte' und 'unit2.TSetOfByte'

xaromz 29. Jul 2006 12:37

Re: Eine"array of set of Byte" an eine andere Form
 
Hallo,

Du darfst Deinen Typen nur einmal deklarieren. Offensichtlich deklarierst Du ihn aber in jeder Unit erneut. Damit sind die beiden Typen, trotz gleicher Deklaration, für den Compiler unterschiedlich.

Gruß
xaromz

Hallo_Thomas 29. Jul 2006 12:45

Re: Eine"array of set of Byte" an eine andere Form
 
Jo, wie deklariere ich in 2 forms den typen nur einmal?

xaromz 29. Jul 2006 12:47

Re: Eine"array of set of Byte" an eine andere Form
 
Hallo,
Zitat:

Zitat von Hallo_Thomas
Jo, wie deklariere ich in 2 forms den typen nur einmal?

Am Besten deklarierst Du den Typen in einer eigenen Unit und bindest diese in beiden Units ein.

Gruß
xaromz

Hallo_Thomas 29. Jul 2006 12:54

Re: Eine"array of set of Byte" an eine andere Form
 
Jo, danke, klappt erst mah bestens!!!!!!!!!!

3_of_8 29. Jul 2006 13:16

Re: Eine"array of set of Byte" an eine andere Form
 
Wieso sind die eigentlich unterschiedlich? TSetOfByte ist doch nur ein Alias.

Daher müsste das doch eigentlich möglich sein. :gruebel:

Christian Seehase 29. Jul 2006 13:24

Re: Eine"array of set of Byte" an eine andere Form
 
Moin Manuel,

wenn sie in unterschiedlichen Units deklariert sind, sind sie für den Compiler unterschiedlich.

3_of_8 29. Jul 2006 13:54

Re: Eine"array of set of Byte" an eine andere Form
 
Obwohl sie nur Aliases sind? Ich meine, sie besitzen ja nicht mal eine eigene RTTI.

Der_Unwissende 29. Jul 2006 14:03

Re: Eine"array of set of Byte" an eine andere Form
 
Hi,
es sind zwar nur Aliase, aber sie gelten ja in der gesamten Unit. Würdest du nun das Alias an einer Stelle ändern, z.B. weil du jetzt ein Array of set of Integer hast, dann hast du halt ein paar Probleme.
Klar, normalerweise könnte jetzt wieder der Compiler erkennen das die Aliase nun unterschiedliche Datentypen behandeln, aber Delphi kann das schon mal nicht. Nein, es könnte (da müsste man jetzt aber eher einen Fall konstruieren) dazu kommen, dass du einen theoretisch noch kompatiblen Typ auf der anderen Seite hast und es dann zu Problemen kommt die du nicht so leicht findest. Es ist einfach sauberer, wenn du diese Trennung vornimmst (obwohl ich persönlich mir auch schon häufiger gewünscht habe, dass Delphi da mal etwas flexibler wird).

Gruß Der Unwissende

jbg 29. Jul 2006 14:03

Re: Eine"array of set of Byte" an eine andere Form
 
Zitat:

Zitat von 3_of_8
Obwohl sie nur Aliases sind? Ich meine, sie besitzen ja nicht mal eine eigene RTTI.

Was hat die RTTI damit zu tun? Mit der bekommst du nur den Aufbau zurück. Liefert denn TypeInfo(TSetOfByte) von der einen Unit und der der anderen Unit etwa den selben Zeiger zurück?

Aliase definierst du nur, wenn du bereits einen Namen für einen Typen hast. Ein direkt deklariertes Array oder Record werden niemals Aliase, auch wenn du Haar genau das selbe Array oder den selben Record definierst. Das ist eben eie Vorgabe des PASCAL Standards, welchen Delphi in diesem Fall einhält.
Delphi-Quellcode:
type
  TTestRec_1 = array[0..10] of Integer;
  TTestRec_2 = array[0..10] of Integer;

  TTest_1 = TTestRec_1;
  TTest_2 = TTestRec_1;
TTestRec_1 und TTestRec_2 sind zwei verschiedene Typen. TTest_1 und TTest_2 hingegen Aliase für TTestRec_1.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 Uhr.
Seite 1 von 2  1 2      

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