Maks150988
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ребята, не знаю что делать, но необходима работа с Wide функциями реестра Windows. Необходимо прочитать список значений через RegEnumValueW, но в Delphi 7 параметр lpValueName Ansi, пришлось поэтому переделать в отдельном модуле функцию как: Код: function _RegEnumValueW(hKey: HKEY; dwIndex: DWORD; lpValueName: PWideChar; var lpcbValueName: DWORD; lpReserved: Pointer; lpType: PDWORD; lpData: PByte; lpcbData: PDWORD): Longint; stdcall; external advapi32 name 'RegEnumValueW'; | Ну и собственно сам код: Код: procedure EnumRegistryRoutesW(RootKey: HKEY; SoobKey: WideString); var dwIndex : Integer; ErrorCode: Integer; RegString: WideString; hReadKey : HKEY; dwBuffer : Pointer; dwBufSize: DWORD; MsgString: WideString; begin ErrorCode := RegOpenKeyExW(RootKey, PWideChar(SoobKey), 0, KEY_READ, hReadKey); if ErrorCode = ERROR_SUCCESS then begin dwBufSize := 1024; GetMem(dwBuffer, dwBufSize); dwIndex := 0; ErrorCode := ERROR_SUCCESS; while ErrorCode = ERROR_SUCCESS do begin dwBufSize := 1024; ErrorCode := _RegEnumValueW(hReadKey, dwIndex, dwBuffer, dwBufSize, nil, nil, nil, nil); if ErrorCode = ERROR_SUCCESS then begin SetLength(RegString, dwBufSize); CopyMemory(PWideChar(RegString), dwBuffer, dwBufSize); MsgString := MsgString + RegString + #13#10; Inc(dwIndex); end; end; FreeMem(dwBuffer); RegCloseKey(hReadKey); end; MessageBoxW(0, PWideChar(MsgString), nil, MB_ICONINFORMATION); end; | Проблема в том что текст выводится квадратиками, начиная после 3 прочитанного значения. Собственно как можно исправить данное положение? |