* array[cardinal] is buggy, use array[word]

* small fix in getresourcestring
This commit is contained in:
peter 1999-07-23 23:13:54 +00:00
parent 6dac94ac96
commit ea34cb18fa

View File

@ -25,7 +25,7 @@ unit objpas;
smallint = system.integer;
integer = system.longint;
{ the compiler searches in the objpas unit for the tvarrec symbol }
{ the compiler searches in the objpas unit for the tvarrec symbol }
TVarRec = System.TVarRec;
PVarRec = ^TVarRec;
{****************************************************************************
@ -60,9 +60,9 @@ unit objpas;
Function GetResourceString(Hash : Longint) : AnsiString;
Procedure ResetResourceTables;
Function SetResourceString(Hash : longint; Const Value : AnsiString) : Boolean;
{$endif}
{$endif}
implementation
{****************************************************************************
@ -149,10 +149,10 @@ begin
if (Param>=0) and (Param<argc) then
begin
Len:=0;
While Argv[Param][Len]<>#0 do
While Argv[Param][Len]<>#0 do
Inc(len);
SetLength(Result,Len);
If Len>0 then
If Len>0 then
Move(Argv[Param][0],Result[1],Len);
end
else
@ -160,7 +160,7 @@ begin
end;
{$IFDEF HasResourceStrings}
{ ---------------------------------------------------------------------
ResourceString support
---------------------------------------------------------------------}
@ -170,32 +170,33 @@ Type
DefaultValue,
CurrentValue : AnsiString;
HashValue : longint;
end;
TResourceStringTable = Packed Record
end;
TResourceStringTable = Packed Record
Count : longint;
Resrec : Array[Cardinal] of TResourceStringRecord;
end;
Var
Resrec : Array[Word] of TResourceStringRecord;
end;
Var
ResourceStringTable : TResourceStringTable; External Name 'RESOURCESTRINGLIST';
Function FindHashIndex (Value : Longint) : Longint;
VAr I : longint;
Var
I : longint;
begin
// Linear search, later we can implement binary search.
With ResourceStringTable do
With ResourceStringTable do
For I:=0 to Count-1 do
If Value=Resrec[result].HashValue then
If Value=Resrec[I].HashValue then
begin
Result:=I;
exit;
end;
Result:=-1;
Result:=-1;
end;
Function GetResourceString(Hash : Longint) : AnsiString;[Public,Alias : 'FPC_GETRESOURCESTRING'];
begin
@ -203,9 +204,10 @@ begin
If Hash<>-1 then
Result:=ResourceStringTable.ResRec[Hash].CurrentValue
else
Result:='';
Result:='';
end;
Function SetResourceString(Hash : longint; Const Value : AnsiString) : Boolean;
begin
@ -215,25 +217,31 @@ begin
ResourceStringTable.ResRec[Hash].CurrentValue:=Value;
end;
Procedure ResetResourceTables;
Var I : longint;
begin
For I:=0 to ResourceStringTable.Count-1 do
ResourceStringTable.ResRec[i].CurrentValue:=
ResourceStringTable.ResRec[i].DefaultValue;
With ResourceStringTable do
For I:=0 to Count-1 do
With ResRec[i] do
CurrentValue:=DefaultValue;
end;
Initialization
ResetResourceTables;
{$endif}
{$endif}
end.
{
$Log$
Revision 1.28 1999-07-23 22:51:11 michael
Revision 1.29 1999-07-23 23:13:54 peter
* array[cardinal] is buggy, use array[word]
* small fix in getresourcestring
Revision 1.28 1999/07/23 22:51:11 michael
* Added HasResourceStrings check
Revision 1.27 1999/07/22 20:30:13 michael