* Fix AV errors when taking pointers of empty strings.

git-svn-id: trunk@10302 -
This commit is contained in:
yury 2008-02-11 17:34:40 +00:00
parent 518f21a99e
commit d0aa4a7e2f
2 changed files with 9 additions and 10 deletions

View File

@ -375,7 +375,7 @@ begin
SetLength(Result, Info.DataSize-1)
else
SetLength(Result, Info.DataSize);
GetData(Name,@Result[1],Info.DataSize,Info.RegData);
GetData(Name,PChar(Result),Info.DataSize,Info.RegData);
end
else
result:='';
@ -422,7 +422,7 @@ end;
procedure TRegistry.WriteExpandString(const Name, Value: string);
begin
PutData(Name, @Value[1], Length(Value),rdExpandString);
PutData(Name, PChar(Value), Length(Value),rdExpandString);
end;
procedure TRegistry.WriteFloat(const Name: string; Value: Double);
@ -438,7 +438,7 @@ end;
procedure TRegistry.WriteString(const Name, Value: string);
begin
PutData(Name, @Value[1], Length(Value), rdString);
PutData(Name, PChar(Value), Length(Value), rdString);
end;
procedure TRegistry.MoveKey(const OldName, NewName: string; Delete: Boolean);

View File

@ -15,10 +15,9 @@ end;
Function PrepKey(Const S : String) : pChar;
begin
If (S[1]<>'\') then
Result:=@S[1]
else
Result:=@S[2];
Result:=PChar(S);
If Result^='\' then
Inc(Result);
end;
Function RelativeKey(Const S : String) : Boolean;
@ -71,7 +70,7 @@ Var
RD : DWord;
begin
P := @Name[1];
P := PChar(Name);
If RegQueryValueExA(fCurrentKey,P,Nil,
@RD,Buffer,lpdword(@BufSize))<>ERROR_SUCCESS Then
Result:=-1
@ -97,7 +96,7 @@ Var
P: PChar;
begin
P:=@ValueName[1];
P:=PChar(ValueName);
With Value do
Result:=RegQueryValueExA(fCurrentKey,P,Nil,lpdword(@RegData),Nil,lpdword(@DataSize))=ERROR_SUCCESS;
If Not Result Then
@ -340,7 +339,7 @@ begin
rdInteger : RegDataType:=REG_DWORD;
rdBinary : RegDataType:=REG_BINARY;
end;
P:=@Name[1];
P:=PChar(Name);
Result:=RegSetValueExA(fCurrentKey,P,0,RegDataType,Buffer,BufSize)=ERROR_SUCCESS;
end;