![]() |
Records per Prozedur übergeben
Hi @ all,
wie übergeb ich denn ein Record über eine Prozedur? Gruß Karsten |
Re: Records per Prozedur übergeben
Schreib mal mehr dazu :wiejetzt:
|
Re: Records per Prozedur übergeben
Ich habe eine Prozedur in einem Frame und einrecord in einer Form, die diesen Frame aufruft.
In der Form wird das Record mit Werten gefüllt und bei Aufruf des Frames soll der Record per Prozedur an das Frame übergeben werden. z. B. procedure Frame.execute(value : Record); In Form der Aufruf execute(FRecord); |
Re: Records per Prozedur übergeben
Versuchs doch mit einem Property ...
|
Re: Records per Prozedur übergeben
Delphi-Quellcode:
type TMyRecord = Record
VarStr: String; VarByt: Byte; //... end; var MyRec: TMyRec; procedure Foo(ValueRec: TMyRec); var aString : String; begin aString := ValueRec.VarStr; //... end; function Bla: TMyRec; begin Result.VarStr := 'Hello'; end; procedure Init... begin MyRec.VarStr := 'Hallo'; //... Foo(MyRec); //... ShowMessage( PChar(Bla.VarStr) ); end; |
Re: Records per Prozedur übergeben
Bei Beiden , Procedure und Property, bekomm ich bei der Übergabe des Records die Meldung, Inkompatiple Typen Form.Record und Frame.Record.
Hab aber den Record in beiden angelegt. Sind beide genau Identisch. |
Re: Records per Prozedur übergeben
Zitat:
|
Re: Records per Prozedur übergeben
Ich ahne was du willst.
Mach dir am besten eine separate Unit in der du die benötigten Type (Records, etc) definierst. |
Re: Records per Prozedur übergeben
@Tomsel
Warum nicht? |
Re: Records per Prozedur übergeben
Wie wärs mal mit ein wenig Quelltext? :?: :dance:
|
Re: Records per Prozedur übergeben
Zitat:
Du benötigst für deine Zwecke einen Record-Typ und in Form und Frame je eine Variable dieses Recordtyps. Auf den TYP kommt es an, nicht auf den Aufbau. |
Re: Records per Prozedur übergeben
wenn sie exakt gleich aufgebaut sind, kann man sie auch hin- und hercasten ;)
Delphi-Quellcode:
Ist aber NICHT zu empfehlen. Wenn du von einer Unit auf eine prozedur in der anderen zugreifen kannst, sollte auch der Typ verfügbar sein.
type
Trec1 = record num: integer; end; Trec2 = record num: integer; end; var r1: TRec1; r2: TRec2 begin r1.num := 5; TRec1((@r2)^) := r1; //wie ging das gleich nochmal mit den Pointern? //r2.num sollte jetzt 5 sein end; |
Re: Records per Prozedur übergeben
Zitat:
Das geht bis zu dem Moment in dem man es mit .Net probiert, welches eine typensichere Umgebung ist. Da ist ein Wert immer das was er vorgibt zu sein... Wie Tomsel bereits schrieb: Einfach eine 3. Unit anlegen, in der dein Typ definiert wird. Units 1 & 2 können dann diesen benutzen. Kein Hack-Around, Gefriemel und sonstige "interessante" Abenteuer... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 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