* 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;
// Read strings
for i := 0 to StringCount - 1 do begin
for i := 0 to StringCount - 1 do
begin
AStream.Position := OrigTable^[i].offset;
SetLength(s, OrigTable^[i].length);
{ SetLength(s, 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;
for i := 0 to StringCount - 1 do begin
for i := 0 to StringCount - 1 do
begin
AStream.Position := TranslTable^[i].offset;
SetLength(s, TranslTable^[i].length);
{ SetLength(s, 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;
// Read hashing table
@ -148,9 +156,10 @@ destructor TMOFile.Destroy;
var
i: Integer;
begin
for i := 0 to StringCount - 1 do begin
StrDispose(OrigStrings^[i]);
StrDispose(TranslStrings^[i]);
for i := 0 to StringCount - 1 do
begin
FreeMem(OrigStrings^[i]);
FreeMem(TranslStrings^[i]);
end;
FreeMem(OrigTable);
FreeMem(TranslTable);
@ -166,14 +175,17 @@ var
begin
idx := AHash mod HashTableSize;
incr := 1 + (AHash mod (HashTableSize - 2));
while True do begin
while True do
begin
nstr := HashTable^[idx];
if nstr = 0 then begin
if nstr = 0 then
begin
Result := '';
exit;
end;
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];
exit;
end;
@ -231,12 +243,15 @@ var
i, j, count: Integer;
s: String;
begin
for i:=0 to ResourceStringTableCount - 1 do begin
for i:=0 to ResourceStringTableCount - 1 do
begin
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),
GetResourceStringHash(i, j));
if Length(s) > 0 then begin
if Length(s) > 0 then
begin
SetResourceStringValue(i, j, s);
GettextUsed := True;
end;
@ -271,7 +286,10 @@ end.
{
$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
}