Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-08-2012
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
como crear y editar archivo

amigos !!
me hechan una manito lo que pasa es que quiero editar,modificar y si no existe crear un archivo con extension .cmd que instala un programa
estube viendo este hilo pero no se me ocurre la forma de hacerlo
el archivo debe ser de este formato y al agregar un programa se edite y agrege las lineas antes de exit, alguna idea porfavor...
Código:
CLS
@echo off
 Echo........................................
 Echo..........Install  program
 start /wait %AppsRoot%\Install\program.exe -install
 Echo..................Installed.............
exit
saludos!!
Responder Con Cita
  #2  
Antiguo 08-08-2012
gersojn gersojn is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 85
Poder: 13
gersojn Va por buen camino
Quiza esto te sirva

Cita:
Empezado por jonydread Ver Mensaje
amigos !!
me hechan una manito lo que pasa es que quiero editar,modificar y si no existe crear un archivo con extension .cmd que instala un programa
estube viendo este hilo pero no se me ocurre la forma de hacerlo
el archivo debe ser de este formato y al agregar un programa se edite y agrege las lineas antes de exit, alguna idea porfavor...
Código:
CLS
@echo off
 Echo........................................
 Echo..........Install  program
 start /wait %AppsRoot%\Install\program.exe -install
 Echo..................Installed.............
exit
saludos!!
Pues lo que te recomiendo, es que siempre que crees un archivo consultes si este esta.

Código Delphi [-]
if FileExists( 'C:\Bla\bla\bla\Archivo.cmd' ) then
Begin
//Si existe sobre escribo, leo, modifico o elimino, dependiendo de la accion que quieras efectuar con el
Else
// Creo mi archivo
End;
Con esto puedes verificar cuando no exista el archivo o cuando si esta, para que puedas efectuar las acciones que desees., pasando como parametro el
Directorio(en caso de que el archivo no este en la misma ubicacion de tu aplicacion) y el nombre del archivo a la funcion FileExists() .

Para crear un archivo, la forma mas sutil y menos complicada que te recomiendo es utilizar un componente TMemo. Podes crear tu
archivo con el contenido del TMemo de la siguiente forma, asumiento que el componente TMemo incluido en la aplicacion le coloques de nombre Memo1.

Código Delphi [-]
Memo1.Lines.Add('Aca puedes escribir lineas, si lo que quieres es automatizar algo, por ejemplo cargar comandos de un archivo, etc etc');
// O bien escribir las intrucciones desde la aplicacion como un procesador de texto, como ejemplo claro.
//Para salvar tu archivo o guardarlo|Crearlo haces lo siguiente
Memo1.lines.SaveToFile('NombreArchivo.cmd');
Ahora bien con lo de al agregar un programa se edite y agrege las lineas antes de exit, no entiendo muy claramente, pero pienso que la
solucion que te dare aplique correctamente a lo que necesites.
Vamos por partes, necesitas detectar cuando es que se agrega un programa, asumo que en el sistema operativo donde correra la aplicacion,
como tambien puede ser un directorio apclock o un recurso compartido, bla-bla-bla, bueno lo importante es saber cuando es que ocurre ese cambio,
entonces lo ideal es que con tu aplicacion coloque un timer, el cual se encarge de monitorear el directorio de instalacion de las aplicaciones y tener
una imagen o estructura de los directorios o aplicaciones instalas (En caso de instalaciones en sl S.O. OJO que no todas de aparecen los programas
instalados ya que algunos solo crean directorio e inician como servicio, cabe como ejemplo) esta estructura o imagen de aplicaciones o directorios la
guardas en X lugar o directorio y cada cierto tiempo comparas la estructura guardada, con la estructura actual y si hay cambio, verificar
cual es directorio nuevo o aplicacion nueva y capturarla. Pero bueno todo eso como que suena a marciano, y bueno como jodidos hago eso???

Puedes hacerlo con 3 Tmemos un timer y algunas funciones.
Timer = Timer1
Tmemo= Memo1,Memo2,Memo3;

Código Delphi [-]
//Esta funcion te permite buscar por directorios de instalacion, ahora bien si lo que necesitas es buscar por aplicacion, puedes usar la funcion
//FileExists() pasando como parametro directorio y archivo 
function RastreaDir( Dir: string ):TStringList;
   var
      FileSearch:  TSearchRec;
   begin
     Screen.Cursor := crHourGlass;
     Result := TStringList.Create;
     Result.Clear;
     ChDir ( Dir );
     if FindFirst ( '*.*', faDirectory, FileSearch )=0 then
     repeat
     if ( (FileSearch.Attr and fadirectory) = fadirectory) then
       begin
         if  (FileSearch.Name <> '.')and (FileSearch.Name <> '..') then
           RastreaDir( Dir + '\' + FileSearch.Name );
       end
     else
       begin
         //Aca cargamos el directorio actual
         Form1.Memo1.Lines.Add( FileSearch.Name );
        //Aprovechamos y cargamos la imagen de estructura guarda con la cual compararemos cambios, recuerdas!!, claro, lo condicionas, 
      if FileExists( 'C:\Bla\bla\bla\ArchivoImagenDirectoriooaplicaciones.txt' ) then
      Begin
      //Si existe lo cargo al Memo2
      Else
      // Creo mi archivo
     Form1.Memo2.Lines.Add( Memo1.text );//Lo creo con la imagen de directorio.
End; 
      end;
     until FindNext( FileSearch ) <> 0;
     FindClose( FileSearch );
     Screen.Cursor := crDefault;
  end;

//Bueno ahora solo toca que comparar, esto lo puedes hacer con un Boton, en el cual incluyes un ciclo
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=0 to memo2.Lines.Count-1 do
begin
      
   if memo1.Lines[i] <> memo2.Lines[i] then
    memo3.lines.add(memo1.lines[i]);//Esto asumiendo que se hayan instalado 1 o mas programas se listan en memo3
end;
end;

//Bueno por ultimo, si ha sucedido un cambio o en tu caso una instalacion nueva, agregarla al archivo de log o bueno donde listas las
 //instalaciones antes del exit.

//Con lo anterior tenemos un Memo3 que tiene ya un listado de 0 a N programas instalados, si tenemos un 0 programas instalados, no hay 
//problema, no se hace ningun cambio. Si Memo3 registra una nueva instalacion, haces lo siguiente.
//Cargas el archivo donde registras las instalaciones en un Memo.
Memo1.lines.LoadFromFile('Direcotio\Archivo');
//Una vez cargado el archivo, puedes leer el archivo linea por linea, esto con un ciclo

for i:=0 to memo1.Lines.Count-1 do
begin
      
   if memo1.Lines[i].String = 'exit' then
    X:= i; //en X capturas en que Linea es exit, luego vuelves a efecutar el ciclo
end;

for a:=0 to memo1.Lines.Count-1 do
begin
   if a = (X-1) then //Buscamos la linea anterior a exit, al encontrarla
   Memo1.Lines.Add(Memo3.Text);    //Agregamos las lineas que tenemos en el Memo3 donde tenemos los cambios
   
end;
Memo1.Lines.SavetoFile('Directorio\Archivo');//Guardas el Archivo con el mismo nombre en el mismo Directorio y Listo..

Bueno mi amigo, espero esto de pueda ser util y sacar de un apuro, algo que si te digo, es que de todo lo que aporte algo no es optimo, y es
lo ultimo de leer el Memo1 para detectar donde esta el exit y luego lanzar otro ciclo para agregar las instalaciones, pero funciona, igual alguien
del foro ayuda en ello, ya que ahora mismo no recuerdo otro algoritmo que efectue esa rutina de mejor forma.
Cualquier duda comentas.
Saludos..

Última edición por Casimiro Notevi fecha: 08-08-2012 a las 11:15:41. Razón: Agregar sintaxis, pasada por alto.
Responder Con Cita
  #3  
Antiguo 09-08-2012
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
gracias probare y les cuento como me fue!!
Responder Con Cita
  #4  
Antiguo 09-08-2012
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
aqui esta mas o menos a lo que quiero llegar ya bien claro espero a alguien le sirva
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
richedit1.Lines.LoadFromFile(opendialog1.FileName);
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);

begin
try
richedit1.Lines.Delete(richedit1.Lines.Count - 1);//esta linea elimina el exit
richedit1.Lines.Add('Echo..........Install  program');
richedit1.Lines.Add('start /wait %CDRoom%\App\'+(extractfilename(opendialog2.FileName))+' -install');
richedit1.Lines.Add('Echo..........Completado');
richedit1.Lines.Add('Exit');

finally
  richedit1.Lines.EndUpdate;
  richedit1.lines.SaveToFile(extractfilepath(opendialog1.FileName)+'\new.cmd');

end
end;

muchas gracias nuevamente!
Responder Con Cita
  #5  
Antiguo 14-08-2012
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 13
jonydread Va por buen camino
amigos voy bastante avanzado con el tema y queria saber si es posible en esta linea
Código Delphi [-]
temp.Add('start /wait %CDRoom%\App\'+(extractfilename(opendialog1.FileName))+' -install');
si es mas de un archivo se cree con la cantidad de archivos y nombres de cada uno por ejemplo

CLS
@echo off
Echo..........Install program
start /wait %CDRoom%\App\programa1.exe -install
Echo..........Completado
Echo..........Install program
start /wait %CDRoom%\App\programa2 -install
Echo..........Completado
Exit

tengo esto hasta el momento
Código Delphi [-]
procedure TForm1.EditArchivo(rutArchivo: string);
 var
   temp: TStrings;
 begin
   temp := TStringList.Create;
   try
     temp.LoadFromFile(ruta1.text+'\sources\$oem$\$$\Setup\Scripts\SetupComplete.cmd');
     temp.Delete(temp.Count -1);
     temp.Add('Echo..........Install  program');
     temp.Add('start /wait %CDRoom%\App\'+(extractfilename(opendialog1.FileName))+' -install');
     temp.Add('Echo..........Completado');
     temp.Add('Exit');

   finally
    temp.SaveToFile(rutArchivo);
    temp.Free;
  end
 end;
lo aplico asi
EditArchivo(rutadestino);

se me ocurre hacer algo como si hay mas archivos "EditArchivo(rutadestino);" haga el trabajo de a una vez con cada archivo pero como no se me ocurre quemare pestañas y cerebro mientras jeejjeje
saludos!

Última edición por jonydread fecha: 14-08-2012 a las 03:44:09.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿Cómo puedo editar archivo texto con inno setup? to_to Varios 3 23-01-2014 14:59:22
como crear archivo .xml para cfd richy08 Varios 8 17-12-2010 00:09:05
como crear un archivo en php? gabrielflowers PHP 5 27-03-2008 22:12:18
Cómo almacenar, editar y recuperar una archivo de imagen guardado en la base de datos JKM MS SQL Server 0 03-05-2006 22:29:41
Cómo crear archivo hlp.... oracle Varios 4 01-08-2005 14:19:12


La franja horaria es GMT +2. Ahora son las 16:09:40.


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