Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi undefinierter bezeichner in der 2. unit (https://www.delphipraxis.net/165205-undefinierter-bezeichner-der-2-unit.html)

Jack Spades 18. Dez 2011 15:51

Delphi-Version: 6

undefinierter bezeichner in der 2. unit
 
Nabend,
also wir erstellen in der schule ein programm nach OOP, ich hab die 2. unit in der uses liste der 1. rein geschrieben, bei variable notiert und ins formcreate geschrieben:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Unit2:=TUnit2.create;
end;
aufgerufen habe ich die procedure dann wie folgt:
Delphi-Quellcode:
procedure TForm1.GrossbtnClick(Sender: TObject);
begin
unit2.gross;
end;
in der unit2 erzählt er mir dann aber, das edit1.text ein ungültiger bezeichner ist, leuchtet mir auch ein, da edit1 sich ja auf der oberfläche von unit1 befinden, nun meine frage:
was muss ich mit edit1 in der 2. unit machen, damit es kein undefinierter bezeichner mehr ist und mit den werten aus unit1 arbeiten kann
Delphi-Quellcode:
procedure Textmanipulation.gross;
var lauf:integer;
begin
for lauf:= 1 to length (edit1.Text) do begin;
[...]
end;

p80286 18. Dez 2011 16:11

AW: undefinierter bezeichner in der 2. unit
 
Eigentlich wird die Unit nur in uses benötigt.
Deine Konstruktion
Delphi-Quellcode:
Unit2:=TUnit2.Create
ist doch sehr ungewöhnlich.
Könntest Du mal Deinen vollständigenSource anhängen?

Gruß
K-H

Jack Spades 18. Dez 2011 16:24

AW: undefinierter bezeichner in der 2. unit
 
Zitat:

Zitat von p80286 (Beitrag 1142018)
Deine Konstruktion
Delphi-Quellcode:
Unit2:=TUnit2.Create
ist doch sehr ungewöhnlich.
Könntest Du mal Deinen vollständigenSource anhängen?

was ist dadran ungewöhnlich?
haben es in der schule immer name:=Klasse.create geschrieben
meinen volldtändigen quelltextmag ich nur sehr ungern anhängen
in der unit1 scheint es soweit auch keine probleme zu geben, delphi beschwerd sich nur über denundefinierten bezeichner und das es inkompatible typen sind

DeddyH 18. Dez 2011 16:36

AW: undefinierter bezeichner in der 2. unit
 
Kann es sein, dass es sich um Form2 oder so handelt, welche in Unit2 deklariert ist?

Jack Spades 18. Dez 2011 16:39

AW: undefinierter bezeichner in der 2. unit
 
also eine form2 gibt es an sich gar nicht, nur form1 da die unit2 ähnlich wie beim mvc konzept einfach nur die proceduren enthalten soll
aber ebenhalt nach OOP und nicht nach MVC

DeddyH 18. Dez 2011 16:40

AW: undefinierter bezeichner in der 2. unit
 
Wie heißt denn die Klasse, die Du instanzieren möchtest?

Jack Spades 18. Dez 2011 16:49

AW: undefinierter bezeichner in der 2. unit
 
Die klasse heißt Textmanipulation, was mich irritiert weil das ja heißen würde ich schreibe beim formcreate textmanipulation:=textmanipulation.create oder?

aber das eigentliche problem ist ja der undefinerte bezeichner, der hat doch damit gar nichts zu tun oder lieg ich jetzt falsch?

DeddyH 18. Dez 2011 16:52

AW: undefinierter bezeichner in der 2. unit
 
Der undefinierte Bezeichner dürfte in Deinem ursprünglichen Code unit2 sein, weil die Unit so heißt, aber eben nicht die Klasse. So wie in Deinem letzten Post sollte es hingegen richtig sein.

Jack Spades 18. Dez 2011 16:58

AW: undefinierter bezeichner in der 2. unit
 
edit1 wird weiterhin als undefinierter bezeichner angezeigt
darf ich dir den quelltext mal per pn schicken? mag ihn hier nicht posten. den grund hab ich dir ja letztens schon gesagt gehabt

DeddyH 18. Dez 2011 17:10

AW: undefinierter bezeichner in der 2. unit
 
Wo ist Edit1 denn deklariert?

Jack Spades 18. Dez 2011 17:12

AW: undefinierter bezeichner in der 2. unit
 
edit1 befindet sich auf der oberfläche, quasi form1 von der 1. unit
demzufolge kannn er es in der unit textmanipulation, wo es im quelltext verwendet wird, auch gar nicht kennen, ich weiß aber nicht wie ich es ändern muss

Furtbichler 18. Dez 2011 17:28

AW: undefinierter bezeichner in der 2. unit
 
Sage mal: Wäre es nicht doch sinnvoll und zielführend, wenn Du deinen Quelltext hier zur Verfügung stelltest?

DeddyH 18. Dez 2011 17:30

AW: undefinierter bezeichner in der 2. unit
 
Ich hasse so etwas zwar, aber dann musst Du Unit1 auch in Unit2 bekannt machen. Damit Delphi nicht meckert, muss die eine uses-Klausel im interface- und die andere im implementation-Abschnitt erweitert werden.
Delphi-Quellcode:
unit Unit1;

interface

uses ..., Unit2;
Delphi-Quellcode:
unit Unit2;

interface

...

implementation

uses ..., Unit1;
Eleganter geht so etwas zwar über Properties, aber für den Anfang soll das so erst einmal genügen.

Uwe Raabe 18. Dez 2011 17:37

AW: undefinierter bezeichner in der 2. unit
 
Zitat:

Zitat von DeddyH (Beitrag 1142037)
Ich hasse so etwas zwar, aber dann musst Du Unit1 auch in Unit2 bekannt machen.

Nachdem, was ich bisher gesehen habe, wird das Programm damit nur marginal schlechter...

DeddyH 18. Dez 2011 17:40

AW: undefinierter bezeichner in der 2. unit
 
Naja, wir alle haben mal klein angefangen, oder?

Uwe Raabe 18. Dez 2011 17:53

AW: undefinierter bezeichner in der 2. unit
 
Zitat:

Zitat von DeddyH (Beitrag 1142042)
Naja, wir alle haben mal klein angefangen, oder?

Ich wollte damit eigentlich nur andeuten, daß es manchmal besser ist, eine kurze pragmatische Lösung anzubieten, als zu versuchen, die Mängel am Bildungssystem hier innerhalb eines Threads beheben zu wollen. Für sowas gibt es ja auch diverse Bücher und Tutorials. Insofern war das eigentlich nur eine Zustimmung zu deinem Post.

DeddyH 18. Dez 2011 18:30

AW: undefinierter bezeichner in der 2. unit
 
Oh, sry, da habe ich Dich wohl falsch verstanden. Trotzdem schön, dass wir hier im Prinzip einer Meinung sind :cheers:


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