dll in visual c++ :(





  • hab mir mal die henkesoft-links vorgenommen...solange ich mit
    zahlen rummache gehts ja auch, aber sobald ich mit
    stringvariablen arbeiten will, haut nix hin

    STDMETHODIMP CQuadrat::TestString(CString x, CString *y)
    {
    	*y=x+"-> geschafft";
    	return S_OK;
    }
    

    (sagt nix zu dem quadrat...hab nur mal rumgetestet 🙂 )

    in der .idl steht folgendes drin:

    [id(3), helpstring("Methode TestString")] HRESULT TestString([in] CString x,[out] CString*y);
    

    und die fehlermeldung ist:

    expecting a type specification near "CString"

    das problem ist aber, das ich mit der dll strings verarbeiten soll.
    außerdem fehlt mir noch die möglichkeit der auswahl der methoden...ähnlich wie bei objekten mit
    punkt dahinter und dann blättern.

    enrico

    btw: wenns mich nicht so annerven würd, daß ich net kapier, hätt ichs schon aufgegeben 😕



  • @sovok

    was ich machen will? mmmhh wenn ich das wüßte 😉 nein...also. ich mach ein praktikum und hab den auftrag bekommen,
    eine dll zu schreiben. das ganze in visual c++ und für vb6.
    diese dll soll alle funktionen enthalten, die die klasse CString mitbringt...also späße wie insert, length usw. das prob ist, daß ich die
    CString nicht nachproggen will und auch nicht fähig wäre. also alles in ne klasse rein, die methoden ähnlich benannt und mit normalen
    string variablen runtergeschrieben.
    was weiß ich, in etwa so

    CString CStringDll::MakeUpper()
    {
    	CString str=STR;
    	str.MakeUpper();
    	return str;
    
    }
    

    anforderungen unter vb sollen sein, eine referenz, instanz (wie auch immer das da heißt) zu erstellen. dann soll das objekt
    (so heißt das bei mir) einfach nen punkt dahinter bekommen und die auswahl dastehen.

    und ich hab keinen plan, wie ich das machen soll 😞

    enrico



  • Es gibt keinen CString in einem COM.
    Auc VB kennt keinen CString. Du musst dich an die VATTYPEN halten die beide (c++, VB) verstehen. z.B. BSTR



  • also BSTR schluckt er, aber kann ich damit auch mit zeichenketten arbeiten? wie gesagt, ich bräuchte da was zur stringverarbeitung
    ...am wichtigsten wäre eine art appand-funktion. könntest du mir da vielleich ein bsp geben, damit ich weiß, wie ich in etwa ran
    gehen muß. wie gesagt,
    die dll (oder was immer da rauskommt), sollte dann so arbeiten, als wenn ich in c++ folgendes mache:

    CString str;
    str. [so, und hier geht jetzt ne schöne lange liste mit vielen funktionen auf]

    aber ihr habt mir schon richtig gut geholfen...schonmal ein

    👍 RIESEN DANKESCHÖN 👍

    losschick, damit ich euch warm halten kann 🙂

    enrico



  • ich glaub, ich gebs auf..seit einer woche fumel ich schon dran rum und nix kommt raus. von wegen statisch verlinkte dll´s, mit denen ich die mfc mit einbinden kann...irgendwie will das nich...bstr addieren? fehlanzeige 😞

    ...alles immer so einfach beschrieben...doll...etliche tuts haben auch nichts gebracht...

    so, jetzt geh ich erstmal eine rauchen und bin dann vielleicht nicht mehr so ganz resigniert eingestellt 😕

    enrico



  • bezüglich bstr

    CString str("hallo");
    CString str2("nix");
    
    //mach nen bstr draus
    BSTR bstr=str.AllocSysString();
    //aus bstr ein cstring machen
    str2 = bstr;
    

    es gibt auch ne klasse für bstrs die mit dem cstring kompatibel is

    die heisst CComBSTR

    CComBSTR bstr("test");
    CString str ("test2");
    

    da sollte eigentlich alles gehn

    bstr += str;
    str +=bstr... etc.



  • ist denn CComBSTR kompatibel zu VB?

    wenn ja, dann könnte es klappen...in c++ scheints schon zu funzen 🙂

    enrico



  • ich hab dir ja das activex gemailt
    das benutzt BSTR für den transfer von strings zwischen vb und c++

    cstring ist eine klasse für c++ um mit char* zu arbeiten
    ccombstr ist eine klasse für c++ um mit BSTR zu arbeiten

    weder cstring noch ccombstr sind in vb vorhanden

    in vb gibts nur String

    in dem activex control kümmert sich ms darum aus deinem bstr einen vb String zu machen

    am besten lässt dus dabei bis du mehr erfahrung hast (es wär auch mit vb Strings und char* zu arbeiten)



  • ok leuts, bis hierher komm ich...

    also

    //gibt mir zu 100% den gleichen string zurück...warum?
    BSTR __stdcall ChangeString2 (BSTR sValue,BSTR sValue2 )
    {
    BSTR test;
    test= sValue;
    return (test);
    }
    
    //mit der hier gehts einigermaßen. nur die ausgabe ist scheiße
    BSTR __stdcall ChangeString ()
    {
    BSTR X;
    X=SysAllocString(L"hallo welt aus vb");
    return (X);
    SysFreeString(X);
    }
    

    ihr sehts ja,
    ChangeString2 gibt mir den string richtig zurück.nur will ich nen andern anhängen und
    da scheißt er mich an von wegen: zeiger können nicht addiert werden.
    ChangeString gibt mir ne blöde ausgabe:
    "hallo welt aus vb"
    ich denke, ich brauch nicht zu sagen, was ich will 🙂
    aber um 2 strings zusammenzuhängen brauch ich anscheinend das SysAllocString.
    habt ihr nen tip für die konvertierung?

    danke

    enrico


Anmelden zum Antworten