Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi funktion in andrer unit aufrufen geht nicht (https://www.delphipraxis.net/62579-funktion-andrer-unit-aufrufen-geht-nicht.html)

Julzn 6. Feb 2006 20:11


funktion in andrer unit aufrufen geht nicht
 
tag leutz,

also ich hab 2 units. in der 1. is die funktion deklariert:

Delphi-Quellcode:
function CreateFeld(i:integer):Boolean;
.
.
.
function TForm1.CreateFeld(i:integer):Boolean;
begin
  {spielt keine rolle was hier steht}
  for loop1:=0 to (n-1) do {y}
      for loop2:=0 to (d-1) do {x}
      begin
      i:=loop2+(loop1*n);
      Feld[i]:= TSpeedButton.Create(Self);
     
      with Feld[i] do begin
           Name:= 'Feld'+IntToStr(i);
           Top:= 40+(loop1*25);
           Left:= 20+(loop2*25);
           Width:= 25;
           Height:= 25;
           Glyph.LoadFromFile('Feld.bmp');
           Tag:=i;
           end;

      end;
     
  result:=true;
end;

un die ruf ich von der 2. unit aus auf:

Delphi-Quellcode:
Form1.CreateFeld(i:integer);
ich krieg aber immer den fehler: identifier not found 'i'
an was liegt das??

mkinzler 6. Feb 2006 20:15

Re: funktion in andrer unit aufrufen geht nicht
 
Also diese beiden Codefragmente passen nicht zusammen:
Zitat:

Delphi-Quellcode:
function CreateFeld(i:integer):Boolean;
...
Form1.CreateFeld(i:integer);

Da die Definition eine freie Prozedur der Unit und der Aufruf einer Methode der Formularklasse ist.
Also entweder Prozedur zur Methode machen:
Delphi-Quellcode:
function Form1.CreateFeld(i:integer):Boolean;
oder Aufruf:
Delphi-Quellcode:
CreateFeld(i:integer);

Julzn 6. Feb 2006 20:21

Re: funktion in andrer unit aufrufen geht nicht
 
geht beides nich...

Delphi-Quellcode:
Form1.CreateFeld(i:integer);
des Form1 steht da nur, weil die funktion ja in unit1 ist, aber ich von unit 2 darauf zugreif.
ich hoff mal ich laber jetzt kein sch***, bin ned so der checker.

mkinzler 6. Feb 2006 20:26

Re: funktion in andrer unit aufrufen geht nicht
 
Zitat:

Zitat von Julzn
des Form1 steht da nur, weil die funktion ja in unit1 ist, aber ich von unit 2 darauf zugreif.
ich hoff mal ich laber jetzt kein sch***, bin ned so der checker.

Also das Form1 sagt aber aus, das eine Methode der Objekts Form1 aufgerufen werden soll, du hast aber wie schon erwähnt eine normale Prozedur geschrieben diese rufst du ohne das Form1. auf. Hast du in der Unit2 auf die Unit1 verwiesen?
Delphi-Quellcode:
 Uses ...,Unit1, ...
?

Julzn 6. Feb 2006 20:27

Re: funktion in andrer unit aufrufen geht nicht
 
jopp, steht da

edit: hab schon alle möglichen schreibweisen ausprobiert un keine kombination
ging bisher. sehr seltsam...

mkinzler 6. Feb 2006 20:30

Re: funktion in andrer unit aufrufen geht nicht
 
Der Aufruf der Prozedur natürlich ohne den Typ.

Delphi-Quellcode:
CreateFeld(i);
Existiert in Unit2 die Variable i?

Julzn 6. Feb 2006 20:35

Re: funktion in andrer unit aufrufen geht nicht
 
öhm, nö...ups.

ok thx, jetzt gehts :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 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