Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

RegQueryValueEx   Найти похожие ветки 

 
DillerXX ©   (2005-11-22 21:10) [0]

Написал неправильный код для работы с реестром, работает он только в самой программе, а в длл нет.

{$APPTYPE CONSOLE}
uses Windows;

var ddSize:PDWORD;
   s:string;
   key:HKEY;
begin
 SetLength(s,1024);
//  new(ddSize);
 RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion",Key);
 RegQueryValueEx(Key, "WallPaperDir", nil, nil, pbyte(s), ddSize);
 delete(s,ddSize^,length(s)-ddSize^+1);
 writeln(s);
 readln;
end.

Если раскомментировать строчку new(ddSize) то ошибки в длл выдаваться не будет, но тогда будет возвращаться пустая строка. Помогите, какой код будет правильным?


 
umbra ©   (2005-11-22 21:25) [1]


> ddSize:PDWORD;

Это указатель, и значит перед тем, как передать его в функцию, ему надо присвоить адрес чего-то (точнее - адрес переменной, содержащей длину записываемой информации). У Вас эта переменная не инициализируется нигде.


> //  new(ddSize);

Это выражение выделяет память под DWORD, заполняет ее нулями и присваивает ее адрес переменной ddSize. Поэтому если его раскомментировать, то RegQueryValueEx вернет пустую строку, поскольку просили 0 байт


 
umbra ©   (2005-11-22 21:27) [2]

var ddSize:PDWORD;
  s:string;
  key:HKEY;
begin
SetLength(s,1024);
 new(ddSize);
ddSize^ := 1024; RegOpenKey(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion",Key);
RegQueryValueEx(Key, "WallPaperDir", nil, nil, pbyte(s), ddSize);
delete(s,ddSize^,length(s)-ddSize^+1);
writeln(s);
readln;
end.



Страницы: 1 вся ветка

Текущий архив: 2005.12.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.059 c
1-1132129440
pav74
2005-11-16 11:24
2005.12.11
Мастера! кто-то знает алгоритм автоматизации контроля температуры


2-1132275620
Pop
2005-11-18 04:00
2005.12.11
Как узнать размер TPopupMenu ?


1-1132139765
Igor_thief
2005-11-16 14:16
2005.12.11
FormatCurrency or CurrToStr


4-1128500582
Woolen
2005-10-05 12:23
2005.12.11
Запомнить параметры формы


1-1131782900
mfender
2005-11-12 11:08
2005.12.11
TDateTime и зимнее/летнее время и пересчёт из/в UNUX Timestamp