Undefiniertes Symbol "SecondProcess"



  • Hallo,

    im Quelltext von Form1 möchte ich einen Thread manchmal anhalten u. dann wieder weiterlaufen lassen.
    Mit folgendem Code erzeuge ich zu Beginn des Programms den Thread und starte diesen.

    TPing *SecondProcess = new TPing(true); // Thread erzeugen 
     SecondProcess->Priority = tpLower; // niedrigere Priorität setzen 
     SecondProcess->Resume(); // Thread jetzt ausführen
    

    Dies funktioniert auch so.
    Aber: Trage ich jedoch in einer eigens erstellten Funktion "void __fastcall NextPing()" den Befehl

    SecondProcess->Suspend(); // PingThread jetzt anhalten
    

    ein, erkennt er diese nicht, obwohl ich in der Form1.h unter public die Deklaration "void __fastcall NextPing(void)" eingetragen habe. Es erfolgt die Fehlermeldung Undefiniertes Symbol "SecondProcess".

    Was habe ich falsch deklariert?



  • Hallo

    so wie der Ausschnitt aussieht, ist SecondProcess lokal in einer Funktion und deshalb in anderen Funktionen nicht mehr gültig. Das muß also auch ein Member von Form1 werden.

    bis bald
    akari



  • In der Thread-Unit (unit3.h) sieht die Deklaration so aus:

    class TPing : public TThread
    {
    private:
    
    protected:
            void __fastcall Execute();
    public:
            __fastcall TPing(bool CreateSuspended);
    };
    

    Wie soll ich denn da ein "Member" von Form1 draus machen?



  • Hallo

    die Deklaration von SecondProcess (nicht von TPing) muß aus der Funktion in die Deklaration von TForm1 verschoben werden. Also
    [cpp]class TForm1
    {
    ...
    protected :
    TPing SecondProcess;
    public :
    __fastcall TForm1(TComponent
    Owner);
    };[/cpp]

    bis bald
    akari



  • Danke.. aber es funktioniert immer noch nicht:

    Jetzt kommt bei der Zeile

    TPing *SecondProcess = new TPing(true); // Thread erzeugen
    

    die Meldung E2451 Undefiniertes Symbol 'SecondProcess' und bei der neuen Zeile

    protected :
      TPing *SecondProcess;
    

    kommt E2303 Typname erwartet! Das "TPing" scheint ihm da nicht zu schmecken.



  • Hallo

    naja, also darauf kannst du auch selber kommen :
    Die Klasse TPing muß von Form1.h aus auch zu erreichen sein.
    Also dort ganz oben nach den anderen Includes

    #include "unit3.h"
    

    und dann beim Erstellen der Instanz in einer Funktion

    SecondProcess = new TPing(true); // Thread erzeugen
    

    Schau dir mal ein Tutorial zum Thema C++, OOP und BCB an, siehe oben rechts das Menü

    bis bald
    akari


Anmelden zum Antworten