v8902058@cc.nu.oz.au (10/13/90)
Hello... I'm sorry if this is a trival task, but I would like a function that compares two strings. There is one in the string module I have, but I really need to see the code for it. I would like to be able to find if a string is equal to, less than, or greater than another string. I tried writing a routinue myself, but I just can't seem to do it, so I thought I'd ask. I wouldn't mind some code, or just the basic algorithm maybe. If anyone can help me, please email or post... Thanks. Bernard.
Patrick.Verkaik@p99.f124.n512.z2.fidonet.org (Patrick Verkaik) (10/19/90)
Hello Bernard,
In a message to All <16 Oct 90 1:06:00> Bernard wrote:
v8> like to be able to find if a string is
v8> equal to, less than, or greater than another string. I tried
v8> writing a routinue
I have seen the following (translated and slightly modified) in a book (by Jim van Keulen):
-+---------------------------------------------------------------
TYPE
CompareType = (Smaller , Greater , Equal);
PROCEDURE CompareString (Str1 , Str2 : ARRAY OF CHAR) : CompareType;
(* CompareString returns
* Smaller if Str1 < Str2,
* Equal if Str1 = Str2,
* Greater if Str1 > Str2 *)
VAR
i : CARDINAL;
LengthStr1 , LengthStr2 , LengthShortest : CARDINAL;
BEGIN
LengthStr1 := LengthString (Str1);
LengthStr2 := LengthString (Str2);
IF LengthStr1 <= LengthStr2
THEN
LengthShortest := LengthStr1
ELSE
LengthShortest := LengthStr2
END;
FOR i := 0 TO LengthShortest DO
IF Str1 [i] < Str2 [i]
THEN
RETURN Smaller
ELSIF Str1 [i] > Str2 [i]
RETURN Greater
END
END;
(* One of either strings forms the beginning of the other *)
IF LengthShortest < LengthStr2
THEN
RETURN Smaller
ELSIF LengthShortest < LengthStr1
RETURN Greater
ELSE
RETURN Equal
END
END CompareString;
-+---------------------------------------------------------------
That's it, I've assumed you do have a procedure that returns the length of a string (LengthString or whatever yours is called) otherwise I can give you that source too, if you want it...
Hope this has helped you!
PDV
--
uucp: uunet!m2xenix!puddle!2!512!124.99!Patrick.Verkaik
Internet: Patrick.Verkaik@p99.f124.n512.z2.fidonet.org