BYTE zu eimem String Konvertieren
-
HI Leute,
ich brauch mal eure hilfe.
Wie bekomme ich ein BEYT zu einem String.mein problem ist das ich registry einträge schreiben will und da aber in der funktion mit byte gearbeitet wird und ich das ganze beim auslesen wieder in ein Edit fels schreiben will meckert er mir das ganze an das er usingchar* nicht in AnsiString umwandeln kann.
DWORD dw1Data = 256; BYTE c1Daten[256] =""; RegOpenKey(HKEY_CURRENT_USER, "Test\\TestPlan" , &hKey); // hKey wird geöffnet RegQueryValueEx(hKey,"Edi_Pfad",0,0,c1Daten,&dw1Data); // Schlüssel wird gelesen E_Edi_Pfad->Text = c1Daten; // geht nicht RegCloseKey(hKey);Kann mir da wer helfen

mfg
Tarantel
-
du hast borland (IDE/compiler) spezifische probleme.
-
c.rackwitz schrieb:
du hast borland (IDE/compiler) spezifische probleme.
Das stimmt ja gar nicht. Das Problem ist die Bewältigung eines casts von BYTE (in Win32 unsigned char) nach char.
#include <iostream> using namespace std; int main() { unsigned char a[] = "hallo"; char *b = reinterpret_cast<char*>(a); cout << b << endl; cin.get(); }
-
allgemeines problem schrieb:
Das Problem ist die Bewältigung eines casts von BYTE (in Win32 unsigned char) nach char.
bzw. von Zeigern auf die jeweiligen Typen.
-
oder so:
DWORD dw1Data = 256; char c1Daten[256]; RegOpenKey(HKEY_CURRENT_USER, "Test\\TestPlan" , &hKey); // hKey wird geöffnet RegQueryValueEx(hKey,"Edi_Pfad",0,0,(LPBYTE)c1Daten,&dw1Data); // Schlüssel wird gelesen E_Edi_Pfad->Text = c1Daten; // sollte gehen... RegCloseKey(hKey);
-
er sagte ANSISTRING, also ist das borland-spezifisch.
-
HI
und was ich davon.
ist dann b mein String oder was.
könnt ihr das vielleicht in mein bsp einbauen so das ich das auch verstehe
was zu was gehört.wäre euch sehr dankbar.
mfg
Tarantel
-
b ist kein AnsiString, aber char * kann er in AnsiString umwandeln, deshalb kannst du diesen Wert deinem Textfeld zuweisen.
-
AnsiString ist borland-spezifisch, aber ich vermute (habe nämlich keinen cpp-builder), dass man einem AnsiString ebenso wie einem std::string einen Zeiger auf char zuweisen kann.
#include <iostream> #include <string> using namespace std; int main() { unsigned char a[] = "hallo"; string b = reinterpret_cast<char*>(a); // ja, b soll die AnsiString Variable sein (vermutlich E_Edi_Pfad->Text) cout << b << endl; cin.get(); }
-
Hi
habe so lange zum antworten gebracuht deswegen habe ich nicht jeden beitrag lesen können vor dem posten
Danke @ all
das geht wenn ich einfach aus dem BYTE ein char mache dann kann ich es sogar nachher in ein Edit Feld schreien. Und bekomme kleine speicher Probeme
DWORD dw1Data = 256; char c1Daten[256] =""; RegOpenKey(HKEY_CURRENT_USER, "Test\\TestPlan" , &hKey); RegQueryValueEx(hKey,"Edi_Pfad",0,0,c1Daten,&dw1Data); E_Edi_Pfad->Text = c1Daten; RegCloseKey(hKey);Danke @ all
mfg Tarantel

-
Hallo
übrigens : wenn du schon mit der VCL arbeitest, kannst du ja auch gleich die VCL-Klasse TRegistry zum Zugriff auf die Registry benutzen. Dazu steht einiges in der BCB-Hilfe und hier im BCB-Forum. Dann kannst du AnsiString auch ohne Konvertierung direkt benutzen.
bis bald
akari
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.