![]() |
Ord to VS c++ WCHAR
wie bekomme ich ein Ord(34) = '\' nach C++ WCHAR portiert ?
Im Moment mache ich es so..
Code:
Was mich dabei stört das Quote dann eine länge von 260 Chars hat.
WCHAR Quote[] = { 34 };
Ich möchte aber nur den String '\' gruss |
AW: Ord to WCHAR
Aus dem Hut würde ich behaupten:
Delphi-Quellcode:
WideChar(Ord('\'))
|
AW: Ord to WCHAR
Zitat:
Ord gibt es nicht in VS C++. gruss |
AW: Ord to VS c++ WCHAR
Zitat:
Code:
WCHAR Quote[1] = { 34 };
// bzw. WCHAR Quote = 34; |
AW: Ord to VS c++ WCHAR
Zitat:
Werde es mal Testen Danke. gruss |
AW: Ord to VS c++ WCHAR
Jo geht aber der String ist immer noch 260 Zeichen lang.
Werde es mal mit char testen. funktioniert nicht. Bei beiden Varianten ist der String wie gesagt immer noch 260 Chars lang. gruss |
AW: Ord to VS c++ WCHAR
Der Backslash ist unter C++ das Escape-Zeichen, muss also selbst eventuell escaped werden ('\\')?
Oder brauchst du \0 als Ende-Kennzeichen des Strings (#34+#0), wobei WCHAR ja eigentlich nur ein Char und kein String ist? |
AW: Ord to VS c++ WCHAR
Zitat:
Code:
Das Anhängen des null terminierten Chars hilft leider nicht.
Quote + L'\0'
Zitat:
Zitat:
Code:
Danke.
WCHAR Quote[1] = { 34 };
gruss |
AW: Ord to VS c++ WCHAR
Zitat:
Code:
Sonst fehlt die Nullterminierung und der String wird so lange, bis zufällig irgendwo im Speicher dahinter mal eine Null steht.
WCHAR Quote[2] = { 34, 0 };
Alternativ kannst du String-Konstanten in C++ auch wie folgt definieren:
Code:
Hier würde die abschließende Null automatisch hinzugefügt. Das "L" kennzeichnet den String als "WideString".
wchar* quote = L"MY STRING";
Edit: Glaube ich habe nicht ganz verstanden, was du eigentlich vorhast. Kannst du evtl. den kompletten relevanten Teil des C++ Codes mal posten? |
AW: Ord to VS c++ WCHAR
Code:
...
WCHAR Quote[] = { 34 };
Code:
...
S1 = INWSTR(0, sCfg, Quote);
Code:
Die länge des Arrays Search = Quote ist 252 Chars lang sollte er aber nicht.
long INWSTR(IN long nIndex, IN WCHAR* MainStr, IN WCHAR* Search) {
long nRet = -1; long nLength = (long) wcslen(MainStr); if (nLength && (wcslen(Search))) { WCHAR* pdest; if (nIndex > -1) { pdest = wcsstr(&MainStr[nIndex], Search); if (pdest) { nRet = long(pdest - &MainStr[0]); } } else { nIndex += 1; if (nIndex < 0) { nIndex *= -1; } reverse(MainStr, nLength); pdest= wcsstr(&MainStr[nIndex], Search); if (pdest) { nRet = nLength - long(pdest - &MainStr[0]) - 1; } reverse(MainStr, nLength); } } return nRet + 1; } gruss |
AW: Ord to VS c++ WCHAR
Code:
Das war die Lösung ;)
WCHAR Quote[2] = { 34, 0 };
Wenn der Char '\' und die länge davon nicht exakt stimmt schlägt die Function INWSTR fehl. Danke warst mir eine große Hilfe. gruss |
AW: Ord to VS c++ WCHAR
Ahh okay, in diesem Falle kannst du die Funktion auch einfach so aufrufen:
Code:
Da bist du in die Falle getappt, weil WCHAR* nicht ein einzelnes Zeichen, sondern einen kompletten String (in C Sprachen immer ein Zeiger (*) auf das erste Zeichen) darstellt. Dadurch, dass die C-Strings auch keine vorgestellte Länge (wie in Delphi) besitzen, müssen sie zwangsweise nullterminiert werden.
S1 = INWSTR(0, sCfg, L"\\");
|
AW: Ord to VS c++ WCHAR
Zitat:
Aber diese Funktion habe ich vorher getestet und brachte keinen Erfolg seltsam. Muss dem nochmal nachgehen. Kann mir dann die Definition sparen. EDIT: Nein das funktioniert definitiv nicht. Dann werden keine Icons geladen irgendwie kommt WCHAR * mit L"\\" nicht zurecht. gruss |
AW: Ord to VS c++ WCHAR
Zitat:
|
AW: Ord to VS c++ WCHAR
Zitat:
Wenn ich das so übergebe dann ist das Ergebnis 92 muss aber 34 sein. Ich glaube man darf den Char im nachhinein nicht verändern er muss Exakt sein. Also Char(34) + null terminierten Char gruss |
AW: Ord to VS c++ WCHAR
es würde so gehen.. Theoretisch.. Praktisch nicht!
Code:
Theoretisch und Praktisch hätte ich dann ein Ergebnis von 34.
S1 = INWSTR(0, sCfg, L"\"\"");
Praktisch jedoch wäre der Array String dann länger wie 1 kann man ja auch so schon sehen. ;) Das führt dann dazu das meine Funktion fehl schlägt. gruss |
AW: Ord to VS c++ WCHAR
Willst du überhaupt den Backslash? Weil #34 ist ". Dementsrpechend müsste es dann natürlich
Code:
heißen.
L"\""
|
AW: Ord to VS c++ WCHAR
Zitat:
Danke wieder mal.. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz