Hilfe bei TClientSocket in eigener Klasse



  • Hi

    ich habe mir eine eigene Klasse geschrieben die als private Variable in der Header einen TClientSocket beinhaltet:

    private:
        TClientSocket *Socket;
    

    jetzt ist nur mein problem das der socket beim starten des Programms bereist aktive = true hat was ja nicht so toll ist und wenn ich das ändere! ( zum Beispiel im Konstruktor) bekomme ich immer eine zugriffsverletzung was mache ich falsch?

    Muss ich dem

    *Socket
    

    erst in form

    Socket = new TClientSocket
    

    die Klasse zuordnen? wäre ja eigentlich logisch aber das klappt nicht!

    Hoffe ihr könnt mir helfen!

    THX

    Dagsta



  • Zugriffsverletzung?



  • Hi ohne etwas verändert zu haben kann ich jetzt wieder werte zuweisen!

    Jetzt bekomme ich aber folgende Fehlermeldung:
    Im Project NoxShare.exe ist eine Exception der Klasse EPrivilege aufgetreten. Meldung: 'Pivilegierte Anweisung'. Prozeß wurde angehalten. ...



  • Hier mal der source meiner Klasse:
    Header:

    //---------------------------------------------------------------------------
    
    #include <vector>
    #ifndef conServerH
    #define conServerH
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ScktComp.hpp>
    using namespace std;
    //---------------------------------------------------------------------------
    class conServer
    {
      struct result
      {
        int anz;
        AnsiString FileName;
        AnsiString Hash;
        unsigned int size;
        TStringList *User;
      };
      private:
            TClientSocket *Socket;
      public:
            bool connect(AnsiString IP);
            void __fastcall SocketRead(TObject * Sender, TCustomWinSocket *Socket);
            void init();
            vector<result> Results;
            conServer();
    };
    #endif
    

    cpp datei:

    //---------------------------------------------------------------------------
    #include <vcl.h>
    #include <vector>
    #pragma hdrstop
    
    #include "conServer.h"
    
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    using namespace std;
    bool conServer::connect(AnsiString IP)
    {
      bool ok = true;
      //Socket->Host = IP;
      //Socket->Address = "127.0.0.1";
      try
      {
        Socket->Active = true;
      }
      catch(...)
      {
        ok = false;
        Socket->Active = false;
      }
      return ok;
    }
    
    void __fastcall conServer::SocketRead(TObject * Sender, TCustomWinSocket *Socket)
    {
       AnsiString Message = Socket->ReceiveText();
       ...
    
         Results.push_back(Temp);
       }
    }
    
    void conServer::init()
    {
      if(Socket->Active == false)
      {
        Socket->Host = "localhost";
        Socket->Port = 6958;
        Socket->OnRead = SocketRead;
      }
    }
    
    conServer::conServer()
    {
      Socket->Active = false;
    }
    

Anmelden zum Antworten