Saltar al contenido

Cómo leer el contenido del archivo a un string en delphi XE

Posterior a de nuestra larga compilación de información resolvimos esta cuestión que presentan muchos usuarios. Te brindamos la solución y nuestro deseo es servirte de gran ayuda.

Solución:

su código no funciona porque está leyendo el contenido del archivo usando un Unicode string como búfer, por lo que solo está moviendo bytes del búfer interno de TFileStream al Unicode string ignorando la codificación.

puede arreglar fácilmente su procedimiento, simplemente cambiando el tipo de resultado a AnsiString

function LoadFileToStr(const FileName: TFileName): AnsiString;

pero te recomendaré cuál usas TFile.ReadAllText en cambio, la función que en una sola línea de código lee el contenido de un archivo y también maneja la codificación del archivo.

Puede lograr esto con una línea de código usando la función ReadAllText. Me gusta esto:

Uses IOUtils;

TFile.ReadAllText(FileName);
TFile.ReadAllText(FileName, s, TEncoding.ASCII) // force encoding 

Detectará correctamente archivos ANSI, Unicode y binarios.

Debe tener en cuenta la codificación, por ejemplo:

function LoadFileToStr(const FileName: TFileName): String;
var
  FileStream : TFileStream;
  Bytes: TBytes;

begin
  Result:= '';
  FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    if FileStream.Size>0 then begin
      SetLength(Bytes, FileStream.Size);
      FileStream.Read(Bytes[0], FileStream.Size);
    end;
    Result:= TEncoding.ASCII.GetString(Bytes);
  finally
    FileStream.Free;
  end;
end;


//test
procedure TForm2.Button1Click(Sender: TObject);
begin
  ShowMessage(LoadFileToStr('C:autoexec.bat'));
end;

Puedes añadir valor a nuestra información tributando tu experiencia en las interpretaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *