Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi function mit pointer als Rückgabewert - Teil 2 (https://www.delphipraxis.net/40746-function-mit-pointer-als-rueckgabewert-teil-2-a.html)

Mr. No 20. Feb 2005 14:02


function mit pointer als Rückgabewert - Teil 2
 
Habe leider immer noch ein Problem mit der Deklaration

Zitat:

Delphi-Quellcode:
uses meinObjekt, ...
type
  TMainForm = class(TForm)
  ...
private
  ...
public
  function GetMeinObjekt: TmeinObjekt;
  ...
end;



var
  MyObject: TmeinObjekt;

  function TMainForm.GetMeinObjekt: TmeinObjekt;
begin
  Result := MyObject;
end;

funktioniert nicht, da ich in der ersten Zeile einen "überkreuzenden Bezug zweier Units habe"

wenn ich stattdessen schreibe

Delphi-Quellcode:
type
  TMainForm = class(TForm)
  ...
private
  ...
public
  function GetMeinObjekt: TmeinObjekt;
  ...
end;

uses meinObjekt, ...

var
  MyObject: TmeinObjekt;

  function TMainForm.GetMeinObjekt: TmeinObjekt;
begin
  Result := MyObject;
end;
bekomme ich die Fehlermeldung:
"Deklaration von GetMeinObjekt unterscheidet sich von vorheriger Deklaration"

es scheint, als müsste ich uses meinObjekt, ... vor der Funktionsdeklaration von "GetMeinObjekt" deklarieren. - Aber das funktioniert ja nicht.

?? - Totale Verwirrung - ??

Was kann man da machen?

sniper_w 20. Feb 2005 14:05

Re: function mit pointer als Rückgabewert - Teil 2
 
Die Frage ist nicht kompllet, was willst du eigentlich ?

Mr. No 20. Feb 2005 14:08

Re: function mit pointer als Rückgabewert - Teil 2
 
also in erster Linie keine Fehlermeldung mehr.

ich möchte eigentlich nur meine GetMeinObjekt-Funktion implementieren

Pseudemys Nelsoni 20. Feb 2005 14:19

Re: function mit pointer als Rückgabewert - Teil 2
 
hi

@Mr.No

da du einen typ aus deiner unit bereits innerhalb des interfaces brauchst, musste die unit natürlich auch da haben und nicht im implementationsteil.

n tip: mach am besten alles in eine unit, dann gibts keine probleme... du kannst es auch über 3 units machen, da steht hier aber auch schon oft im forum.

tommie-lie 20. Feb 2005 14:38

Re: function mit pointer als Rückgabewert - Teil 2
 
Zitat:

Zitat von Pseudemys Nelsoni
da du einen typ aus deiner unit bereits innerhalb des interfaces brauchst, musste die unit natürlich auch da haben und nicht im implementationsteil.

Wie du siehst, hat er das schon versucht, und bekam dann 'ne Fehlermeldung ;-)


Zitat:

Zitat von Mr. No
funktioniert nicht, da ich in der ersten Zeile einen "überkreuzenden Bezug zweier Units habe"

Wahrscheinlich steht deine Unit auch in meinObjekt.pas wieder im interface in der uses-Anweisung. Du verweist also auf meinObjekt, das wieder auf deine Unit verweist, das wieder auf meinObjekt verweist und so weiter. Du solltest versuchen, solche Überkreuzungen rauszubekommen. Das ganze betrifft nur Units, die im interface-Teil stehen, in implementation kannst du Units benutzen, die selbst deine Unit weider benutzen, da gibt es keine Probleme. Eine Möglichkeit wäre wie von Mario angesprochen, daß du die Klassen in nur einer Unit deklarierst.

Pseudemys Nelsoni 20. Feb 2005 14:42

Re: function mit pointer als Rückgabewert - Teil 2
 
Marco? :gruebel: :cry:

Zitat:

Wie du siehst, hat er das schon versucht, und bekam dann 'ne Fehlermeldung
jo, ich meine auch eher allgemein ;)

tommie-lie 20. Feb 2005 14:47

Re: function mit pointer als Rückgabewert - Teil 2
 
Zitat:

Zitat von Pseudemys Nelsoni
Marco? :gruebel: :cry:

Hab' ich nie geschrieben! :angel2: :mrgreen:

Mr. No 20. Feb 2005 14:51

Re: function mit pointer als Rückgabewert - Teil 2
 
hm - gibt's da keine Möglichkeit, in beiden Units aufeinander zu verweisen? In C++ ist's doch auch möglich, dass in den Headerdateien solche Bezüge hergestellt werden

Phoenix 20. Feb 2005 14:55

Re: function mit pointer als Rückgabewert - Teil 2
 
Nein, und das ist auch gut so :)

Die Form braucht Dein Objekt, aber Dein Objekt darf die Form nicht verwenden.
Oder Andersrum: Dein Objekt verwendet die Form, dann darf die Form aber Dein Objekt nicht verwenden.

Ich verwende einen Hammer, aber der Hammer darf nie und nimmer mich verwenden.
Mein Haus braucht Nägel, aber ein Nagel braucht kein Haus.
Mein Computer braucht Strom, aber Strom braucht meinen Computer nicht.

Also wie gesagt: Entwder Du bindest eine dritte Unit ein, packst alles in die gleiche oder aber Du räumst so auf, das wirklich ein logischer Bezug entsteht und keine Henne-Ei-Problematik.

Mr. No 20. Feb 2005 14:57

Re: function mit pointer als Rückgabewert - Teil 2
 
außerdem ist mir gerade aufgefallen - in der Main-Unit verweise ich im uses-Teil des interfaces auf meine Objekt-Unit - hier tritt der Fehler auf - aber in der Objekt-Unit, steht unter uses lediglich Forms, aber sonst kein Verweis auf die Main-Unit.
Woher kann dann überhaupt der Fehler "Überkreuzender Bezug zweier Units auf 'Main'" kommen?

[EDIT]
stimmt leider doch nicht so ganz - es gibt einen überkreuzenden Bezug


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 Uhr.
Seite 1 von 3  1 23      

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