Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Function in Unit / Zugriff von anderen Units (https://www.delphipraxis.net/78489-function-unit-zugriff-von-anderen-units.html)

Tormentor32 5. Okt 2006 21:08


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:
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.
ABER: Ich kann von einer anderen Unit nicht auf die function InhaltToStr zugreifen :wall:

Wo ist mein Denkfehler???
Ich komm irgendwie nicht weiter!

gruß Richard

Balu der Bär 5. Okt 2006 21:11

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? ;)

Zacherl 5. Okt 2006 21:12

Re: Function in Unit / Zugriff von anderen Units
 
Zitat:

ich habe diese unit geschrieben und in mein programm eingebunden
Hat er wohl schon getan ... ;)

Tormentor32 5. Okt 2006 21:14

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:

alzaimar 5. Okt 2006 21:14

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;
...

Zacherl 5. Okt 2006 21:15

Re: Function in Unit / Zugriff von anderen Units
 
Du musst die Funktion auch im interface Teil der Unit deklarieren ...

//Edit: ähhm ja :mrgreen:

Balu der Bär 5. Okt 2006 21:16

Re: Function in Unit / Zugriff von anderen Units
 
Zitat:

Zitat von Florian Bernd
Hat er wohl schon getan ... ;)

Ups, ich sollte wohl besser lesen. :wall:

Tormentor32 5. Okt 2006 21:18

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. :(

mkinzler 5. Okt 2006 21:22

Re: Function in Unit / Zugriff von anderen Units
 
Zitat:

Zitat von Tormentor32
Dann habe ich das Problem, dass er TFeldInhalt nicht kennt, da es ja erst danach im type Bereich Deklariert wird. :(

Dann deklariere die Funktion doch vor nach den Typdeklarationen.

Tormentor32 5. Okt 2006 21:24

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 05:20 Uhr.
Seite 1 von 2  1 2      

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