* optimized the string translation process a little bit

This commit is contained in:
sg 2000-11-23 10:19:31 +00:00
parent 09fcec7d2f
commit 67d8fe1428

View File

@ -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
} }