![]() |
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! :) |
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 |
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!:) |
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 |
Existe una forma mas sencilla:
Espero que te sea de utilidad. |
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!. :) |
Estás mezclando dos cosas:
Comenzaste este hilo preguntando cómo leer un archivo de texto y determinar si una línea está en mayúsculas o no. Después pasaste al tema del ListBox y no queda claro del todo claro su relación con el archivo. Si el ListBox lo llenas con las líneas del archivo entonces no necesitas ningún TStringList aparte, basta que hagas:
La propiedad Items es ya un TStringList (más o menos). Pero por otra parte recuerda: tú no pintas los elementos del ListBox, únicamente indicas bajo qué condiciones un elemento debe ir de un color u otro. En el evento OnDrawItem no lees el archivo, ése ya lo leíste previamente. El parámetro Index indica el ítem que en esos momentos (cuando la VCL llama al evento) se va a dibujar y es cuando debes verificar si está en mayúsculas: Código:
// Pseudo-código |
Muchas Gracias Roman!y un Saludo.
Hola Roman!, otra vez yo, Gracias por tú respuesta, creo que estaba muy perdida, pero ya reflexione gracias a tú guía. Ya me salio lo que quería hacer, y lo dejo aquí por si alguien quiere hacer algo como esto.
Muchas Gracias Roman!y un Saludo.;)
|
Ariatna, me tomé la libertad de editar tu mensaje para añadir las etiquetas [delphi]. Cómo verás la diferencia es notable en cuanto a la presentación del código. Te sugiero que a partir de ahora las uses (entra a editar tu mensaje para que veas cómo) a fin de que a los demás nos sea fácil la lectura.
// Saludos |
La franja horaria es GMT +2. Ahora son las 15:53:13. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi