[Back to STRINGS SWAG index]  [Back to Main SWAG index]  [Original]

{ Good'ol'times, when I could make my database programs in Clipper... Now I'm
stuck with TP...:) Well, anyway, I remember a small symbol, $, which, when
placed between two different strings checked if the first existed "in" the
second. That's what this does. Checks if A exists in B. Upper/Lower case
ignored (although it can be easily changed to take that into account).
Useful to search by text keywords in databases. Returns True if A exists in B,
false if it doesn't.
Portuguese freeware, by Luis Evaristo Fonseca, Thunderball Software 1994
}

{****************************************************************************}
function upstring(a:string):string;
var aux:string;
    i:integer;                          {converts a string to uppercase}
begin
  aux:='';
  for i := 1 to Length(a) do
  begin
      aux[0]:=chr(ord(aux[0])+1);
      aux[i]:=upcase(a[i]);
  end;
  upstring:=aux;
end;

{****************************************************************************}

function a_in_b(a,b:string):boolean;
var conta,conta2,conta3:integer;
    a1,b1:string;
    aux:boolean;
begin
    aux:=false;                         {tests if a is in b, returns true if}
    if length(a)<=length(b) then        {it is, false if it doesn't}
    begin
        a1:=upstring(a);
        b1:=upstring(b);
        for conta:=1 to length(b) do
        begin
            if b1[conta]=a1[1] then
            begin
                aux:=true;
                for conta2:=1 to length(a) do
                begin
                    if (a1[conta2]<>b1[conta2+conta-1]) then
                       aux:=false;
                end;
                if aux=true then
                    exit;
            end;
        end;
    end;
    a_in_b:=aux;
end;


[Back to STRINGS SWAG index]  [Back to Main SWAG index]  [Original]