Re: Fastcode CharPosRev B&V 0.6.0
- From: "Davy Landman" <davy.landman@xxxxxxxxx>
- Date: Mon, 27 Nov 2006 19:39:34 +0100
some "^" forgotten
function CharPosRev_DLA_PAS_9_a(SearchChar: Char; const S: string): Integer;
var
P: PByteArray;
{ Made John's PAS_03 range checking save }
begin
Result := Length(S);
if Result > 0 then
begin
P := Pointer(Cardinal(S) + (Result - 12));
repeat
if P^[11] = Byte(SearchChar) then
Exit;
if P^[10] = Byte(SearchChar) then
begin
Dec(Result);
Break;
end;
if P^[9] = Byte(SearchChar) then
begin
Dec(Result, 2);
Break;
end;
if P^[8] = Byte(SearchChar) then
begin
Dec(Result, 3);
Break;
end;
Dec(Result, 4);
if Result <= 0 then
Break;
if P^[7] = Byte(SearchChar) then
Exit;
if P^[6] = Byte(SearchChar) then
begin
Dec(Result);
Break;
end;
if P^[5] = Byte(SearchChar) then
begin
Dec(Result, 2);
Break;
end;
if P^[4] = Byte(SearchChar) then
begin
Dec(Result, 3);
Break;
end;
Dec(Result, 4);
if Result <= 0 then
Break;
if P^[3] = Byte(SearchChar) then
Exit;
if P^[2] = Byte(SearchChar) then
begin
Dec(Result);
Break;
end;
if P^[1] = Byte(SearchChar) then
begin
Dec(Result, 2);
Break;
end;
if P^[0] = Byte(SearchChar) then
begin
Dec(Result, 3);
Break;
end;
Dec(Result, 4);
if Result <= 0 then
Break;
P := Pointer(Cardinal(P) - 12);
until False;
if Result < 0 then {Match Found before First Char}
Result := 0;
end;
end;
.
- Follow-Ups:
- Re: Fastcode CharPosRev B&V 0.6.0
- From: Dennis
- Re: Fastcode CharPosRev B&V 0.6.0
- References:
- Fastcode CharPosRev B&V 0.6.0
- From: Dennis
- Re: Fastcode CharPosRev B&V 0.6.0
- From: Davy Landman
- Re: Fastcode CharPosRev B&V 0.6.0
- From: John O'Harrow
- Re: Fastcode CharPosRev B&V 0.6.0
- From: Davy Landman
- Fastcode CharPosRev B&V 0.6.0
- Prev by Date: Re: Fastcode CharPosRev B&V 0.6.0
- Next by Date: Re: Fastcode SpreadsheetCreator 0.9.9
- Previous by thread: Re: Fastcode CharPosRev B&V 0.6.0
- Next by thread: Re: Fastcode CharPosRev B&V 0.6.0
- Index(es):