Funktion "L" nachbauen
-
Hidiho

Hab da wieder ma ne Frage *G*
Was genau macht die FunktionL"String"und wie kann ich diese manuell nachbauen?
...
Ich muss einen Adressstring bauen und den an eine Funktion übergeben, die ein wchar_t* argument erwartet.
Mache ich das Ganze wie folgt:
Klasse->Funktion(L"Adressstring");funktionierts einwandfrei.
...
Mache ich das Ganze dynamisch, weil ich den Adressstring aus mehreren Teilen zusammensetzen muss, klappt das nicht mehr.
AnsiString sAdressString = ...; wchar_t wAdressString = (unsigned int) sAdressString.c_str(); Klasse->Funktion(&wchar_t);Der Funktionsaufruf klappt zwar, aber ich erhalte keine Werte mehr, weil (vermute ich mal) die Adresse durch "(unsigned int)" verkürzt wurde und nicht mehr auf den C-Pointer zeigt.
Parse ich das aber zu "(long)" bekomme ich Fehlermeldungen, dass diese Konvertierung nicht möglich wäre.Also entweder klappt das Compilieren und ich erhalte keine Werte mehr, oder ich wandle verlustfrei um und ich erhalte Compiler-fehler. *lol*
...
Was kann ich da machen?
In Fällen wo der Adressstring fix ist, klappt das ja alles, muss ich diesen aber erst zusammensetzen (z.B. wegen einem variablen Teil) klappts aufgrund der Typumwandlungen nich mehr.Es liegt übrigens definitiv an den Umwandlungen, ich habe mal einen funktionierenden Adressstring durch die Umwandlungen gejagt und prompt klappts nicht mehr.
Danke im voraus
cu Patrick
-
L ist nur ein Prefix um eine Stringliteral als Unicode zu kennzeichnen und keine Funktion. Das kannst du aber darauf nicht anwenden.
Du könntest z.Bsp. gleich mit WideString statt Ansistring arbeiten, da sparst du dir das Konvertieren.
Ansonsten kannst du z.Bsp. mit der memberfunktion WideChar konvertieren.AnsiString sAdressString = ...; size_t length(sAdressString.WideCharBufSize()); wchar_t* wAdressString = new wchar_t[length]; sAdressString.WideChar(wAdressString , length); Klasse->Funktion(wAdressString ); delete[] wAdressString
-
Hm ok, hatte zu "L" nix in der Hilfe gefunden, deswegen hab ich da einfach mal "Funktion" zu gesagt

Habs jetzt übrigens mit "WideString" gemacht, dann funktionierts einwandfrei.
Sprich:WideString fieldName = ...; Klasse->Funktion(fieldName.c_bstr() );Besten Dank.
