Problem mit string, WriteBinaryData, Base64



  • Hallo,

    mein Problem ist, ich möchte ein mit Base64 encoded string in die Registry
    schreiben.

    Problem ist, es kommen am Ende des string irgend welche Zeichen nach dem Auslesen.

    Hier der Speicher Code...

    UTF8String sDiskPW = sVSerial +" "+ EPW1->Text.Trim();
    
    			ostringstream oStr2;
    			oStr2 << sDiskPW.c_str();
    			string str2(oStr2.str());
    
    			string encoded2 = MyApps->base64_encode(reinterpret_cast<const unsigned char*>(str2.c_str()), str2.length());
    
    			UTF8String sResult2 = encoded2.c_str();
    
    			int DataBufferSize = sResult2.Length();
    
    			PUCHAR buf = new UCHAR[DataBufferSize + 1];
    			strcpy(buf, sResult2.c_str());
    
    			auto_ptr<TRegistry> Registry(new TRegistry(KEY_WRITE));
    
    			Registry->RootKey = HKEY_CURRENT_USER;
    
    			try {
    
    			Registry->OpenKey("Software\\MaS\\"+ MainForm->SetKeyName +"\\", 1);
    			Registry->WriteBinaryData("PWId", (LPBYTE)buf, DataBufferSize);
    
    			MessageDlg("Passwort ist Gespeichert!", mtInformation, TMsgDlgButtons() << mbOK, 0);
    
    			BSave->Enabled = false;
    
    			} catch(...) {
    				MessageDlg("Passwort ist 'NICHT' Gespeichert!", mtError, TMsgDlgButtons() << mbOK, 0);
    			}
    
    			Registry->CloseKey();
    
    			delete [] buf;
    

    sVSerial ist vorhanden sind 8-10 Zahlen

    Hier der Auslese Code...

    PUCHAR buf2 = new UCHAR[200];
    	int DataBufferSize;
    
    	auto_ptr<TRegistry> Registry(new TRegistry(KEY_READ));
    
    	Registry->RootKey = HKEY_CURRENT_USER;
    
    	try {
    
    	Registry->OpenKey("Software\\MaS\\"+ MainForm->SetKeyName, 0);
    	DataBufferSize = Registry->GetDataSize("PWId");
    	Registry->ReadBinaryData("PWId", (LPBYTE)buf2, DataBufferSize);
    
    	} catch(...) {
    		MessageDlg("Fehler beim lesen des Passwortes!", mtError, TMsgDlgButtons() << mbOK, 0);
    		delete [] buf2;
    		Registry->CloseKey();
    		return;
    	}
    
    	Registry->CloseKey();
    
    	ostringstream oStr2;
    	oStr2 << buf2;
    	string str2(oStr2.str());
    
    	string decoded = MyApps->base64_decode(str2.c_str());
    
    	UTF8String sDecoded = decoded.c_str();
    
    	delete [] buf2;
    

    Ich weiß jetzt nicht wo der Fehler ist 😞
    Es kommt mir vor das er schon beim Schreiben den Fehler macht.


Anmelden zum Antworten