Autor Beitrag
hassedelphi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101

WIN XP
D7 Enterprise
BeitragVerfasst: Mo 11.08.03 17:13 
hi

meine unit ist voll mit unübersichtlichem qtext. also hab ich ein bisschen davon in eine neue Unit gehaun. problem: die variablen:
Zitat:
[Fehler] Unit2.pas(9): Undefinierter Bezeichner: 'Tm2'

hab's mit uses Unit1 versucht (einmal nach interface, einmal nach implementation), funzt aber nicht

kann jmd helfen? :?!?: auch weitere ideen qt auszulagern sind nicht unerwünscht

Moderiert von user profile iconTino: Titel geändert & Topic verschoben

_________________
you're not be able to help, that you're an human
Tryer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: Mo 11.08.03 17:20 
Wäre vielleicht ganz handlich wenn man ein paar mehr Infos hätte:
Wo ist Tm2 deklariert, und wo wird es benutzt ?


MfG,
Tryer
hassedelphi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101

WIN XP
D7 Enterprise
BeitragVerfasst: Mo 11.08.03 17:59 
wird mitten in einer ganz normalen procedur benutzt (selbst erstellt) (unit2) und dann über meinetwegen showmessage ausgegeben (unit1);

ist als globale variable deklariert, und wird über ein editfeld initialisiert.

_________________
you're not be able to help, that you're an human
Tryer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: Mo 11.08.03 18:12 
Wenn Du Unit1 im implementation-Abschnitt in Unit2 einbindest und Tm2 dann nicht bekannt ist kann die Variable nicht global in Unit1 deklariert sein, das würde sonst funktionieren.

MfG,
Tryer
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mo 11.08.03 18:36 
@Hassedelphi: Schau nochmal in deiner Unit 1 nach. Alle Variablen, die nach der Einbindung von Unit1 in Unit2 nitzen willst, müssen global definiert sein und weiterhin würde ich nun an deiner Stelle in Zukunft von vornherein versuchen, meinen Quelltext so leserlich wie möglich zu halten bzw. durch Kommentare & Anmerkungen leserlich zu machen, z.B.:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
Form1.Button1Click(Sender: TObject);
begin
ShowMessage('Ich habe jetzt den Knopf gedrückt. Bin ich nicht gut?!?'); {Zeigt eine Message auf Knopfdruck}
end;

_________________
Hasta La Victoria Siempre
hassedelphi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101

WIN XP
D7 Enterprise
BeitragVerfasst: Di 12.08.03 08:00 
die variable ist global

unit1
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  Form1: TForm1;

implementation
VAR 
  s,sum,mode : integer; 
  cfe,T1,cfl,cgas,m,Tv,Ts,qs,qv : array [1..8of real; 
  Tm1,Tm2,Tm3,Tm4,Tm5,Tm6,Tm7,Tm8,me : real; 
  w : integer; 
  k : array [1..8of integer;


unit2
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
 unit Unit2;

interface

implementation
uses unit1;

procedure test;
begin
 Tm2:=Tm3;
end;

end.


das ganze funzt aber immer noch nich :x

_________________
you're not be able to help, that you're an human
Tryer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: Di 12.08.03 08:41 
Interface = Schnittstelle nach draussen

Deine vermeindlich globalen Variablen sind also wirklich keine sondern nur innerhalb der Unit1 zugänglich.
Vielleicht tät ein Blick in die Hilfe ganz gut bzgl. der verschiedenen Unit-Abschnitte.
Ein Blick hierdrauf könnte auch nicht schaden.

Wenn ich deinen QT so anschaue weis ich warum ich nicht viel von globalen Variablen halte und lieber OOP betreibe :autsch:

MfG,
Tryer
hassedelphi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101

WIN XP
D7 Enterprise
BeitragVerfasst: Di 12.08.03 09:45 
uhu danke, funzt :D :D

was is ein OOP?

_________________
you're not be able to help, that you're an human
Tryer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 226
Erhaltene Danke: 7



BeitragVerfasst: Di 12.08.03 10:32 
Objekt Orientierte Programmierung

Heißt:
Statt einfache globale Variablen zu nehmen die zu jedem Zeitpunkt aus beliebigen Units überschrieben werden können erstelle ich mir lieber Objekt-Instanzen bei denen der Zugriff auf die Felder über Methoden und Eigenschaften kontrollierbar ist.
Gleichzeitig erreicht man damit eine deutlich bessere Strukturierung des QT´s, da logische Teilbereiche sich in eigenen Klassen abgrenzen lassen.
Sicher gibt es einige Variablen die global sein müssen (z.B. HInstance), das ist aber äusserst selten der Fall.

Der grösste Vorteil der OOP ist die Möglichkeit der Vererbung, d.h. Klassen mit ähnlichen Funktionen erben von einer Vorfahr-Klasse die bereits alle Gemeinsamkeiten der späteren Derivate implementiert.
Die vererbten Klassen implementieren dann nur einige wenige neue Methoden oder überschreiben virtuelle/abstrakte Methoden der Basisklasse um die Funktionsweise an den benötigten "Spezialfall" anzupassen.

Die OOP zwingt zu etwas abstrakterem Denken, sorgt dann aber für eine Strukturierung und Übersichtlickeit des QT die sich mit globalen Variablen einfach nicht erreichen läßt.

Nochmal: verboten sind globale Variablen nicht - manchmal sogar unumgänglich, aber wenn möglich sollte man imo darauf verzichten.


MfG,
Tryer
hassedelphi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101

WIN XP
D7 Enterprise
BeitragVerfasst: Di 12.08.03 11:42 
thx :wink:

_________________
you're not be able to help, that you're an human