Dumme Frage... Wie Variable in anderer Form bearbeiten
-
ronschulz schrieb:
In Form1 setzte ich SchalterPosX durch eine Headerdatei Global.h mit
int SchalterPosX = 0;Diese hole ich dann ja mit
#include "global.h"Soweit korrekt!
Wenn ich diese nu in Form2 ändern möchte, klappt das nicht durch
Form1->SchalterPosX = 4;Das stimmt auch!
Wenn ich include Global.h hier in Form 2 machen würde, dann hätte ich zwar auch die Variable, ist aber ja dann nicht die Gleiche, oder?
Genau da ist der Hund begraben! Es ist die gleiche, wenn Du jedesmal auf Form1->SchalterPosX zugreifst. Und das geht nur, wenn Du die Headre-datei der passenden cpp "includest". Am besten mit "Datei->Unit-Header einschliesen" und dann die passende *.h auswählen. Allerdings dazu erst im Editor die *.cpp aktivieren , in die Du includen willst!!!Hatte mir überlegt, ich könne eine Funktion schreiben, welche diese Variable schreibt und eine, welche diese Variable liesst. (ReadPosX() und WritePosX()). Muss ich dann die Headerdatei der zugehörigenn cpp Datei in der neuen "Form" includen? Und wie spricht man diese Funktion dann an?
Ron
Ist zwar komplizierter so, aber dazu schau mal in der F1-Hilfe unter properties nach.....
Viel Erfolg!
*EDIT:
Ich hatte dich falsch verstanden! Oben steht nur dann kein Müll, wenn du int x; in der Unit1.h erstellt hast. Da du allerdings dieses in einer separaten headerdatei ohne .cpp getan hast, solltest Du über die Properties tun, wobei ich es noch nie ausprobiert habe, einer Header-Datei eine property zuzuzweisen, ohne dass ich eine .cpp dabei hatte...Mouse
-
Aber zum guten Schluss macht die FAQ wieder am meisten Sinn :
http://www.c-plusplus.net/forum/viewtopic.php?t=39242
:xmas1:
-
Ok, es klappt nun. Bloss habe ich auch eine Void MotorGoHome() in Form1, welche ich in Form2 aufrufen möchte. Einfach so in der Headerdatei von Form1 unter Public "Void MotorGoHome()" eintragen reicht anscheinend nicht. Was muss, um eine Funktion in der form1.cpp von Form2 aus ausführen zu können in der zugehören Headerdatei der form1.cpp stehen? Also in der Form1.h? :xmas2:
-
Hallo
Bloss habe ich auch eine Void MotorGoHome() in Form1, welche ich in Form2 aufrufen möchte. Einfach so in der Headerdatei von Form1 unter Public "Void MotorGoHome()" eintragen reicht anscheinend nicht. Was muss, um eine Funktion in der form1.cpp von Form2 aus ausführen zu können in der zugehören Headerdatei der form1.cpp stehen? Also in der Form1.h?
Du hast vielleciht das Semikolion vergessen?
void MotorGoHome();
Ist die Funktion ein Member von Form1, oder eine eigene Funktion?
bis bald
akari
-
Das ist drin. Klar! Aber was muss in der Headerdatei stehen?
-
akari schrieb:
Ist die Funktion ein Member von Form1, oder eine eigene Funktion?
bis bald
akariDas ist die Frage, und ohne Antwort keine Gegenantwort...
Naja, wenn in Form1.cpp
void Form1::MotorGoHome() { ...... }
steht und in der zugehörigen Form1.h die Deklaration unter
public
dann kannste die in Form2.cpp mit
Form1->MotorGoHome();
ansprechen.
Und in der form2.cpp muss nur die Form1.h inkludiert werden:#include "Form1.h"
Viel Erfolg, Mouse
P.S.: Sry, Frage nicht beantwortet: in der Form2.h muss nix davon stehen.....
-
Ok, ich glaube, der Fehler liegt in der H-Datei. Wie sieht dort die Deklaration genau aus?
-
D@ngermouse schrieb:
**
Naja, wenn in Form1.cppvoid Form1::MotorGoHome() { ...... }
steht und in der zugehörigen Form1.h die Deklaration unter
public
dann kannste die in Form2.cpp mit
Form1->MotorGoHome();
ansprechen.
Und in der form2.cpp muss nur die Form1.h inkludiert werden:#include "Form1.h"
Viel Erfolg, Mouse
P.S.: Sry, Frage nicht beantwortet: in der Form2.h muss nix davon stehen.....**
Alle Fragen beantwortet? In welcher "H-Datei" meinst Du denn....
Bitte genaue Angaben!!!Mouse
-
Ich meine, wie der Eintrag, also die Deklaration in der H-Datei aussehen muss. Das weiss ich nämlich nicht.
-
im Header sollte es so stehen
public: void MotorGoHome();
-
Hm. So einfach? Ich werde es testen und mich hier wieder melden. So hatte ich es aber schon versucht, glaube ich. Aber wenn es nicht geht, bringe ich die Fehlermeldung hier mit ein.
ABER DANKE DAFÜR!!!!
-
So, habe nun die Fehlermeldung:
'TForm1::MotorGoHome()'referenced from d:\........\Form1.obj
Wat is dat..?
-
also nochmal zusammengefasst:
in der Form1.h steht
class TForm1 : public TForm { public: void MotorGoHome(); }
in Form1.cpp steht
void Form1::MotorGoHome(); { //Tu etwas }
und in Form2.cpp kannst du mit
Form1->MotorGoHome();
drauf zugreifen
ausserdem kannst du mal aus deinem Projektverzeichnis alle Dateien mit der Endung "obj" löschen und dann neu kompilieren
-
Linnea schrieb:
in Form1.cpp steht
void Form1::MotorGoHome(); { //Tu etwas }
[cpp]void TForm1::MotorGoHome()
{ //Tu etwas
}[/cpp]
-
D@ngermouse schrieb:
Und in der form2.cpp muss nur die Form1.h inkludiert werden:
#include "Form1.h"
Viel Erfolg, Mouse
P.S.: .... in der Form2.h muss nix davon stehen.....
Jetzt aber....
Mouse
-
Es hat geklappt! Ich habe die :: verwendet und das T vor dem Form1 gesetzt. Das fehlt auch. Nun geht es! DANKE!!!!