Problem bei return char*
-
Hi zusammen,
habe folgende Funktion:
extern "C" __declspec (dllexport) char* SM_readSerialnumber() { AnsiString ueantwort; if(GD.Merkmal == "A") COMU->ReadPos(GD.Seriennummer, ueantwort, 0); else if(GD.Merkmal == "B") COMU->ReadPos(true,GD.Seriennummer,ueantwort); else if(GD.Merkmal == "C") COMU->ReadPos(GD.Seriennummer,ueantwort); char testvar[16]; char *ptr_test = testvar; ptr_test = ueantwort.c_str(); return ptr_test; }
Bekomme nun in den AnsiString z.B einen Wert von "ABC12345123".
Pass auch alles soweit.
Mein Problem:
Sobald ich das Return erreiche steh plötzlich nicht mehr "ABC1234529E" im Pointer sondern "ABC1234\x18".
Warum schneidet er die letzten drei Stellen ab und konvertiert diese???
Kann mir jemand helfen?
Brauche die Nummer sauber als Rückgabewert!Danke
-
Siehe FAQ, Abschnitt AnsiString.
-
Hi,
danke für den Hinweis, aber es geht immer noch NICHT!
Mache es jetzt so:
extern "C" __declspec (dllexport) char* SM_readSerialnumber() { AnsiString ueantwort; if(GD.Merkmal == "A") COMU->ReadPos(GD.Seriennummer, ueantwort, 0); else if(GD.Merkmal == "B") COMU->ReadPos(true,GD.Seriennummer,ueantwort); else if(GD.Merkmal == "C") COMU->ReadPos(GD.Seriennummer,ueantwort); char *ch = new char[ueantwort.Length()+1]; strcpy(ch, ueantwort.c_str()); return ch; }
Bekomme immer noch die gleichen falschen Zeichen zurück!
An was leight das?
Im ch steht auch ein komisches "ö" mit Tilde?Danke