Autor Beitrag
draco
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 20.08.06 00:36 
Hallo,
ich habe das problem das ich eine funktion in eine externe unit ausgelagert habe und ich nun fehler wie z.b.
Zitat:
[Fehler] Unit1.pas(6): Undefinierter Bezeichner: 'TListview'

bekomme die verher nicht da waren!
Und nun meine frage: was kann ich dagegen tun?

Moderiert von user profile iconChristian S.: Quote-Tags hinzugefügt


Zuletzt bearbeitet von draco am So 20.08.06 13:09, insgesamt 1-mal bearbeitet
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 20.08.06 00:39 
Es scheinen nicht alle benötigten Units eingebunde zu sein.

_________________
Markus Kinzler.
Kaoro-kun
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP
Delphi 7, Pascal
BeitragVerfasst: So 20.08.06 00:47 
user profile icondraco hat folgendes geschrieben:
Hallo,
ich habe das problem das ich eine funktion in eine externe unit ausgelagert habe und ich nun fehler wie z.b.
[Fehler] Unit1.pas(6): Undefinierter Bezeichner: 'TListview'
bekomme die verher nicht da waren!
Und nun meine frage: was kann ich dagegen tun?

Hier die hoffentliche Lösung:
Du öffnest das Projekt, mit ALLEN Units, die Du verwendest (beim Öffnen einfach einen Rahmen um alle ziehen und dann Öffnen klicken). Anschliessend markierst Du oben bei den Tabs die Unit, die die "externe" verwenden soll, und gehts bei Datei auf "Unit Verwenden" und markierst die Unit, die Du verwenden willst.
Falls Du in den Units Komponenten verwendest, die im andern Formular sind, so verwendest Du vor dem Komponentennamen den Namen der Unit.
Beispiel:
ausblenden Delphi-Quelltext
1:
Tform1.edit:=Tform2.textvariable;					

Regards,
Kao

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt

_________________
Wissen ist Macht. Nichts Wissen macht nichts. Aber nichts zu Wissen, hat nichts mit Intelligenz zu tun. ;)
draco Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 20.08.06 12:08 
OK danke das hat jetz soweit funktioniert nachdem ich die Units eingebunden habe!!
Aber irgendwie kommt jetzt:
Zitat:
[Fehler] Unit2.pas(197): Undefinierter Bezeichner: 'ListViewConfHTML'

das listview conf ist die function aus der anderen unit.

Moderiert von user profile iconChristian S.: Quote-Tags hinzugefügt
Kaoro-kun
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP
Delphi 7, Pascal
BeitragVerfasst: So 20.08.06 12:30 
Nun, dann gibst Du statt ListviewConfHTML einfach <Name der ersten Unit>.ListviewConfHTML ein, da ja diese Komponente auf die erste Unit referiert, verstehst Du?
Beispiel:

Tform2.edit.text:='Hier steht Text'; - die erste Unit verändert den Text im Edit der 2. Unit

Tform1.Listbox.Item.Add ('Und ein weiterer Eintrag'); - die zweite Unit fügt der Listbox der ersten Unit eine Zeile mit dem dahinterstehenden Text hinzu
Regards,
Kao

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt

_________________
Wissen ist Macht. Nichts Wissen macht nichts. Aber nichts zu Wissen, hat nichts mit Intelligenz zu tun. ;)
draco Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 20.08.06 12:40 
ne das ist keine komponente sondern eine funktion in der externen unit ist gar kein formular!!
Kaoro-kun
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP
Delphi 7, Pascal
BeitragVerfasst: So 20.08.06 12:52 
Nimmt sich aber nichts, da diese Funktion in der Unit steht, die in der ersten Form arbeitet.
Jedenfalls werden Funktionen ausserhalb einer Unit immer mit dem zugehörigen Formnamen aufgerufen, da sie darunter arbeiten.
Du kannst ja genauso gut eine Behandlungsroutine für einen Button in Form2 auch in Form1 aufrufen, weil Du ihre Funktion nochmal brauchst. Erspart dir Kopier- bzw. Schreibarbeit. Die rufst Du dann eben bspw. mit Form1.Buttton1Click(Sender); auf. ;)
Regards,
Kao

_________________
Wissen ist Macht. Nichts Wissen macht nichts. Aber nichts zu Wissen, hat nichts mit Intelligenz zu tun. ;)
draco Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 20.08.06 12:59 
das versteh ich nicht!
wie soll ich die funktion mit Formnamen davor aufrufen wenn in der unit kein form ist?
kannst du vllt einfach mal ein beispiel posten wie ich die funktion aufrufen muss?
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 20.08.06 13:13 
Die Funktionen und Prozeduren, die du in fremden Units verwenden willst, müssen im Interface-Teil der Unit, in der sie implementiert werden, auch deklariert werden. Also:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
unit U_MitTollenFunktionen;

interface

uses // was auch immer in dieser Unit gebraucht wird

function PlusEins(a:integer):integer;

implementation

function PlusEins(a:integer):integer;
begin
  result := a + 1;
end;

end.


Will man nun die Funktion PlusEins in einer anderen Unit benutzen, dann geht das so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Unit HauptUnit;

uses {evtl. weitere Units} U_MitTollenFunktionen;

interface {...}

implementation

Procedure TForm1.Button1Click;
var i: Integer;
begin
  i := StrToInt(Edit1.Text);
  i := PlusEins(i);
  showmessage(IntToStr(i));
end;

_________________
We are, we were and will not be.
draco Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 20.08.06 14:40 
Ok danke das hat funktioniert!!!