Ver Mensaje Individual
  #6  
Antiguo 20-12-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Cita:
Empezado por jjfgg
Una mejor forma y más sencilla es:

Código Delphi [-]
uses
  StrUtils;
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Edit1.SelStart = 0)   // primera posición
    or (Edit1.Text[ Edit1.SelStart ] in WordDelimiters) then // posición anterior es un separador de palabras
    Key := UpCase(Key);
end;
Como quisquilloso que pretendo ser... Si SelStart es cero y se intenta acceder a la segunda comprobación (Edit1.Text[ Edit1.SelStart ]... recordemos que el string empieza en el índice 1, y estamos accediendo al cero ==> Access violation

Esto dependerá tambien de si tenemos marcada la casilla "Complete Boolean Eval" (evaluación perezosa) del compilador. Si no la tenemos marcada, nunca nos dará error, ya que cuando el índice sea cero, ya es true, y no comprueba lo demás, y cuando sea distinto de cero, no tendremos problemas al evaluar la segunda condición.

ea, ya que he soltado mi rollo, me voy .

saludos

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita