Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-01-2005
Ariatna Ariatna is offline
Registrado
 
Registrado: ago 2004
Posts: 7
Poder: 0
Ariatna Va por buen camino
Ayuda con Archivos de Texto!!

Necesito obtener de un archivo de texto, línea por línea, y identificar si esa línea esta escrita solamente en mayúsculas. Para esta aplicación utilizo Delphi 5.
De antemano muchas gracias!
Responder Con Cita
  #2  
Antiguo 31-01-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El archivo podrías leerlo con un TStringList. Para saber si una línea dada está en sólo mayúsculas, conviértela a mayúsculas y compárala con la original. Si coinciden es que estaba en sólo mayúsculas.

// Saludos
Responder Con Cita
  #3  
Antiguo 01-02-2005
Ariatna Ariatna is offline
Registrado
 
Registrado: ago 2004
Posts: 7
Poder: 0
Ariatna Va por buen camino
Ayuda, como hacer una llamada de un procedimiento, dentro de otro procedimiento?

Hola Roman!, muchas gracias por tu respuesta, ya me salio el procedimiento, pero ahora necesito saber como llamar al procedimiento:



ListBox1DrawItem(Control: TWinControl; Index: Integer;Rect: TRect; State:TOwnerDrawState);



Desde el procedimiento que ya hice, lo que quiero hacer es lo siguiente:

Que cuando se cumpla la condición (que la línea del archivo de texto este escrita en mayúsculas), entre al procedimiento ListBox1DrawItem, para cambiar el formato de esas líneas.



De antemano Gracias!, y un Saludo!
Responder Con Cita
  #4  
Antiguo 01-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Lo estás enfocando mal. OnDrawItem es un evento y los eventos no son procedimientos que uno mande ejecutar, sino que el mismo Delphi (la VCL para ser más precisos) se encarga de llamarlos cuando es necesario. En este caso, OnDrawItem se llama cada vez que por una u otra razón debe dibujarse algún elemento de la lista y el código que pongas ahí debe estar preparado para dibujar correctamente el texto.

Dicho de otra forma, no es tu procedimiento quien debe llamar al evento sino alrevés. En el código de OnDrawItem haces la comparación para ver si el ítem está escrito en mayúsculas y de ser así cambias el formato.

// Saludos
Responder Con Cita
  #5  
Antiguo 01-02-2005
Avatar de acertij022
acertij022 acertij022 is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina-Bs. As.
Posts: 233
Poder: 22
acertij022 Va por buen camino
Existe una forma mas sencilla:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
F:textFile;
Str1,Str2:String;
Linea: integer;
begin
assignfile(F,'Prueba.txt');
Reset(F);
Linea:=0;
while not eof(F)do
  begin
  ReadLn(F,Str1);
  inc(Linea);
  Str2 := uppercase(Str1);
  if Str1 = Str2 then showmessage('La linea Nº'+IntToStr(Linea)+' esta escrita todo en mayuscula');
  end;
end;

Espero que te sea de utilidad.
Responder Con Cita
  #6  
Antiguo 02-02-2005
Ariatna Ariatna is offline
Registrado
 
Registrado: ago 2004
Posts: 7
Poder: 0
Ariatna Va por buen camino
Espero me puedas ayudar

Hola Roman!, otra vez yo, Gracias por tú respuesta, realmente estaba confundida, pero todavía no me sale, creo tener algún error en el código, yo creo que es por el ciclo, espero me puedas ayudar.






procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;

Rect: TRect; State: TOwnerDrawState);

begin

I:=0;

arch:=TStringList.Create;

arch.LoadFromFile('c:\prueba.txt');

arch.Count;





with (Control as TListBox) do

begin

while I<arch.Count do

begin

cadena:=arch.Strings[i];

if AnsiUpperCase(cadena)= cadena then

begin

Canvas.Font.Color:=clNavy ;

Canvas.Font.Style:=[fsBold];

Canvas.Brush.Color:=$00DDDDDD;

I:=I+1;

end

else

begin

Canvas.Font.Color:=clBlack;

Canvas.FillRect(Rect);

Canvas.TextOut(Rect.Left,Rect.Top,Items[Index]);

I:=I+1;

end;

end;



end;

arch.Free;



end;

De ante mano Gracias!, y un Saludo!.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:21:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi