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; }