Newsgroup: it.comp.lang.delphi
Titolo: case sensytive

Ciao a tutti. Sapete come si fa a portare in maiuscolo la prima lettera di
una string es: roma Roma. Oppure se c'è un modo per rendere non case
sensitive una tabella paradox uso una dbgrid per visualizzare i dati e mi
trovo che se viene inserito un nome con lettera minuscola non viene messo in
ordine alfebetico ma viene inserito alla fine. Ovviamente ho inserito solo
indici primari e non indici secondari.
Ringrazio tutti coloro che sapranno aiutarmi e saluto calorosamente tuta la
news.

 lettera di una string es: roma Roma.
function Capital(s: string): string;
begin
 Result := '';
 if s = '' then Exit;
 s := AnsiLowerCase(s);
 s[1] := UpCase(s[1]);
 Result := s;
end;
--
Jax
====
C'è una cosa dotata di una capacità d'esasperare, che una persona non
raggiungerà mai: un pianoforte. (Proust)

 una string es: roma Roma. [...]
function Capitalize(const S: String): String;
begin
  Result := LowerCase(S);
  Result[1] := UpCase(Result[1]);
end;

 end;
Se la stringa è vuota, ti sbatte fuori.
--
Jax
====
Gli uomini odiano coloro che chiamano avari solo perché non ne possono
cavare nulla. (Voltaire)

 Se la stringa è vuota, ti sbatte fuori.
E sì, basta modificare in:
function Capitalize(const S: String): String;
begin
  if S <> '' then
  begin
    Result := LowerCase(S);
    Result[1] := UpCase(Result[1])
  end
end;
Comunque, in generale questo tipo di scelte, benché assicurino del
codice ben difeso, dipendono da qual è la politica dei controlli che
vuoi fare.  Se una funzione è studiata per essere chiamata molte
volte, puoi evitare di porre i controlli internamenti e delegarli
all'esterno.  Ad esempio, tutte le funzioni di gestione stringhe della
libreria C non si curano di controllare la validità del parametro su
cui lavorare.

Grazie mille ragazzi ringranzio in particolare Jax che mi ha aiutato in
altre situazioni.

 di una string es: roma Roma
arrivo in ritardo dopo le risposte degli altri. Diverso (molto) tempo fa 
avevo scritto questa che rende in Proper Case (non so da dove venga questo 
termine ma lo usavo ancora in FoxPro con Win3.1) cioè con la prima lettera 
maiuscola anche in situazioni tipo:
CIAO.ciao => Ciao.Ciao
ciao caio => Ciao Caio
coca-cola => Coca-Cola
e simili.
Il codice è il seguente, vi prego di non badare ad eventuali ingenuità che 
avevo scritto!
function ProperCaseEx(const Text: string): string;
var
  L, n: Integer;
  WillReadAWord: Boolean;
  s: string;
  function ProperCase(const Text: string): string;
  begin
    Result:= UpCase(Text[1]) + LowerCase(RightStr(Text, Length(Text) - 
1));
  end;
  function ReadNextToken(ReadAWord: Boolean): string;
  begin
    Result:= '';
    while (n <= L) and (ReadAWord xor not IsValidIdent(Text[n])) do
    begin
      Result:= Result + Text[n];
      Inc(n);
    end;
  end;
begin
  Result:= '';
  if Text <> '' then
  begin
    n:= 1;
    L:= Length(Text);
    WillReadAWord:= IsValidIdent(Text[n]);
    while n <= l do
    begin
      s:= ReadNextToken(WillReadAWord);
      if WillReadAWord then s:= ProperCase(s);
      WillReadAWord:= not WillReadAWord;
      Result:= Result + s;
    end;
  end
end;
-- 
Mauro Falzari 
   [ 
http://digilander.libero.it/mauro.falzari
 ]
 
 "Se guardi nell'abisso, anche l'abisso guarda in te." 
   (Friedrich Nietzsche)