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

{
BO BendTSEN

  Upper/lower changing of Strings are always a difficult problem,
  but as a person living in Denmark i must normally care about
  danish Characters, i know a lot of developers does not care about
  international Character and just use the normal UPCASE routines.
  I advise you to use these routines or make some that has the
  same effect, so we will not have any problems when searching for
  uppercased Strings.

  Made available to everyone 1993 by Bo Bendtsen 2:231/111 +4542643827

     Lowcase   Upper/high/capital letters
              
              
              
              
              €
              
              ™
     ¤         ¥
              

}

Function UpChar(Ch : Char) : Char;
{ Uppercase a Char }
begin
  If Ord(Ch) In [97..122] Then Ch := Chr(Ord(Ch) - 32)
  Else If Ord(Ch) > 90 Then
    If Ch='' Then Ch:=''
    Else If Ch='' Then Ch:='' Else If Ch='' Then Ch:=''
    Else If Ch='' Then Ch:='' Else If Ch='' Then Ch:='€'
    Else If Ch='' Then Ch:='' Else If Ch='' Then Ch:='™'
    Else If Ch='¤' Then Ch:='¥' Else If Ch='' Then Ch:='';
  UpChar:=Ch;
end;

Function StUpCase(S : String) : String;
{ Uppercase a String }
Var
  SLen : Byte Absolute S;
  x    : Integer;
begin
  For x := 1 To SLen Do S[x]:=UpChar(S[x]);
  StUpCase := S;
end;

Function LowChar(Ch : Char) : Char;
{ lowercase a Char }
begin
  If Ord(Ch) In [65..90] Then Ch := Chr(Ord(Ch) + 32)
  Else If Ord(Ch) > 122 Then
    If Ch='' Then Ch := ' '
    Else If Ch='' Then Ch:='' Else If Ch='' Then Ch:=''
    Else If Ch='' Then Ch:='' Else If Ch='€' Then Ch:=''
    Else If Ch='' Then Ch:='' Else If Ch='™' Then Ch:=''
    Else If Ch='¥' Then Ch:='¤' Else If Ch='' Then Ch:='';
  LowChar := Ch;
end;

Function StLowCase(S : String) : String;
{ Lowercase a String }
Var
  SLen : Byte Absolute S;
  i    : Integer;
begin
  For i := 1 To SLen Do S[i]:=LowChar(S[i]);
  StLowCase := S;
end;

Function StToggleCase(S : String) : String;
{ lower = upper and upper = lower }
Var
  SLen : Byte Absolute S;
  i    : Integer;
begin
  For i := 1 To SLen Do
  begin
    If Ord(S[i]) In [65..90] Then S[i] := Chr(Ord(S[i]) + 32)
    Else If Ord(S[i]) In [97..122] Then S[i] := Chr(Ord(S[i]) - 32)
    Else If Pos(S[i],'¤') <> 0 Then S[i]:=UpChar(S[i])
    Else If Pos(S[i],'€™¥')<> 0 Then S[i]:=LowChar(S[i]);
  end;
  StToggleCase := S;
end;

Function StSmartCase(S : String) : String;
{ bO bEnDTSen will be converted into : Bo Bendtsen }
Var
  SLen : Byte Absolute S;
  i    : Integer;
begin
  s:=StLowCase(s);
  For i := 1 To SLen Do
  begin
    If i=1 Then S[1]:=UpChar(S[1])
    Else if S[i-1]=' ' Then S[i]:=UpChar(S[i])
    Else if (Ord(S[i-1]) In [32..64]) And (S[i-1]<>'''') Then
S[i]:=UpChar(S[i]);
  end;
  StSmartCase := S;
end;

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