Всем доброго настроения. люди помогите разобраться. ситуация такая написал dll для работы с регистром типа запись и чтение. Вызываю эти процы и функции из приложения все работают на ура, за исключением одной. Чтение строковой переменной.
код .dll
Код HTML:
library RegDll;
uses
Registry,
windows;
var
Reg: Tregistry;
procedure CreateReg(RootKey: HKEY;Key:string;CanCreate: Boolean);
begin
Reg:=TRegistry.Create;
Reg.RootKey:=RootKey;
Reg.OpenKey(Key,CanCreate);
end;
procedure FreeReg;
begin
Reg.CloseKey;
Reg.Free;
end;
function ReadIntReg(RootKey:HKEY; Key,Param: string): integer; export;
begin
CreateReg(RootKey,Key,False);
Result:=Reg.ReadInteger(Param);
FreeReg;
end;
function ReadStrReg(RootKey:HKEY; Key,Param: string): String; export;
begin
CreateReg(RootKey,Key,False);
Result:=Reg.ReadString(Param);
FreeReg;
end;
function ReadBoolReg(RootKey:HKEY; Key,Param: string): boolean; export;
begin
CreateReg(RootKey,Key,False);
Result:=Reg.ReadBool(Param);
FreeReg;
end;
procedure WriteBoolReg(RootKey: HKEY;Key,Param:string;Value:boolean); export;
begin
CreateReg(RootKey,key,True);
reg.WriteBool(param,Value);
FreeReg;
end;
procedure WriteIntReg(RootKey: HKEY;Key,Param:string;Value:integer); export;
begin
CreateReg(RootKey,key,True);
reg.WriteInteger(param,Value);
FreeReg;
end;
procedure WriteStrReg(RootKey: HKEY;Key,Param,value:string); export;
begin
CreateReg(RootKey,key,True);
reg.WriteString(param,Value);
FreeReg;
end;
exports
ReadIntReg,
ReadStrReg,
ReadBoolReg,
WriteIntReg,
WriteBoolReg,
WriteStrReg;
begin
end.
ошибка собственно происходит в функции
function ReadStrReg(RootKey:HKEY; Key,Param: string): String; export;
begin
CreateReg(RootKey,Key,False);
Result:=Reg.ReadString(Param);
FreeReg;
end; // именно в этом месте.
ошибка: invalid pointer operation.
такое впечатление что где то надо сделать очистку именно для переменных string.