Fehler beim Thread erstellen
-
Also erstmal möcht ich hallo sagen, bin neu hier im Forum

Zu meinem Problem:
Ich hab mich mal an Threads versucht, da es ja nicht ganz so komfortabel ist immer mit Application->ProcessMessages(); zu arbeiten.Dazu hab ich mich mal an euerem BCB-Tutorial versucht. Hab dort auch alles verstanden und den Code erstmal übernommen. Doch wenn ich jetzt die Klasse aufrufen will
void __fastcall TForm1::Button1Click(TObject *Sender) { new TMyThread(false); }kommt folgender Fehler:
[C++ Error] Unit1.cpp(32): E2303 Type name expected
[C++ Error] Unit1.cpp(32): E2379 Statement missing ;Das Tutorial ist ja schon ein wenig älter, gibt es da Änderungen, wie man die Klasse aufruft?
Danke schon mal im voraus,
viele GrüßeRudi
-
Hallo
ist denn die Unit, in der TMyThread definiert wird, in das Projekt mit eingebunden, und wird der Header der Unit auch included?
bis bald
akari
-
Hallo,
Vielleicht sollte man den entstehenden Pointer auch einer Variable zuweisen.

-
In dem Projekt Manager wird auch unit2 (der thread) mit angezeigt. Ich hab erst vor kurzem mit dem BCB angefangen.
Muss ich noch irgendwas machen, um es einzubinden? Ich dachte der BCB macht das von alleine.@Braunstein:
Meinst du z.B. FMyThread = new TMyThread(false);
-
Hallo
du must sicher noch die Unit in der Cpp-Datei includen, in der du den Thread verwenden willst. Das sieht dann so aus
#include <vcl.h> #include "MyThread.h" // Headerdatei der Unit ... void __fastcall TForm1::Button1Click(TObject *Sender) { TMyThread *NewThread = new TMyThread(false); ... // Neue Instanz weiterverwenden }bis bald
akari
-
is drin:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::Button1Click(TObject *Sender) { TMyThread *NewThread = new TMyThread(false); } //---------------------------------------------------------------------------Soll ich vielleicht mal unit1.cpp, unit1.h, unit2.cpp und unit2.h posten?
EDIT:
Hab gesehen da ist nur Unit1 drin, hab Unit2.h auch mal includiert, jetzt kommt ne andere Fehlermeldung:[C++ Warning] Unit1.cpp(20): W8004 'NewThread' is assigned a value that is never used
[C++ Error] Unit2.cpp(29): E2451 Undefined symbol 'Form1'und zwar an der Stelle:
void __fastcall TMyThread::GuiElements() { //Da wir uns nicht im Gültigkeitsbereich von Form1 befinden, müssen wir qualifizieren mit Form1. Form1->DisplayLabel->Caption = IntToStr(FCount); }
-
Hallo
ist das selbe Problem wie das alte : Form1 ist im Thread unbekannt. Als einfachstes includes du in der Thread-CPP noch die Headerdatei von Form1.
bis bald
akari
-
Besten Dank, es funktioniert jetzt alles. Bin nur davon ausgegangen, dass BCB das includen selber übernimmt

Gruß
Rudi
-
Selbstständig includieren wie soll das gehen, dann wären ja alle Header des Lieferumfangs von C++ mit drin includiert, dann wäre das Projekt riesig!!!
-
Ne, meinte nur die Sachen, die man über "Neu" hinzufügt.