mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 13:19:12 +02:00
* optimized the string translation process a little bit
This commit is contained in:
parent
09fcec7d2f
commit
67d8fe1428
@ -111,18 +111,26 @@ begin
|
|||||||
StringCount := header.nstrings;
|
StringCount := header.nstrings;
|
||||||
|
|
||||||
// Read strings
|
// Read strings
|
||||||
for i := 0 to StringCount - 1 do begin
|
for i := 0 to StringCount - 1 do
|
||||||
|
begin
|
||||||
AStream.Position := OrigTable^[i].offset;
|
AStream.Position := OrigTable^[i].offset;
|
||||||
SetLength(s, OrigTable^[i].length);
|
{ SetLength(s, OrigTable^[i].length);
|
||||||
AStream.Read(s[1], OrigTable^[i].length);
|
AStream.Read(s[1], OrigTable^[i].length);
|
||||||
OrigStrings^[i] := StrNew(PChar(s));
|
OrigStrings^[i] := StrNew(PChar(s));}
|
||||||
|
GetMem(OrigStrings^[i], OrigTable^[i].length + 1);
|
||||||
|
AStream.Read(OrigStrings^[i]^, OrigTable^[i].length);
|
||||||
|
OrigStrings^[i][OrigTable^[i].length] := #0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
for i := 0 to StringCount - 1 do begin
|
for i := 0 to StringCount - 1 do
|
||||||
|
begin
|
||||||
AStream.Position := TranslTable^[i].offset;
|
AStream.Position := TranslTable^[i].offset;
|
||||||
SetLength(s, TranslTable^[i].length);
|
{ SetLength(s, TranslTable^[i].length);
|
||||||
AStream.Read(s[1], TranslTable^[i].length);
|
AStream.Read(s[1], TranslTable^[i].length);
|
||||||
TranslStrings^[i] := StrNew(PChar(s));
|
TranslStrings^[i] := StrNew(PChar(s));}
|
||||||
|
GetMem(TranslStrings^[i], TranslTable^[i].length);
|
||||||
|
AStream.Read(TranslStrings^[i]^, TranslTable^[i].length);
|
||||||
|
TranslStrings^[i][TranslTable^[i].length] := #0;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Read hashing table
|
// Read hashing table
|
||||||
@ -148,9 +156,10 @@ destructor TMOFile.Destroy;
|
|||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
for i := 0 to StringCount - 1 do begin
|
for i := 0 to StringCount - 1 do
|
||||||
StrDispose(OrigStrings^[i]);
|
begin
|
||||||
StrDispose(TranslStrings^[i]);
|
FreeMem(OrigStrings^[i]);
|
||||||
|
FreeMem(TranslStrings^[i]);
|
||||||
end;
|
end;
|
||||||
FreeMem(OrigTable);
|
FreeMem(OrigTable);
|
||||||
FreeMem(TranslTable);
|
FreeMem(TranslTable);
|
||||||
@ -166,14 +175,17 @@ var
|
|||||||
begin
|
begin
|
||||||
idx := AHash mod HashTableSize;
|
idx := AHash mod HashTableSize;
|
||||||
incr := 1 + (AHash mod (HashTableSize - 2));
|
incr := 1 + (AHash mod (HashTableSize - 2));
|
||||||
while True do begin
|
while True do
|
||||||
|
begin
|
||||||
nstr := HashTable^[idx];
|
nstr := HashTable^[idx];
|
||||||
if nstr = 0 then begin
|
if nstr = 0 then
|
||||||
|
begin
|
||||||
Result := '';
|
Result := '';
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
if (OrigTable^[nstr - 1].length = ALen) and
|
if (OrigTable^[nstr - 1].length = ALen) and
|
||||||
(StrComp(OrigStrings^[nstr - 1], AOrig) = 0) then begin
|
(StrComp(OrigStrings^[nstr - 1], AOrig) = 0) then
|
||||||
|
begin
|
||||||
Result := TranslStrings^[nstr - 1];
|
Result := TranslStrings^[nstr - 1];
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -231,12 +243,15 @@ var
|
|||||||
i, j, count: Integer;
|
i, j, count: Integer;
|
||||||
s: String;
|
s: String;
|
||||||
begin
|
begin
|
||||||
for i:=0 to ResourceStringTableCount - 1 do begin
|
for i:=0 to ResourceStringTableCount - 1 do
|
||||||
|
begin
|
||||||
count := ResourceStringCount(I);
|
count := ResourceStringCount(I);
|
||||||
for j := 0 to count - 1 do begin
|
for j := 0 to count - 1 do
|
||||||
|
begin
|
||||||
s := AFile.Translate(GetResourceStringDefaultValue(i, j),
|
s := AFile.Translate(GetResourceStringDefaultValue(i, j),
|
||||||
GetResourceStringHash(i, j));
|
GetResourceStringHash(i, j));
|
||||||
if Length(s) > 0 then begin
|
if Length(s) > 0 then
|
||||||
|
begin
|
||||||
SetResourceStringValue(i, j, s);
|
SetResourceStringValue(i, j, s);
|
||||||
GettextUsed := True;
|
GettextUsed := True;
|
||||||
end;
|
end;
|
||||||
@ -271,7 +286,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.2 2000-07-13 11:32:59 michael
|
Revision 1.3 2000-11-23 10:19:31 sg
|
||||||
|
* optimized the string translation process a little bit
|
||||||
|
|
||||||
|
Revision 1.2 2000/07/13 11:32:59 michael
|
||||||
+ removed logs
|
+ removed logs
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user