Hola ZayDun.
Cita:
Empezado por ZayDun
...
tengo un archivo llamado "config.dat", lo he abierto con un editor de texto y aparecen caracteres codificados y entre ellos se encuentra la cadena que estoy buscando sin codificar, en principio mi idea era la de abrir, buscar, reemplazar y guardar, pero se me esta complicando el código para hacerlo,
...
Pero ahora no se como hacer para buscar dentro del archivo la cadena que estoy buscando.
|
En principio me siento obligado a comentarte que es una acción delicada, por lo que te recomiendo hacer una copia del archivo y realizar las pruebas sobre esta última.
Código Delphi
[-]
procedure SearchAndReplace(const FileName: TFileName;
const Searched, Replacement: string);
var
Stream: TFileStream;
i, cc : Integer;
buf : Char;
start : Int64;
begin
if Length(Searched) <> Length(Replacement) then
raise Exception.Create('¡Las longitudes de las cadenas deben ser iguales!');
Stream:= TFileStream.Create(FileName, fmOpenReadWrite);
try
cc := 1;
start:= -1;
for i:= 0 to Stream.Size do
begin
Stream.Read(buf,SizeOf(buf));
if cc-1 = Length(Searched) then
begin
start:= Stream.Position - Length(Searched)-1;
Break;
end;
if buf = Searched[cc] then
Inc(cc)
else
cc:= 1;
end;
Stream.Position:= start;
for i:= 1 to Length(Searched) do
Stream.Write(Replacement[i], SizeOf(buf));
finally
Stream.Free;
end;
end;
Ejemplo de uso:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
SearchAndReplace('C:\pruebas\notepad2.exe',
'This program cannot be run in DOS mode',
'Este programa no ejecutara en modo DOS');
end;
Aunque probé el código y sé que realiza correctamente lo que buscas, insisto en que resguardes el original y trabajes sobre una copia. Hasta estar completamente seguro que la aplicación que usa ese archivo funcione después del cambio.
Saludos