aus Thread in Kompo auf Variabeln zugreifen
-
so, sorry wegen der belästigung, habe den fehler mitlerweile begriffen

wen es noch intressiert://kompo cpp-file ReadThread = new TElTecCommRead(false, this); //Thread __fastcall TElTecCommRead::TElTecCommRead(bool CreateSuspended, TComponent *compComm) : TThread(CreateSuspended) { TElTecComm *Comm = (TElTecComm *)compComm; }
-
1. Du hast C++ also nutze auch Dinge wie z.B. dynamic_cast() (siehe FAQ!)
2. Wieso "TComponent" und dann den Aufwand zu casten und nicht einfach direkt den Klassenbezeichner deiner Klasse als Parameter?
-junix
-
1. thx für den tipp mit dynamic_cast.. werde es beherzigen..
2. wenn ich dich jetzt richtig verstanden habe, dan habe ich genau das eben schon erfolglos versucht (siehe ab 2. beitrag von dieser seite)
-
1. In Headerfiles werden keine Variablen deklariert. Wenn dann höchsten als "extern" wenns denn schon unbedingt globale sein müssen! (nein müssen es nicht)
2. Du hast hier ein Abhängigkeitsproblem, das sich mit einer Forward-Deklaration lösen lässt. Sprich du schreibst in dein Headerfile von "TElTecComm" vor der Klassendeklaration:
class TElTecCommRead;Das heisst soviel wie "Lieber Compiler, ich hab da ein Objekt, dessen genaue Bedeutung du später noch kennen lernst"
Das Selbe natürlich auch umgekehrt.
3. Warnungen spucken weder Compiler noch Linker nur zum Spass aus (o;
-
3. dachte ich mir auch schon

2. einfach nur

1.
jetzt als ich langsam dachte, ich verstehe die welt, verwirrst du mich...
bin aber gerne bereit, zu lernen.
wenn ich also richtig verstanden habe, ist es nicht ok, im header zB.class MyKomponente { private: int iZahl; AnsiString asFilePath; ... protected: ... };Variablen zu deklarieren, die man häufig in Funktionen braucht?
-
BigNeal schrieb:
1.
jetzt als ich langsam dachte, ich verstehe die welt, verwirrst du mich...
bin aber gerne bereit, zu lernen.
wenn ich also richtig verstanden habe, ist es nicht ok, im header zB.class MyKomponente { private: int iZahl; AnsiString asFilePath; ... protected: ... };Variablen zu deklarieren, die man häufig in Funktionen braucht?
Doch, das (Member-Variablen oder Klassen-Attribute genannt) ist gut.
Nicht so gut sind globale Variablen, ohne einen Bezug zu einer Klasse.
Wenn schon, gehören die in die Implementationsdatei, mit extern-Verweis in der Headerdatei.bis bald
akari
-
ok, dan ist gut.. bei mir fing schon die ganze welt an einzubrechen

das einzige was ich global habe, sind definitionen mit dem schlüsselwort enum und funktionen mit *typedef void __fastcall (__closure ...)
-
BigNeal schrieb:
das einzige was ich global habe, sind definitionen mit dem schlüsselwort enum und funktionen mit *typedef void __fastcall (__closure ...)
Lügner!
BigNeal schrieb:
//TElTecComm h-file TThread *ReadThread;Würde mich sehr wundern, wenn dich der Linker da nicht vor einem Vorkommnis in mehreren Modulen warnt?
-junix
-
Ausführlicher
class PACKAGE TElTecComm : public TComponent { __published: ... private: TThread *ReadThread; protected: ... public: ... };akari schrieb:
Doch, das (Member-Variablen oder Klassen-Attribute genannt) ist gut.
Nicht so gut sind globale Variablen, ohne einen Bezug zu einer Klasse.So wie ich das sehe, hat sie Bezug zur Klasse
etwas mehr vertrauen junix

-
BigNeal schrieb:
etwas mehr vertrauen junix

Das habt ihr mir hier gründlich ausgetrieben (o;
-junix