Click here to Skip to main content
16,018,418 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
jkirkerx27-Oct-11 13:28
professionaljkirkerx27-Oct-11 13:28 
AnswerRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
Peter_in_278027-Oct-11 13:39
professionalPeter_in_278027-Oct-11 13:39 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
jkirkerx28-Oct-11 6:24
professionaljkirkerx28-Oct-11 6:24 
AnswerRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
Richard MacCutchan27-Oct-11 21:59
mveRichard MacCutchan27-Oct-11 21:59 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
jkirkerx28-Oct-11 6:41
professionaljkirkerx28-Oct-11 6:41 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
Richard MacCutchan28-Oct-11 6:57
mveRichard MacCutchan28-Oct-11 6:57 
GeneralRe: Sanity Check on Registry Value REG_MULTI_SZ - format value Pin
jkirkerx28-Oct-11 7:17
professionaljkirkerx28-Oct-11 7:17 
AnswerI rewrote the my function for WCHAR Pin
jkirkerx28-Oct-11 8:22
professionaljkirkerx28-Oct-11 8:22 
I rewrote the function for WCHAR. It works, I get the result that I wanted, and it's Unicode I believe. I'm pretty sure I got it right, but I need an expert to evaluate it. I'm not sure if the extra wchar array copy is needed at the bottom to pass the value back to the calling function. Plus I'm back to the Original question, but in hindsight, all it does is replaces the \0 with a ;, and re terminates the array.



WCHAR* CA_Registry::_get_SQLServer_InstalledInstances( void )
{
	HKEY keyHandle;
	WCHAR rgValue[1024];
	WCHAR szInstance[1024];
	CString regPath = L"SOFTWARE\\Microsoft\\Microsoft SQL Server\\";
	CString regReq = L"InstalledInstances";
	DWORD size1 = sizeof(rgValue);
	DWORD Type;
	DWORD dwType = 0;
	DWORD regStatus = REG_MULTI_SZ;

	int ndx;;
	size_t szRgVal;
	int maxStr;
	bool doubleZero;

	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, regPath, 0, KEY_QUERY_VALUE, &keyHandle) == ERROR_SUCCESS) {
		dwType = REG_MULTI_SZ;
		regStatus = RegQueryValueEx( keyHandle, regReq, NULL, &Type, (LPBYTE)rgValue, &size1);
			
		switch ( regStatus ) {
			case ERROR_SUCCESS:								
				
				ndx = 0;
                doubleZero = false;
                szRgVal = sizeof(rgValue);
 
                for(int i=0; i < szRgVal; i++) {
                    if (!rgValue[i] == L'\0') {
                        szInstance[ndx++] = rgValue[i];
                        doubleZero = false;
                    }
                    else {
                        if (doubleZero == false) {
                            szInstance[ndx++] = L';';
                            doubleZero = true;
                        }
                        else {
                            szInstance[ndx++] = L'\0\0';
                            break;
                        }
                    }                    
				}

				maxStr = wcslen(szInstance);
                szInstance[maxStr-0] = (char)'\0';
                printf(" SQL Server Instance: %s %i\n", szInstance, wcslen(szInstance) );				
				
				RegCloseKey(keyHandle);
				cout << "key was read successfully\n";
				break;

			case ERROR_MORE_DATA:
				cout << "Buffer too small\n";
				break;			

			default:			
				cout << "Count not read key\n";
		}
	}
	else {
		cout << "Can not open key";
		cin.ignore();
	}
	
	int strSize = sizeof(szInstance);	
	WCHAR *szReturnValue = new wchar_t[strSize];	
	for(int i = 0; i < strSize; i++) {
		szReturnValue[i]=szInstance[i];		
	}	
	strSize=wcslen(szReturnValue);	
	szReturnValue[strSize-0]=(WCHAR)L'\0';

	return szReturnValue;

	delete [] szReturnValue;
}

AnswerRe: I rewrote the my function for WCHAR Pin
Richard MacCutchan28-Oct-11 23:13
mveRichard MacCutchan28-Oct-11 23:13 
GeneralRe: I rewrote the my function for WCHAR Pin
jkirkerx29-Oct-11 7:39
professionaljkirkerx29-Oct-11 7:39 
GeneralRe: I rewrote the my function for WCHAR Pin
jkirkerx29-Oct-11 8:20
professionaljkirkerx29-Oct-11 8:20 
GeneralRe: I rewrote the my function for WCHAR Pin
Richard MacCutchan29-Oct-11 22:21
mveRichard MacCutchan29-Oct-11 22:21 
GeneralRe: I rewrote the my function for WCHAR Pin
jkirkerx30-Oct-11 6:32
professionaljkirkerx30-Oct-11 6:32 
GeneralRe: I rewrote the my function for WCHAR Pin
Richard MacCutchan30-Oct-11 7:16
mveRichard MacCutchan30-Oct-11 7:16 
GeneralRe: I rewrote the my function for WCHAR - grovel Pin
Richard MacCutchan29-Oct-11 23:19
mveRichard MacCutchan29-Oct-11 23:19 
QuestionRegistry usage in MFC Doc/ View - opinions / commentary wanted Pin
Vaclav_27-Oct-11 5:18
Vaclav_27-Oct-11 5:18 
AnswerRe: Registry usage in MFC Doc/ View - opinions / commentary wanted Pin
Albert Holguin27-Oct-11 5:35
professionalAlbert Holguin27-Oct-11 5:35 
Questionfopen crashed when special characters found. Pin
tagopi27-Oct-11 2:12
tagopi27-Oct-11 2:12 
AnswerRe: fopen crashed when special characters found. Pin
Luc Pattyn27-Oct-11 2:53
sitebuilderLuc Pattyn27-Oct-11 2:53 
AnswerRe: fopen crashed when special characters found. Pin
Chris Losinger27-Oct-11 3:22
professionalChris Losinger27-Oct-11 3:22 
AnswerRe: fopen crashed when special characters found. Pin
David Crow27-Oct-11 4:49
David Crow27-Oct-11 4:49 
AnswerRe: fopen crashed when special characters found. Pin
Andrew Brock27-Oct-11 7:43
Andrew Brock27-Oct-11 7:43 
GeneralRe: fopen crashed when special characters found. Pin
jschell27-Oct-11 8:30
jschell27-Oct-11 8:30 
GeneralRe: fopen crashed when special characters found. Pin
Andrew Brock27-Oct-11 8:36
Andrew Brock27-Oct-11 8:36 
AnswerRe: fopen crashed when special characters found. Pin
Pranit Kothari27-Oct-11 19:01
Pranit Kothari27-Oct-11 19:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.