Variablenzugriff in zweites Formular
-
@Wîndoof: Du bist auch der letzte von dem ich erwarten würde, dass er das versteht was ich geschrieben habe. Denn das würde ja voraussetzen, dass du
a) liest was ich geschrieben habe
b) verstehst was ich geschrieben habe
c) über dein Trotzköpfchen springen müsstest...@Nick--HR: richtig... für kleine Progrämmchen offenbart sich der Vorteil der beschriebenen Regeln nicht. Erst bei grösseren Projekten merkt man, welche Vorteile aus der Einhaltung erwachsen.
Zu deiner Einstellung "ich wills ja auch gleich vernünftig lernen" kann ich nur gratulieren. Da könnten sich andere ne Scheibe von abschneiden (o;Well now. Was deine Funktionen betrifft, müsstest du mir nochmals genau erklären was du genau meinst. Was für eine Variable willst du by Value übergeben?
-
Nick--HR schrieb:
@Windoof: Das ich weiß wie man auf Labels, etc. in fremden Forms zugreift hab ich ja geschrieben, mir ging es um Variablen.
Die Variable oder Funktion sollte in der Klasse TForm1 deklariert sein, dann kannst du auf diese, sofern die unit1.h eingebunden ist, zugreifen. Das läuft nicht nur mit Labels und anderen Komponenten, sondern mit allen Variablen, Funktionen, etc. die in deiner Form gespeichert sind. Nicht aber die, die einfach global in unit1.cpp gespeichert sind. Das und nichts anderes wollte ich dir damit rüberbringen.
@junix: 1. Ich habe deinen Text gelesen, 2. ich habe ihn verstanden, 3. ich gehe davon aus, dass in diesem forum hier niemand mit einem großprojekt kommen wird. Man kann sicherlich ein Hello-World-Programm in Beachtung aller deiner Richtlinien schreiben, aber das wird dann wohl länger, langsamer und komplexer sein als das ganz einfache. In riesigen Projekten, klar, da sollte man die Regeln beachten, da gebe ich dir vollkommen recht, aber bei solchen Sachen wie hier... naja.
MfG Windoof
-
Es geht hier nicht um Komplexität oder Perfomance, sondern um die SICHERHEIT! Man soll sein Interface eben nur so definieren, das ein Benutzer keinen DIREKTEN Zugriff auf die Variablen hat. Alles andere erachte ich als Design-Problem.
Und das Schreiben viele Autoren. Scott Meyers wäre zB einer davon

-
Windoof schrieb:
Nick--HR schrieb:
@Windoof: Das ich weiß wie man auf Labels, etc. in fremden Forms zugreift hab ich ja geschrieben, mir ging es um Variablen.
Die Variable oder Funktion sollte in der Klasse TForm1 deklariert sein,
Falsch.
Windoof schrieb:
Nicht aber die, die einfach global in unit1.cpp gespeichert sind.
Falsch.
Windoof schrieb:
3. ich gehe davon aus, dass in diesem forum hier niemand mit einem großprojekt kommen wird.
Es geht nicht um grossprojekte sondern darum - wies Nick geschrieben hat - etwas sauber zu lernen. Wie gesagt: Die schmutzigen Hacks lernt man von alleine. Selten aber "wie mans richtig macht". Ausserdem spricht nichts dagegen auch im kleinen sauber zu arbeiten. Denn
Windoof schrieb:
aber das wird dann [wenn man das Hello-World nach den diversen designregeln schreibt]wohl länger
Hier verweise ich gerne auf die Aussage von Solarisduke: Wieviel Zeit verbringt der Programmierer mit Tippen in einem Projekt? 3%?
Nicht der Entwickler sollte es möglichst bequem haben sondern das Produkt sollte robust, wartbar und möglichst wiederverwendbar sein...Windoof schrieb:
langsamer
Wieso?
Windoof schrieb:
und komplexer sein
Wieso? Weil weniger globale abhängigkeiten zwischen den Modulen bestehen die nicht durch Funktionsaufrufe dokumentiert sind?
-junix
-
[quote="junix"]
Windoof schrieb:
Nick--HR schrieb:
@Windoof: Das ich weiß wie man auf Labels, etc. in fremden Forms zugreift hab ich ja geschrieben, mir ging es um Variablen.
Die Variable oder Funktion sollte in der Klasse TForm1 deklariert sein,
Falsch.
Mhhh....irgendwie scheint ihr euch ja nicht so wirklich einig zu sein. Wie kann ich denn meine Funktion die ich momentan noch in Untit1.cpp stehen habe aus Unit2.cpp heraus am geschicktesten aufrufen?
-
Deklaration im Header Unit2.h, implementation in Unit2.cpp.
In Unit1.cpp Unit2.h includen und Funktion benutzen.
-junix
-
Genauso hatte ich es auch gemacht. Hatte die Deklaration in der Header-Datei allerdings unter Public stehen, hab sie jetzt unter extern geschrieben und es funktioniert. Hoffe das ist im Sinne des Erfinders...
Danke für eure Hilfe!!
-
Nick--HR schrieb:
Hatte die Deklaration in der Header-Datei allerdings unter Public stehen,
Was für ein Public-Teil?
-junix
-
In der Header-Datei gibt es doch
__published: // Von der IDE verwaltete Komponenten
private: // Anwender-Deklarationen
public: // Anwender-Deklarationen
.
.
.
extern PACKAGE TForm1 *Form1;
-
Wenn ich einen char Array habe und darauf einen Pointer setzen will, dann kann ich ja keine Funktion SetChar (int index) schreiben, oder???