Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > FireMonkey
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-05-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por elmago00 Ver Mensaje
gracias por responder Nelson.
veras es que lo intento hacer es abrir el archivo, y editarlo automáticamente, buscando la dirección y la cantidad de caracteres que le siguen. luego reemplazarlos por los que yo pongo. por eso decía si podía hacer lo mismo pero almacenarlo en una variable TStringGrid, sin usar el componente.
Hola elmago00.

En el hilo anterior había interpretado que querias realizar cambios, de allí que usé un componente que te permitiera hacerlos interactivamente, pero si deseas guardarlo en un archivo de texto para trabajar sobre él, también podrías hacer:
Código Delphi [-]
procedure DumpFile(aFileName:TFileName; const BPF: Word);
var
  c, i, r: integer;
  ascii: string;
  linea: string;
  aux: Byte;
begin
  with TMemoryStream.Create do
  try
    LoadFromFile(aFileName);
    Seek(0, soBeginning);
    with TStringList.Create do
    try
      c:= 0;
      while c < Size do
      begin
        linea:= IntToHex(c, 8)+' ';
        ascii:= EmptyStr;
        i:= 0;
        while (i < BPF) and (i+c < Size) do
        begin
          Read(aux, SizeOf(Byte));
          linea:= linea + IntToHex(aux,2) + ' ';
          if aux in [$0..$20,$80..$90] then aux:= Ord('.');
          ascii:= ascii + Chr(aux);
          Inc(i);
        end;
        linea:= linea + ascii ;
        Add(linea);
        Inc(c, BPF);
        Inc(r);
      end;
      SaveToFile(ExtractFilePath(aFileName) +
        ChangeFileExt(ExtractFileName(aFileName), '') + '.HEX');
    finally
      Free;
    end;
  finally
    Free;
  end;
end;

Uso:
Código Delphi [-]
  DumpFile('c:\windows\notepad.exe',16);
El código te genera el archivo en la misma carpeta del archivo orígen, con el mismo nombre, de extensión .HEX y contiene los mismos datos que veías en el StringGrid.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 07-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
elmago00,

Cita:
Empezado por elmago00
...al fin lo conseguí...


Una pequeña corrección :
Código Delphi [-]
procedure TForm1.DumpFile(aFileName:TFileName; SG: TStringGrid; const BPF: Word);
var
  c, i, r, b : Integer;
  Ascii: String;
  Aux: Byte;
  Col : Integer;

begin

  with TMemoryStream.Create do
  try

    LoadFromFile(aFileName);

    Caption:= Format('FileName = %s , FileSize = %d Bytes', [aFileName, Size]);

    // Configurar StringGrid

    SG.ShowHeader := False;
    SG.ShowHorzLines := False;
    SG.ShowVertLines := False;

    for i := 1 to BPF + 2 do
       SG.AddObject(TStringColumn.Create(nil));

    SG.RowCount := (Size div BPF) + 1;
    if (Size Mod BPF) <> 0 then
       SG.RowCount := SG.RowCount + 1;

    for Col := 0 to SG.ColumnCount - 1 do
    begin

        if (Col = 0) then
           SG.Columns[Col].Width := 80;

        if (Col <> SG.ColumnCount - 1) and (Col <> 0) then
           SG.Columns[Col].Width := 30;

        if (Col = SG.ColumnCount - 1) then
           SG.Columns[Col].Width := SG.Canvas.TextWidth('X') * BPF;

    end;

    SG.Cells[0,0]:= 'Offset(h)';
    SG.Cells[SG.ColumnCount-1,0]:= 'ASCII';

    for i:= 0 to BPF-1 do
    begin
      SG.Cells[i+1,0]:= IntToHex(i,2);
    end;

    // Cargar en StringGrid

    Seek(0, soBeginning);
    c:= 0;
    r:= 1;
    b := 0;

    while c < Size do
    begin

      Application.ProcessMessages;

      if CancelProcess then
      begin
         CancelProcess := False;
         Break;
      end;

      SG.Cells[0, r]:= Format('%s',[IntToHex(c, 8)]);
      Ascii:= EmptyStr;
      i:= 0;

      while (i < BPF) and (b < Size) do
      begin
        Read(Aux, SizeOf(Byte));
        SG.Cells[i+1,r]:= IntToHex(Aux,2);
        if Aux = 0 then Aux := 46;
        Ascii:= Ascii + Chr(Aux);
        Inc(i);
        if (b < Size) then Inc(b);
      end;

      SG.Cells[SG.ColumnCount-1,r]:= Format('%s',[Ascii]);
      Inc(c, BPF);
      Inc(r);
      Label1.Text := Format('Procesado Byte %d de %d',[b, Size]);

    end;

  finally

    Free;

  end;

end;
El código anterior en Delphi XE4 bajo Windows 7 Professional x32, corrige el código del Msg #15 en los casos en que los archivos a visualizar no sean múltiplos del factor de visualización (BPF), como se muestra en la siguiente imagen:



El código esta disponible en : Visualizador de Archivos en Hexadecimal v2 en FireMonkey

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 07-05-2014 a las 22:32:39.
Responder Con Cita
  #3  
Antiguo 08-05-2014
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 87
Poder: 14
elmago00 Va por buen camino
muchas gracias, agradezco mucho que hayan compartido su experiencia en este lenguaje conmigo. muchas gracias

Última edición por elmago00 fecha: 08-05-2014 a las 07:18:34.
Responder Con Cita
  #4  
Antiguo 08-05-2014
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 87
Poder: 14
elmago00 Va por buen camino
aprovecho, para preguntarles, se podrá recuperar el archivo con su extensión original.
pues al hacer el cambio en el archivo después de editarlo, no vuelve a funcionar, por que esta en hexadecimal.
¿se puede recuperar el archivo original, pero después de haberlo modificado?.
Responder Con Cita
  #5  
Antiguo 08-05-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por elmago00 Ver Mensaje
...
¿se puede recuperar el archivo original, pero después de haberlo modificado?.
Hola elmago00.

No me queda claro desde donde o a partir de qué pensas recuperar el archivo original, pero sin dudas agradecerás haber llamado a este procedimiento antes de modificar el ejecutable:
Código Delphi [-]
procedure BeforeDoingCrap(aFileName: TFileName);
begin
  if not CopyFile(PChar(aFileName),
                  PChar(ExtractFilePath(aFileName)+ChangeFileExt(ExtractFileName(aFileName),'')+'.BAK'),
                  True) then
    MessageBox(0,PChar('Error: ' + SysErrorMessage(GetLastError)), '', MB_ICONERROR);
end;
De este modo, si se estropea el ejecutable, basta con borrarlo y luego renombrar el archivo .BAK como .EXE.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 08-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
elmago00,

Cita:
Empezado por elmago00
...se podrá recuperar el archivo con su extensión original pues al hacer el cambio en el archivo después de editarlo, no vuelve a funcionar, por que esta en hexadecimal...
Pregunto:

1- ¿Realizastes las correcciones al código indicadas en el Msg #18?, son vitales para la correcta carga y visualización del archivo en proceso.

2- ¿Que tipo de archivos estas modificando y por que lo haces de esta forma?

3- En el Msg #10 indicas que la aplicación esta hecha en FireMonkey y que tiene más de 40000 líneas de código, ¿Cual es el objetivo de esta aplicación?.

4- ¿Puedes detallar el proceso de modificación del archivo(s) en cuestión?

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 08-05-2014 a las 15:57:06.
Responder Con Cita
  #7  
Antiguo 08-05-2014
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 87
Poder: 14
elmago00 Va por buen camino
hola,
este es el tipo de archivo. por favor descarguen el archivo para que lo vean ustedes mismos.

http://www.mediafire.com/download/xj.../inChipset.rar

quiero restaurarlo a su estado original, después de editarlo. es decir guardar cambios.

les adjunto una imagen para que ven la dirección modificar. y la verdad haber si me ayudan ya que reemplazo la cadena hexadecimal, pero la anterior no se borra,
sino que sigue delante de la otra. como si añadiera string y no reemplaza el hexadecimal, pues debo borrar los siguientes 47 caracteres. solo puedo especificar la dirección, pues el hexadecimal es diferente en todos los archivos. no puedo especificar el hexadecimal a reemplazar. solo la dirección.

es poco difícil verdad. debo entregrarlo en dos días jeje

Última edición por elmago00 fecha: 08-05-2014 a las 21:42:30.
Responder Con Cita
  #8  
Antiguo 08-05-2014
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.714
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por nlsgarcia Ver Mensaje
elmago00,

Pregunto:

1- ¿Realizastes las correcciones al código indicadas en el Msg #18?, son vitales para la correcta carga y visualización del archivo en proceso.

2- ¿Que tipo de archivos estas modificando y por que lo haces de esta forma?

3- En el Msg #10 indicas que la aplicación esta hecha en FireMonkey y que tiene más de 40000 líneas de código, ¿Cual es el objetivo de esta aplicación?.

4- ¿Puedes detallar el proceso de modificación del archivo(s) en cuestión?

Espero sea útil

Nelson.
Esperando respuestas...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
ayuda con este codigo kurono Varios 5 02-04-2014 01:25:11
Se estrena este foro sobre FireMonkey Neftali [Germán.Estévez] FireMonkey 9 09-11-2012 14:05:30
ayuda con este codigo kurono Varios 4 13-06-2008 02:03:29
necesito ayuda con este codigo kurono Varios 4 06-05-2008 08:02:07
procedimiento almacenado ayuda con este codigo pipecato Varios 5 16-12-2005 13:24:34


La franja horaria es GMT +2. Ahora son las 05:47:53.


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