AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ord to VS c++ WCHAR

Ein Thema von EWeiss · begonnen am 2. Jun 2017 · letzter Beitrag vom 2. Jun 2017
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

Ord to VS c++ WCHAR

  Alt 2. Jun 2017, 13:47
wie bekomme ich ein Ord(34) = '\' nach C++ WCHAR portiert ?

Im Moment mache ich es so..
Code:
WCHAR Quote[] = { 34 };
Was mich dabei stört das Quote dann eine länge von 260 Chars hat.
Ich möchte aber nur den String '\'

gruss

Geändert von EWeiss (11. Jul 2019 um 16:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ord to WCHAR

  Alt 2. Jun 2017, 13:52
Aus dem Hut würde ich behaupten:
WideChar(Ord('\'))
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Ord to WCHAR

  Alt 2. Jun 2017, 13:53
Aus dem Hut würde ich behaupten:
WideChar(Ord('\'))
C++ ?
Ord gibt es nicht in VS C++.

gruss

Geändert von EWeiss ( 2. Jun 2017 um 13:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ord to VS c++ WCHAR

  Alt 2. Jun 2017, 13:57
Code:
WCHAR Quote[] = { 34 };
Was mich dabei aber stört das Quote dann eine länge von 260 Chars hat.
Ich möchte aber nur den String '\'
Warum definierst du es denn dann als Array/String?

Code:
WCHAR Quote[1] = { 34 };

// bzw.
WCHAR Quote = 34;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Ord to VS c++ WCHAR

  Alt 2. Jun 2017, 13:59
Code:
WCHAR Quote[] = { 34 };
Was mich dabei aber stört das Quote dann eine länge von 260 Chars hat.
Ich möchte aber nur den String '\'
Warum definierst du es denn dann als Array/String?

Code:
WCHAR Quote = 34;
Gute Frage

Werde es mal Testen Danke.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Ord to VS c++ WCHAR

  Alt 2. Jun 2017, 14:01
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

Geändert von EWeiss ( 2. Jun 2017 um 14:08 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Ord to VS c++ WCHAR

  Alt 2. Jun 2017, 14:16
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?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Ord to VS c++ WCHAR

  Alt 2. Jun 2017, 14:40
Oder brauchst du \0 als Ende-Kennzeichen des Strings (#34+#0
Code:
Quote + L'\0'
Das Anhängen des null terminierten Chars hilft leider nicht.

Zitat:
ist unter C++ das Escape-Zeichen
Jo deshalb übergebe ich ja { 34 } Hex Zeichen.

Zitat:
wobei WCHAR ja eigentlich nur ein Char und kein String ist?
Jo ist richtig (habe mich nicht korrekt ausgedrückt) dann frage ich mich aber wie im Shot zu sehen warum dann die gesamte länge des Arrays von 260 Chars angezeigt wird und nicht nur 1 Char wenn ich es so definiere.
Code:
WCHAR Quote[1] = { 34 };
Danke.

gruss

Geändert von EWeiss ( 2. Jun 2017 um 15:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: Ord to VS c++ WCHAR

  Alt 2. Jun 2017, 15:06
dann frage ich mich aber wie im Shot zu sehen warum dann die gesamte länge des Arrays von 260 Chars angezeigt wird und nicht nur 1 Char wenn ich es so definiere.
Code:
WCHAR Quote[1] = { 34 };
Es muss wie folgt aussehen:
Code:
WCHAR Quote[2] = { 34, 0 };
Sonst fehlt die Nullterminierung und der String wird so lange, bis zufällig irgendwo im Speicher dahinter mal eine Null steht.

Alternativ kannst du String-Konstanten in C++ auch wie folgt definieren:
Code:
wchar* quote = L"MY STRING";
Hier würde die abschließende Null automatisch hinzugefügt. Das "L" kennzeichnet den String als "WideString".

Edit:
Glaube ich habe nicht ganz verstanden, was du eigentlich vorhast. Kannst du evtl. den kompletten relevanten Teil des C++ Codes mal posten?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl ( 2. Jun 2017 um 15:13 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Ord to VS c++ WCHAR

  Alt 2. Jun 2017, 15:22
Code:
WCHAR Quote[] = { 34 };
...
Code:
S1 = INWSTR(0, sCfg, Quote);
...

Code:
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;
}
Die länge des Arrays Search = Quote ist 252 Chars lang sollte er aber nicht.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz