Ver Mensaje Individual
  #5  
Antiguo 26-01-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Pues se me ha ocurrido algo que puede ser interesante, un programa que modifique todos los archivos de una sola tacada.

Partimos de la base que los .pas son ficheros de texto planos, así que podemos cargarlos en un Memo ¿o no?

Pues vale, preparamos un programa que pueda abrir múltiples archivos (opendialog con multiselect a true) y procedemos a abrirlos secuencialmente.

(Necesitamos una rutina PosEx(substring, cadena:string, index:integer):Integer que pueda buscar el substring dentro de la cadena, a partir del indice index, hay rutinas por la red de este tipo)

Ahora cargamos el contenido del .pas en un StringList y buscamos el texto "class(TForm)", se supone que esa parte de nuestro .pas jamás lo hemos modificado, ya que todos heredan de él.
línea que buscamos:
Código Delphi [-]
 TFrmClientes = class(TForm)

Pues ya solo queda buscar el texto TFrmclientes.FormCreate y encontramos el constructor. Buscamos el próximo "begin" y después insertamos las líneas de código que queramos.

Otra opción es abrir el .dfm (si es texto) y buscar el nombre del evento OnCreate de cada Form, de esa forma no tenemos que buscar tantas veces en el .pas, además solventa un posible error de cambio de nombre del evento, hay veces que en el inspector de objetos, en lugar de dar doble clic, escribimos un nombre y entonces el evento no sigue el patrón descrito en la primera opción.

Edito: acabo de ver la opción del dfm y es mucho más interesante, precisamente porque la primera linea del archivo nos da el tipo de la clase "Tfrmgrupo" en este caso, después solo queda buscar un texto "OnCreate" eso si, siempre y cuando no haya la palabra "object" antes.
Código Delphi [-]
object frmgrupo: Tfrmgrupo
  Left = 339
  Top = 142
  Caption = 'Grupos de caja'
  ClientHeight = 391
  ClientWidth = 571
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  FormStyle = fsMDIChild
  OldCreateOrder = False
  Position = poMainFormCenter
  Visible = True
  OnClose = FormClose
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object tlb1: TToolBar
    Left = 0

Saludos

Salvamos el StringList y cargamos el siguiente.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 26-01-2007 a las 12:22:46.
Responder Con Cita