![]() |
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:
[Fehler] E2010 Inkompatible Typen: 'Unit1.TSetOfByte' und 'unit2.TSetOfByte'
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; |
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 |
Re: Eine"array of set of Byte" an eine andere Form
Jo, wie deklariere ich in 2 forms den typen nur einmal?
|
Re: Eine"array of set of Byte" an eine andere Form
Hallo,
Zitat:
Gruß xaromz |
Re: Eine"array of set of Byte" an eine andere Form
Jo, danke, klappt erst mah bestens!!!!!!!!!!
|
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: |
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. |
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.
|
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 |
Re: Eine"array of set of Byte" an eine andere Form
Zitat:
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:
TTestRec_1 und TTestRec_2 sind zwei verschiedene Typen. TTest_1 und TTest_2 hingegen Aliase für TTestRec_1.
type
TTestRec_1 = array[0..10] of Integer; TTestRec_2 = array[0..10] of Integer; TTest_1 = TTestRec_1; TTest_2 = TTestRec_1; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr. |
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