BYTE zu eimem String Konvertieren



  • 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.


Anmelden zum Antworten