![]() |
Function in Unit / Zugriff von anderen Units
Hi Leute Ich hab grad ein Problem bei einer Total einfachen sache :wall:
ich habe diese unit geschrieben und in mein programm eingebunden
Delphi-Quellcode:
ABER: Ich kann von einer anderen Unit nicht auf die function InhaltToStr zugreifen :wall:
unit mTlocation;
interface uses extctrls; type TFeldInhalt = (Boden, Mauer, TrOnEnter, TrOnUse, TrOnCollision, TrChangeLoc,_); TFigurenImage = class(TImage) private FX: integer; FY: integer; public {funktionen *********************************} function GetXWert: integer; function GetYWert: integer; {prozeduren *********************************} procedure SetXWert(value: integer); procedure SetYWert(value: integer); end; TFeld = class(Tobject) FigurenImage: TFigurenimage; private FFigurenIndex: integer; FInhalt: TFeldInhalt; FID: string; public {funktionen *********************************} function GetFigurenIndex: integer; function GetInhalt: TFeldInhalt; function GetID: string; {prozeduren *********************************} procedure SetFigurenIndex(value: integer); procedure SetInhalt(value: TFeldInhalt); procedure SetID(value: string); end; TLocation = class(Tobject) private public Felder: array[1..20,1..20] of TFeld; end; implementation function InhaltToStr(I: TFeldInhalt): string; begin case I of Boden: result := 'StGrd'; Mauer: result := 'StWal'; TrOnEnter: result := 'TrOnE'; TrOnUse: result := 'TrOnU'; TrOnCollision: result := 'TrOnC'; else result := '' end end; {************************************************} {*************** TFigurenImage ******************} {************************************************} procedure TFigurenImage.SetXWert(value: integer); begin FX := value; end; procedure TFigurenImage.SetYWert(value: integer); begin FY := value; end; function TFigurenImage.GetXWert: integer; begin result := FX; end; function TFigurenImage.GetYWert: integer; begin result := FY; end; {************************************************} {******************** TFeld *********************} {************************************************} procedure TFeld.SetID(value: string); begin FID := value; end; procedure TFeld.SetInhalt(value: TFeldInhalt); begin FInhalt := value; end; procedure TFeld.SetFigurenIndex(value: integer); begin FFigurenindex := value; end; function TFeld.GetFigurenIndex: integer; begin result := FFigurenIndex end; function TFeld.GetInhalt: TfeldInhalt; begin result := FInhalt; end; function TFeld.GetID: string; begin result := FID; end; {************************************************} {****************** TLocation *******************} {************************************************} end. Wo ist mein Denkfehler??? Ich komm irgendwie nicht weiter! gruß Richard |
Re: Function in Unit / Zugriff von anderen Units
Du musst in der anderen Unit mTlocation zu der uses-Liste hinzufügen. Woher soll die Unit sonst auch die Funktion kennen? ;)
|
Re: Function in Unit / Zugriff von anderen Units
Zitat:
|
Re: Function in Unit / Zugriff von anderen Units
Ich habe die Unit in der Uses-Klausel eingebunden, aber wenn ich die Function aufrufen will, dann sagt er mir Undefinierter Bezeichner!
Ich stehe irgendwie total auf dem schlauch :wall: |
Re: Function in Unit / Zugriff von anderen Units
Die Funktion ist für andere Units unsichtbar, solange sie nicht im Interface deklariert wurde, z.B. so:
Delphi-Quellcode:
unit Sample;
Interface Function SampleFunc (aParam : Integer) : Integer; ... Implementation Function SampleFunc (aParam : Integer) : Integer; Begin ... Result := ... End; ... |
Re: Function in Unit / Zugriff von anderen Units
Du musst die Funktion auch im interface Teil der Unit deklarieren ...
//Edit: ähhm ja :mrgreen: |
Re: Function in Unit / Zugriff von anderen Units
Zitat:
|
Re: Function in Unit / Zugriff von anderen Units
Dann habe ich das Problem, dass er TFeldInhalt nicht kennt, da es ja erst danach im type Bereich Deklariert wird. :(
|
Re: Function in Unit / Zugriff von anderen Units
Zitat:
|
Re: Function in Unit / Zugriff von anderen Units
Jetzt habe ich ungenügende Forward oder External-Deklaration!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:06 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