DLL if abfrage (Problem)



  • Hallo,
    habe in mein dll eine if abfrage eingebaut der Leider nicht funktioniert.
    Der geht über die IF abfrage und findet keine Übereinstimmung obwohl es vorhanden ist.
    Liegt das vielleicht an dll(seid küren dabei(dll))?

    extern "C" __declspec (dllexport) String Instant(char *x)
    {
     unsigned char* v;
     v = x;
    
     if (v == "v1.exe"){
    	 x = "254";
     }
     else if (v == "w2.exe") {
    	   x = "34";
    	  }
     else if (v == "hb") {
    	   x = "4";
    	  }
     else if (v == "ha") {
    	   x = "526";
    	  }
    ....
    

    Dank im Voarus.



  • char* == char* wird die Pointeradressen vergleichen, nicht deren inhalt. Als vllt strcmp oder vernünftige Strings benutzen.



  • Was heisst den vernünftige Strings ?
    Besispiel, Tipp wäre Klasse.



  • Na Stringklassen, die operator== zum Vergleichen ihres Inhaltes überladen, std::string oder AnsiString beispielsweise. Bist Du aufgrund einer API an C-Strings gebunden?



  • Also, kurze info ich habe mein appz der die bei Update in meine DB sich einloggt und paar werte vergleicht.
    Dazu benutze ich eine Dynamic dll der je nach Version erneuert wird.
    Habe vorher Probleme gehabt werte an die dll zu senden.
    Läuft zur Zeit nur mit

    extern "C" __declspec (dllexport) String Instant(char *x)
    {
     unsigned char* v;
    ...
    

    und darauf muss ich aufbauen.



  • Hallo

    Du must dich schon entscheiden ob "extern C" oder "String" als Datentyp.
    Ersteres erlaubt dir die Verwendung der DLL auch aus anderesn Compilern/Sprachen heraus, zweiteres erlaubt dir den von dir gezeigten Vergleich, wenn du aus dem Parameter x (y brauchst du nicht) auch ein String machst.

    Um nochmal zum eigentlichen Problem zurückzukommen : C-Strings wie bei dir vergleicht man mit der C-Funktion strcmp, nicht mit dem ==Operator.

    bis bald
    akari



  • Ok.
    Danke für die Infos.


Anmelden zum Antworten