So... Ich habe das jetzt noch weiter umgewandelt und dabei stoße ich auf ein Problem:
Delphi-Quellcode:
function GetSigns(const FileName : string) : TStrArray;
var
fs : TFileStream;
Buffer : array [1..10000] of Char;
Size : Integer;
// idx : Integer;
i : Integer;
BufferPos, StartPos : Integer;
a : string;
begin
SetLength(Result, 0);
// idx := 1;
fs := TFileStream.Create(FileName, fmopenreadwrite or fmsharedenynone);
try
repeat
Application.ProcessMessages;
Size := (Fs.Size - Fs.Position);
if Size > 10000 then
Size := 10000;
Fs.ReadBuffer(Buffer, Size);
for i := 1 to Size do
begin
if Length(Result) = 0 then
StartPos := 1;
BufferPos := PosEx('<dep file="', Buffer, StartPos + 1);
StartPos := BufferPos + 1;
if (BufferPos > 0) then begin
SetLength(Result, Length(Result) + 1);
Result[High(Result)] := Copy(Buffer, BufferPos + 11, BufferPos + PosEx('"/>', Buffer, BufferPos));
end;
end;
until fs.Position >= fs.Size;
finally
fs.Free;
end;
end;
Und zwar funktioniert das Copy irgendwie net:
Code:
---------------------------
Autolocer
---------------------------
Any\Advertisement\SignRight.bik"/><dep file="Any\Advertisement\SignUp.bik"/><dep file="Any\Advertisement\SignWarning.bik"/><dep file="Any\Advertisement\SignWrongWay.bik"/><dep file="Any\Advertisement\TMSmallExit.bik"/><dep file="Any\Advertisement\Dynamic Ad1.dds"/><dep file="Any\Advertisement\Dynamic Ad2.dds"/><dep file="Any\Advertisement\Dynamic Ad3.dds"/><dep file="Any\Advertisement\pfeil_links.bik"/><dep file="Any\Advertisement\SignLeft.bik"/><dep file="Any\Advertisement\SignDown.bik"/><dep file="Any\Advertisement\PressForward.bik"/><dep file="Any\Advertisement\GamesserverAnim.bik"/><dep file="Any\Advertisement\Gamesserver.dds"/><dep file="Any\Advertisement\FullSpeed.bik"/></deps></header>
---------------------------
OK
---------------------------
Das erhalte ich für Result[0] bei der anfangs erwähnten datei!
(PS: TStrArray = Stringarray)