|
@@ -240,20 +240,38 @@ Type
|
|
CurrentValue,
|
|
CurrentValue,
|
|
DefaultValue : AnsiString;
|
|
DefaultValue : AnsiString;
|
|
HashValue : LongWord;
|
|
HashValue : LongWord;
|
|
|
|
+{$ifdef cpu64}
|
|
|
|
+ Dummy : LongWord; // alignment
|
|
|
|
+{$endif cpu64}
|
|
|
|
+ end;
|
|
|
|
+
|
|
|
|
+ TResourceStringTableList = Packed Record
|
|
|
|
+ Count : ptrint;
|
|
|
|
+ Tables : Array[Word] of record
|
|
|
|
+ TableStart,
|
|
|
|
+ TableEnd : PResourceStringRecord;
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
|
|
|
|
Var
|
|
Var
|
|
- ResourceStrings : TResourceStringRecord; External Name 'FPC_RESOURCESTRINGS';
|
|
|
|
|
|
+ ResourceStringTable : TResourceStringTableList; External Name 'FPC_RESOURCESTRINGTABLES';
|
|
|
|
|
|
Procedure SetResourceStrings (SetFunction : TResourceIterator;arg:pointer);
|
|
Procedure SetResourceStrings (SetFunction : TResourceIterator;arg:pointer);
|
|
Var
|
|
Var
|
|
ResStr : PResourceStringRecord;
|
|
ResStr : PResourceStringRecord;
|
|
|
|
+ i : Longint;
|
|
begin
|
|
begin
|
|
- ResStr:=@ResourceStrings;
|
|
|
|
- while ResStr^.Name<>'' do
|
|
|
|
|
|
+ With ResourceStringTable do
|
|
begin
|
|
begin
|
|
- ResStr^.CurrentValue:=SetFunction(ResStr^.Name,ResStr^.DefaultValue,ResStr^.HashValue,arg);
|
|
|
|
- inc(ResStr);
|
|
|
|
|
|
+ For i:=0 to Count-1 do
|
|
|
|
+ begin
|
|
|
|
+ ResStr:=Tables[I].TableStart;
|
|
|
|
+ while ResStr<Tables[I].TableEnd do
|
|
|
|
+ begin
|
|
|
|
+ ResStr^.CurrentValue:=SetFunction(ResStr^.Name,ResStr^.DefaultValue,ResStr^.HashValue,arg);
|
|
|
|
+ inc(ResStr);
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -261,12 +279,19 @@ end;
|
|
Procedure ResetResourceTables;
|
|
Procedure ResetResourceTables;
|
|
Var
|
|
Var
|
|
ResStr : PResourceStringRecord;
|
|
ResStr : PResourceStringRecord;
|
|
|
|
+ i : Longint;
|
|
begin
|
|
begin
|
|
- ResStr:=@ResourceStrings;
|
|
|
|
- while ResStr^.Name<>'' do
|
|
|
|
|
|
+ With ResourceStringTable do
|
|
begin
|
|
begin
|
|
- ResStr^.CurrentValue:=ResStr^.DefaultValue;
|
|
|
|
- inc(ResStr);
|
|
|
|
|
|
+ For i:=0 to Count-1 do
|
|
|
|
+ begin
|
|
|
|
+ ResStr:=Tables[I].TableStart;
|
|
|
|
+ while ResStr<Tables[I].TableEnd do
|
|
|
|
+ begin
|
|
|
|
+ ResStr^.CurrentValue:=ResStr^.DefaultValue;
|
|
|
|
+ inc(ResStr);
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
@@ -274,12 +299,19 @@ end;
|
|
Procedure FinalizeResourceTables;
|
|
Procedure FinalizeResourceTables;
|
|
Var
|
|
Var
|
|
ResStr : PResourceStringRecord;
|
|
ResStr : PResourceStringRecord;
|
|
|
|
+ i : Longint;
|
|
begin
|
|
begin
|
|
- ResStr:=@ResourceStrings;
|
|
|
|
- while ResStr^.Name<>'' do
|
|
|
|
|
|
+ With ResourceStringTable do
|
|
begin
|
|
begin
|
|
- ResStr^.CurrentValue:='';
|
|
|
|
- inc(ResStr);
|
|
|
|
|
|
+ For i:=0 to Count-1 do
|
|
|
|
+ begin
|
|
|
|
+ ResStr:=Tables[I].TableStart;
|
|
|
|
+ while ResStr<Tables[I].TableEnd do
|
|
|
|
+ begin
|
|
|
|
+ ResStr^.CurrentValue:='';
|
|
|
|
+ inc(ResStr);
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|