[ reiser @ 30.08.2004. 13:08 ] @
Poludecu, ne znam zasto mi sledeci kod ne radi :

Code:

var
  hndKey : HKEY;
  mPath  : String;
  mSize  : DWORD;
begin
  If RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                  'SOFTWARE\Microsoft\Windows\CurrentVersion'),
                  0,
                  KEY_QUERY_VALUE,
                  hndKey) = ERROR_SUCCESS Then
    Try
      mSize := SizeOf(mPath);
      RegQueryValueEx(hndKey, 'MediaPath', nil, nil, PByte(mPath), @mSize);
    Finally
      RegCloseKey(hndKey);
    End;


I kad na kraju udarim ShowMessage(mPath), vidim da je mPath prazan...
[ bondja @ 31.08.2004. 12:39 ] @
"RegQueryValueEx(hndKey, 'MediaPath', nil, nil, PByte(mPath), @mSize);"
Zameniti gore navadenu liniju koda sa:

RegQueryValueEx(hndKey, 'MediaPath', nil, @TipPodatka, PByte(mPath), @mSize);
gde je
var
TipPodatka: integer;
begin
...
TipPodatka := reg_sz;

Samo nagadjam, nemam ovde mogucnost da proverim ovo....

[ reiser @ 31.08.2004. 15:28 ] @
Probao sam i to, i stavljao sam umesto REG_SZ REG_NONE itd... (mada je ipak tip podataka koji zelim da iscitam REG_SZ) i opet nece...
[ neor @ 01.09.2004. 11:15 ] @
Pogresio si u mSize := SizeOf(mPath);
U tom trenutku tu nemas dobre podatke. Pogledaj ispravljenu verziju.
Code:

var
  hndKey : HKEY;
  mPath  : string;
  mSize  : DWORD;
begin
  if RegOpenKeyEx(HKEY_LOCAL_MACHINE,
                  'SOFTWARE\Microsoft\Windows\CurrentVersion',
                  0,
                  KEY_QUERY_VALUE,
                  hndKey) = ERROR_SUCCESS then
  try
    mSize := 0;
    if RegQueryValueEx(hndKey, 'MediaPath', nil, nil, nil, @mSize) = ERROR_SUCCESS then begin
      mPath := StringOfChar(' ',mSize);
      RegQueryValueEx(hndKey, 'MediaPath', nil, nil, PByte(mPath), @mSize);
    end;;
  finally
    RegCloseKey(hndKey);
  end;
end;
[ reiser @ 01.09.2004. 15:26 ] @
I to sam probao, da pre citanja iscitam duzinu zapisanog string-a, opet nece (ali duzinu iscita pravilno, recimo ako je string dugacak 20 karaktera, mSize dobije vrednost 20)...
Kad postavim breakpoint-e na kod, vidim da se sve naredbe izvrse, ali ipak na kraju vraca prazan string..
[ neor @ 01.09.2004. 15:33 ] @
Jesi li siguran da si probao? Obrati paznju na red
mPath := StringOfChar(' ',mSize);
Izmedju navodnika postoji jedno prazno mesto.

Ovaj kod kod mene vraca dobar string.
[ reiser @ 01.09.2004. 16:53 ] @
Ipak radi !
Hvala