Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-01-2015
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
El silencio. Me hace temer lo peor.
Esta difícil y la vez extraño verdad? Yo llevó 2 semanas y nada.

Disculpa el haberte puesto en este lío Nelson. Agradezco tu ayuda.

Última edición por elmago00 fecha: 08-01-2015 a las 06:41:33.
Responder Con Cita
  #2  
Antiguo 08-01-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
elmago00,

Cita:
Empezado por elmago00
...El silencio. Me hace temer lo peor...


En lo que lo tenga listo lo publico, me falta un detalle

Saludos,

Nelson.

Última edición por nlsgarcia fecha: 08-01-2015 a las 11:50:22.
Responder Con Cita
  #3  
Antiguo 08-01-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
elmago00,

Cita:
Empezado por nlsgarcia
...En lo que lo tenga listo lo publico, me falta un detalle...


Revisa este código:
Código Delphi [-]
// Cambia n ocurrencias de una cadena Hex por una nueva cadena Hex en un archivo
function ChangeFileHex(OldHex, NewHex, FileName : String) : Boolean;
var
   F1, F2 : TFileStream;
   Buffer : Array of Byte;
   AuxHex : String;
   i,p, PosFile : Integer;
   BPF, NBR : Integer;  // BPF = Bytes Per Row, NBR = Number of Bytes Read

begin

   try

      F1 := TFileStream.Create(FileName, fmOpenRead);
      F2 := TFileStream.Create(ChangeFileExt(FileName,'.new'), fmCreate);

      BPF := Length(OldHex) div 2;

      SetLength(Buffer, BPF);

      PosFile := 0;

      while F1.Position < F1.Size do
      begin

         Application.ProcessMessages;

         NBR := F1.Read(Buffer[0], BPF);

         AuxHex := EmptyStr;

         for i := Low(Buffer) to High(Buffer) do
            AuxHex := AuxHex + IntToHex(Buffer[i],2);

         if OldHex = AuxHex then
         begin
            for i := Low(Buffer) to High(Buffer) do
               Buffer[i] := 0;
            p := 1;
            i := 0;
            while p <= Length(NewHex) do
            begin
               Buffer[i] := StrToInt('$' + Copy(NewHex,p,2));
               Inc(p,2);
               Inc(i,1);
            end;
            F2.Write(Buffer[0], NBR);
            Inc(PosFile,BPF);
         end
         else
         begin
            F2.Write(Buffer[0], 1);
            Inc(PosFile);
            F1.Seek(PosFile,soFromBeginning);
         end;

      end;

      F1.Free;
      F2.Free;
      Result := True;

   except

      F1.Free;
      F2.Free;
      Result := False;

   end;

end;
El código anterior en Delphi 7 sobre Windows 7 Professional x32, permite cambiar N ocurrencias de una cadena hexadecimal por una nueva sin importar el tamaño de la misma, esta es una modificación de la función publicada en el Msg #43.

Nota:

1- La velocidad de procesamiento es un bit menor dado que se lee el archivo por medio de una ventana deslizante determinada por la cadena de búsqueda, lo cual garantiza que se encuentren y modifiquen todas las ocurrencias de la misma.

2- La cadena de búsqueda y su sustituto (OldHex y NewHex), deben ser del mismo tamaño.

3- La función fue probada con archivos de texto y binarios (.exe y .dll), funcionado correctamente según lo esperado en todos los casos.

El archivo dump.dll original y su versión modificada dump.new en función de lo publicado en el Msg #51, esta disponible en : Test Dump

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 08-01-2015 a las 13:26:14.
Responder Con Cita
  #4  
Antiguo 08-01-2015
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
Muchas Gracias Nelson
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
ayuda con este codigo kurono Varios 5 02-04-2014 00:25:11
Se estrena este foro sobre FireMonkey Neftali [Germán.Estévez] FireMonkey 9 09-11-2012 13:05:30
ayuda con este codigo kurono Varios 4 13-06-2008 01:03:29
necesito ayuda con este codigo kurono Varios 4 06-05-2008 07:02:07
procedimiento almacenado ayuda con este codigo pipecato Varios 5 16-12-2005 12:24:34


La franja horaria es GMT +2. Ahora son las 12:11:09.


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