![]() |
Übergabe eines Records in eine andre Unit
Morgen,
also ich habe folgendes Problem: Es exisitieren 2 Units. In der einen Unit gibt es einen record, welcher befüllt wird. Dieser soll dann an eine andere Unit zur Bearbeitung weitergeleitet werden: Deklaration des Recordtyps
Delphi-Quellcode:
Hier wird er befüllt und die Unit ausgewählt und aufgerufen:
type
tRecForwarder = record OrderId: string; NextState: Integer; WwwRootDir:String; FtpRootDir: string; PortalDir:String; PdfDir: string; ForwarderDir: string; Sid:String; Order:TStringList; Pickup:Boolean; Lnd:String; AdrPickup:String; AdrForwarder:String; AdrDelivery:String; SaveOrder:Boolean; end;
Delphi-Quellcode:
Hier der Aufruf in der entsprechenden Unit:
function ForwarderCommunication(iRecForwarder: tRecForwarder): string;
var temp: string; begin Result := ''; with iRecForwarder do begin Order:=TStringList.Create; ws:=GetIRtsService(True); Order.Text:=ws.Orders_GetData(Sid,OrderId); SaveOrder:=False; if (NextState=17) then begin Pickup:=True; AdrPickup:='Adr31'; AdrForwarder:='Adr32'; AdrDelivery:='Adr33'; end else begin Pickup:=False; AdrPickup:='Adr41'; AdrForwarder:='Adr42'; AdrDelivery:='Adr43'; end; try if temp = '1' then Intf1.GenerateOrder( var irecforwarder); if temp = '2' then Intfd2.GenerateOrder(var iRecForwarder);
Delphi-Quellcode:
Die Deklaration von trecforwarder ist in beiden Units die gleiche.,
preocedure GenerateDHLOrder( var myforwarder:trecforwarder);
Beim kompilieren erhalte ich folgende Fehlermeldung: Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen. Könnt ihr mir hier helfen? Gruß, Stefan |
Re: Übergabe eines Records in eine andre Unit
Lass mal die vars beim Aufruf weg.
Delphi-Quellcode:
try
if temp = '1' then Intf1.GenerateOrder( irecforwarder); if temp = '2' then Intfd2.GenerateOrder( iRecForwarder); |
Re: Übergabe eines Records in eine andre Unit
Das hab ich auch schon überlegt.
Lasse ich das Var weg, bekomme ich die Meldung, dass die Typen inkompatibel sind. Leider brauch ich die Werte des Records wieder in der anderen Unit. Gruß, STefan |
Re: Übergabe eines Records in eine andre Unit
Aus "die Deklaration ist in beiden Units gleich" schliesse ich mal, dass du den Recordtype doppelt definiert hast. Damit hast du dann auch 2 unterschiedliche Typen (auch wenn diese identisch aussehen). Du solltest also den Typ nur einmal, in einer der beiden (oder in einer gemeinsam genutzten 3. Unit) definieren, dann ist das sauber und wird wohl auch funktionieren.
PMM |
Re: Übergabe eines Records in eine andre Unit
Hi,
@PMM: Genau das hab ich gerad gemacht und jetzt läuft es. Danke! :) Gruß, Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:05 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