[C++] AutoIt.ws API

  • Hallo Leute...
    Ich wusste jetz nicht recht wo ich das reinpacken soll. Ich hoffe, dass ich bei "Projekte" richtig bin.
    Seit ca. 2 Wochen versuche ich neben der Schule ein bisschen C++ zu lernen, Fortschritte? ... naja, halten sich in Grenzen.
    Da ich meine C++-Kenntnisse natürlich verbessern will, habe ich mich entschieden ne kleine DLL zu schreiben.

    Zudem ist es einfach in AutoIt zu implementieren:

    [autoit]

    $test=DllCall("AutoIt.ws API.dll","str:cdecl","_autoit_url","str","http://google.at")
    MsgBox(0,"DLL-Test",$test[0])

    [/autoit]

    AutoIt.ws API
    Derzeitige Funktionen
    _autoit_url* Baut eine Verbindung zum Server auf, sendet die URL welche gekürzt werden soll, und gibt die kurze wieder zurück.
    _autoit_count** Baut eine Verbindung zum Server auf, fragt die Summe aller eingetragenen URLs ab.

    * Noch nicht fertig...
    ** Geplant...

    Meine bisherigen Source Codes:
    sh. Anhang

    Also wer lust und laune hat mir ein bisschen unter die Arme zu greifen ist willkommen :D

    mfg. Andi

    4 Mal editiert, zuletzt von sl4y3r (1. Februar 2012 um 19:33)

  • beim send befehl muss du vPacket.c_str() und dann vPacket.length() sonst bekommst du die größe der vPacket klasse, also
    send(sConnect, vPacket.c_str(), vPacket.length(), NULL); oder wenn der string null terminiert sein soll send(sConnect, vPacket.c_str(), vPacket.length()+1, NULL);

  • Danke :D
    ist halt doch irgendwie komplett anders wie AutoIt
    Achja das +1 hab ich übersehen....
    Ahmm.... es gibt mir aber immer noch nen Fehler aus:

    Spoiler anzeigen
    Code
    1>c:\users\andi\documents\visual studio 2010\projects\privat\autoit.ws api\autoit.ws api\main.cpp(57): error C2065: 'string' : undeclared identifier
    1>c:\users\andi\documents\visual studio 2010\projects\privat\autoit.ws api\autoit.ws api\main.cpp(57): error C2146: syntax error : missing ';' before identifier 'vPacket'
    1>c:\users\andi\documents\visual studio 2010\projects\privat\autoit.ws api\autoit.ws api\main.cpp(57): error C2065: 'vPacket' : undeclared identifier
    1>c:\users\andi\documents\visual studio 2010\projects\privat\autoit.ws api\autoit.ws api\main.cpp(59): error C2065: 'vPacket' : undeclared identifier
    1>c:\users\andi\documents\visual studio 2010\projects\privat\autoit.ws api\autoit.ws api\main.cpp(59): error C2228: left of '.c_str' must have class/struct/union
    1>          type is ''unknown-type''
    1>c:\users\andi\documents\visual studio 2010\projects\privat\autoit.ws api\autoit.ws api\main.cpp(59): error C2065: 'vPacket' : undeclared identifier
    1>c:\users\andi\documents\visual studio 2010\projects\privat\autoit.ws api\autoit.ws api\main.cpp(59): error C2228: left of '.length' must have class/struct/union
    1>          type is ''unknown-type''


    Was ich da rauslese erkennt er string nicht, obwohl ich es in der main.h inkludiert habe. ?(

    Einmal editiert, zuletzt von sl4y3r (30. Januar 2012 um 16:55)

  • Du musst std::string verwenden. std ist der namespace. Wenn du das nicht jedesmal hinschreiben willst, kannst du auch an den Anfang using namespace std; schreiben. Der Vorteil der Namespace-methode ist, dass jedes Modul seine eigenen Klassen und Funktionen haben kann, ohne dass sich die Namen überschneiden. Aus dem gleichen Grund verwendet man in AutoIt ja auch immer _UDFNAME_FUNKTIONSNAME.

  • So... hab jetzt mal meine aktuellste Version upgeloaded (sh. Post 1)
    Veränderungen:
    Hab jetzt ne Socket Klasse erstellt, damits ein bisschen übersichtlicher wird.. ist aber leider immer noch Buggy bzw. funktioniert nicht. xD

    moritz1243: Ich hab es jetzt ein bisschen umprogrammiert, statt string verwende ich nun char*, daher ist der include nicht mehr nötig... zumindest gibts mir keinen Fehler mehr aus :D
    Marthog: Ist gut zu wissen, ich habs so gut wie bei jeden online Tutorial schon mal gesehen, aber erklärt wurde es in keinem, danke. BTW: hab mal dein AutoIt C++ Projekt überflogen, ist wirklich hilfreich, erst recht für Einsteiger wie mich ^^
    Xorianator: Danke :D

    Einmal editiert, zuletzt von sl4y3r (31. Januar 2012 um 15:08)

  • Kein Problem, bin froh wenn mir geholfen wird :P
    Hab auch ne weile gebraucht, bis ich die Klasse so halbwegs hinbekommen habe...
    __________________________________________
    So, ich hab jetzt den wieder den neuen Source rauf geladen. Nun verwende ich eine Socket-Klasse, welche nach längeren suchen gefunden habe.
    Die Abfrage funktioniert nun, es scheitert nur mehr an der Übergabe an AutoIt. Denn ich bekomm irgendwelche YYY Zeichen angezeigt:
    autoit.de/wcf/attachment/15047/
    (Es sollte folgendes Ausgeben: "http://google.at <- URL wurde verarbeitet...")

    Variablen Typ des Returns:
    C++: LPCSTR
    AutoIt: str:cdecl
    Sollte eigentlich gehn!?