Gab, można napisać funkcję, aby to zrobić przy użyciu klasy TFileStream
i funkcje Copy
i Pos
.
zobaczyć tę próbkę:
uses
Classes,
SysUtils;
function ExtractString(Const FileName: TFileName;Const IDel,FDel : AnsiString) : AnsiString;
Var
FileStream : TFileStream;
i,f : Integer;
begin
FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); //oopen the file
try
try
SetLength(Result, FileStream.Size); //set the size of the string
FileStream.Read(Pointer(Result)^, FileStream.Size);//read the content into a string
i:=Pos(IDel,Result);//search the initial delimiter
f:=Pos(FDel,Result);//search the final delimiter
Result:=Copy(Result,i+1,f-i-1); //extract the value between the delimiters
except
Result := '';
raise;
end;
finally
FileStream.Free;
end;
end;
i wykorzystywać w ten sposób
ExtractString('your_file_name','$','/');
Użyj ['PosEx'] (http://docwiki.embarcadero.com/VCL/en/StrUtils.PosEx), aby wyszukać' Delim2' począwszy * po * lokalizacji 'Delim1'. –
@Rob: Tak, to zwiększyłoby wydajność. –
Dzięki dokładnie to, czego potrzebowałem !! – Gab