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

    Erik Sperling Johansen <erik@info-pro.no>
    --------------------------------------------------------------------------------

    function LowCase(ch : CHAR) : CHAR;
    begin
      case ch of
        'A'..'Z' : LowCase := CHR (ORD(ch)+31);
      else
        LowCase := ch;
      end;
    end;

    function Proper (source, separators : STRING) : STRING;
    var
      LastWasSeparator : BOOLEAN;
      ndx              : INTEGER;
    begin
      LastWasSeparator := TRUE;
      ndx := 1;
      while (ndx<=Length(source)) do begin
        if LastWasSeparator
        then source[ndx] := UpCase(source[ndx])
        else source[ndx] := LowCase(source[ndx]);
        LastWasSeparator := Pos(source[ndx], separators)>0;
        inc(ndx);
      end;
      Result := source;
    end;

    --------------------------------------------------------------------------------

    From: "Cleon T. Bailey" <baileyct@ionet.net>
    --------------------------------------------------------------------------------

    Function  TfrmLoadProtocolTable.ToMixCase(InString: String): String;
    Var I: Integer;
    Begin
      Result := LowerCase(InString);
      Result[1] := UpCase(Result[1]);
      For I := 1 To Length(InString) - 1 Do Begin
        If (Result[I] = ' ') Or (Result[I] = '''') Or (Result[I] = '"')
        Or (Result[I] = '-') Or (Result[I] = '.')  Or (Result[I] = '(') Then
          Result[I + 1] := UpCase(Result[I + 1]);
      End;
    End;

    --------------------------------------------------------------------------------

    From: "Paul Motyer" <paulm@linuxserver.pccity.com.au>

    Both Tim Stannard's and Cleon T. Bailey's functions will bomb in D2 if sent an empty string (where accessing InString[1] causes an access violation, the second attempt will do the same if the last character is in the set.
    try this instead:
    --------------------------------------------------------------------------------

    function proper(s:string):string;
    var t:string;
        i:integer;
        newWord:boolean;
    begin
    if s='' then exit;
    s:=lowercase(s);
    t:=uppercase(s);
    newWord:=true;
    for i:=1 to length(s) do
        begin
        if newWord and (s[i] in ['a'..'z']) then
           begin s[i]:=t[i]; newWord:=false; continue; end;
        if s[i] in ['a'..'z',''''] then continue;
        newWord:=true;
        end;
    result:=s;
    end;

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