AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Übergabe eines Records in eine andre Unit
Thema durchsuchen
Ansicht
Themen-Optionen

Übergabe eines Records in eine andre Unit

Ein Thema von Overburn · begonnen am 28. Nov 2007 · letzter Beitrag vom 28. Nov 2007
Antwort Antwort
Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#1

Übergabe eines Records in eine andre Unit

  Alt 28. Nov 2007, 09:18
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:
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;
Hier wird er befüllt und die Unit ausgewählt und aufgerufen:

Delphi-Quellcode:
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 = '1then Intf1.GenerateOrder( var irecforwarder);
       if temp = '2then Intfd2.GenerateOrder(var iRecForwarder);
Hier der Aufruf in der entsprechenden Unit:
preocedure GenerateDHLOrder( var myforwarder:trecforwarder); Die Deklaration von trecforwarder ist in beiden Units die gleiche.,
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Übergabe eines Records in eine andre Unit

  Alt 28. Nov 2007, 09:23
Lass mal die vars beim Aufruf weg.
Delphi-Quellcode:
try
       if temp = '1then Intf1.GenerateOrder( irecforwarder);
       if temp = '2then Intfd2.GenerateOrder( iRecForwarder);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#3

Re: Übergabe eines Records in eine andre Unit

  Alt 28. Nov 2007, 09:27
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
  Mit Zitat antworten Zitat
PMM

Registriert seit: 17. Feb 2005
101 Beiträge
 
#4

Re: Übergabe eines Records in eine andre Unit

  Alt 28. Nov 2007, 09:35
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
  Mit Zitat antworten Zitat
Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#5

Re: Übergabe eines Records in eine andre Unit

  Alt 28. Nov 2007, 09:41
Hi,

@PMM:
Genau das hab ich gerad gemacht und jetzt läuft es. Danke! :)

Gruß,
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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