Her er den første : function HestePos(const SubStr, Str : String; StartIndex : Integer) : Integer; var p, q : pChar; begin Result := 0; if StartIndex > Length(Str) then exit;
p := @Str[StartIndex]; q := StrPos(p, Pointer(SubStr));
if q <> nil then Result := integer(q) - integer(p) + StartIndex; end;
function BackSearch(const SubStr, Str : String; StartIndex : Integer) : Integer; var Found : Boolean; begin Result := 0; if StartIndex > Length(Str) - Length(SubStr) then exit; Result := Length(Str) - Length(SubStr); Found := False;
while (not Found) and (Result > 1) do begin Found := Copy(Str, Result, Length(SubStr)) = SubStr; dec(Result); end; end;
Hvis vi nu tar denne streng: <form name="lort"><input type="hidden" name="timeout" value="600000"></form>
Jeg sætter positionen til 46 Så siger backsearch at den nærmeste '<' ligger på position 69 men den ligger jo på position 18 eller 19 ik? Og forwardsearch siger også at den nærmeste '>' ligger på 69 ???
"Pos3 funktionen kunne så være den der laver søgningen fremad men stadig med position. (Kan jeg måske nok finde ud af at lave selv)" Kig på PosEx (er i hvert fald med i Delphi 7) :-)
function BackSearch(const SubStr, Str : String; StartIndex : Integer) : Integer; var Found : Boolean; begin Result := 0; if StartIndex > Length(Str) - Length(SubStr) then exit; Result := Length(Str) - StartIndex; Found := False;
while (not Found) and (Result > 1) do begin Found := Copy(Str, Result, Length(SubStr)) = SubStr; dec(Result); end; end;
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.