dll mit netzwerk funktion



  • Jansen schrieb:

    "Funktioniert nicht" oder "läuft irgendwie nicht" sind keine ausreichenden Fehler- bzw. Problembeschreibungen.

    Hast Du diesen Satz als Vorlage gespeichrt, oder mußt Du ihn jedesmal neu tippen? 🤡



  • was soll er denn sonst schreiben? jedes mal 10 minunten überlegen, wie er einen neuen satz formulieren könnte? 😉 😃



  • Kann ich inzwischen schon blind tippen 🙂
    Vorlagen habe ich allerdings auch ...

    Aber lasst uns bitte beim Thema bleiben. Ich bin sicher, dass mutzel das noch besser hinbekommt..



  • sorry tut mir leid ... ich hatte ein wenig stress beim ersten post ..

    hab in der zwichenzeit noch ein wenig rumgebastelt und haenge nun bei der zuweisung der einzelnen events (z.b. onconnect) ..

    void  __fastcall OnConnect(System::TObject* Sender, TCustomWinSocket* Socket){}
    
    int main(int argc, char* argv[])
    {
            TClientSocket *MySock;
    
            MySock = new TClientSocket(NULL);
    
            MySock->Host = "google.de";
    
            MySock->Port = 80;
    
            MySock->Active = true;
    
            MySock->OnConnect = OnConnect;
    
            return 0;
    
    }
    

    danach bekomm ich diesen fehler

    [C++ Fehler] Unit1.cpp(25): E2034 Konvertierung von 'void (_fastcall *)(TObject *,TCustomWinSocket *)' nach 'void (_fastcall * (_closure )(TObject *,TCustomWinSocket *))(TObject *,TCustomWinSocket *)' nicht möglich
    

    das eigendliche problem ist das ich keine ahnung hab was dieses _closure bedeutet und wie man es einsetzt



  • mutzel schrieb:

    das eigendliche problem ist das ich keine ahnung hab was dieses _closure bedeutet und wie man es einsetzt

    Warum liest du dann nicht in der Hilfe vom BCB nach? Und zu deinem Problem mit der Zuweisung in der FAQ steht ein Beitrag dazu, wenn ich mich nicht irre 🙂



  • ja .. hab mir das in der faq angeguckt nur funktioniert bei mir irgendwie nicht .. und die bcb hilfe is auch nich gerade aufklaerend gewesen



  • Du solltest das Event zuweisen BEVOR du den Socket aktivierst.
    Für das aktivieren würd ich im übrigen dann auch die Methode Open() nutzen und nicht Active nehmen. Active wird über die Methode Open() dann später auf true gesetzt 🙂



  • PuppetMaster2k schrieb:

    Du solltest das Event zuweisen BEVOR du den Socket aktivierst.
    Für das aktivieren würd ich im übrigen dann auch die Methode Open() nutzen und nicht Active nehmen. Active wird über die Methode Open() dann später auf true gesetzt 🙂

    momentan is das eigendlich relativ egal .. da der code ja nicht mal compiliert wird



  • mutzel schrieb:

    void  __fastcall OnConnect(System::TObject* Sender, TCustomWinSocket* Socket){}
    
    [b]int main(int argc, char* argv[])[/b]{
            TClientSocket *MySock;
    
            MySock = new TClientSocket(NULL);
    
            MySock->Host = "google.de";
    
            MySock->Port = 80;
    
            MySock->Active = true;
    
            MySock->OnConnect = OnConnect;
    
            return 0;
    
    }
    

    Was willste mit dem
    [cpp]
    int main(int argc, char argv[])*{
    [/cpp]
    bei OnConnect anfangen?



  • VergissEs schrieb:

    Was willste mit dem
    [cpp]
    int main(int argc, char argv[])*{
    [/cpp]
    bei OnConnect anfangen?

    Das ist die Hauptfunktion eines Konsolenprogramms, das darüber ist die Deklaration der Funktion aus der Header-Datei (hoffe ich).

    Bei mir funktioniert folgendes:
    Header:

    private:	// Anwender-Deklarationen
    	TClientSocket* pMySocket;
    	void __fastcall MySocketConnect(TObject *Sender, TCustomWinSocket *Socket);
    

    CPP:

    pMySocket = new TClientSocket(NULL);
    	pMySocket->OnConnect = MySocketConnect;
    

    Vielleicht liegt's an dem Namen (OnConnect) und auf jeden Fall muß die Funktion zugewiesen werden, bevor der Socket verwendet wird. Aber das hatte PuMa2k ja schon erwähnt.



  • hm .. ich weiss jetzt warum der fehler bei mir kommt und es in der faq und bei Joe_M. ohne fehler geht

    die fehlermeldung kommt nur wenn meine onconnect funktion nicht teil vom TForm1 ist .. kann man das irgendwie umgehen? .. gibt es eine moeglichkeit auch funktionen als events zu nehmen die nicht teil von TForm1 sind



  • gibt es denn keine moeglichkeit die komponente auch ohne ein Form benutzen zu koennen?



  • mutzel schrieb:

    die fehlermeldung kommt nur wenn meine onconnect funktion nicht teil vom TForm1 ist

    Fast. primär muss es eine Klassenmethode sein. Das kann eine beliebige Klasse sein, soviel ich weiss.

    Das problem allerdings scheint mir eher bei dem ClientSocket zu liegen. Wenn sich das seit meinen letzten Erfahrungen und Versuchen mit dem ClientSocket nicht geändert hat, kann die Kompo nicht ohne ein Parentfenster existieren, bzw. funktionieren. Das heisst also du wirst nicht umhin kommen dir nen eignen WinSock warpper zu schreiben oder einen zu suchen der Fensterfrei auskommt...

    -junix



  • junix:
    Das kann ich mir nicht recht vorstellen. Schlimmstenfalls nimmt man ein DataModule dazu und packt da die Komponenten zur Entwurfszeit drauf.


Anmelden zum Antworten