Estoy migrando mi aplicación de delphi 2007 a delphi xe, pero tengo problemas con un procedimiento que lee un archivo (ascii) y almacena el contenido en una cadenaCómo leer el contenido del archivo en una cadena en delphi XE
este es el código que funcionan bien en Delphi 2007
function LoadFileToStr(const FileName: TFileName): String;
var
FileStream : TFileStream;
begin
FileStream:= TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
if FileStream.Size>0 then
begin
SetLength(Result, FileStream.Size);
FileStream.Read(Pointer(Result)^, FileStream.Size);
end;
finally
FileStream.Free;
end;
end;
pero cuando ejecuta este código en Delphi XE el resultado son sólo símbolos como '????????', sé lo que Delphi XE es unicode entonces cambio estas líneas
SetLength(Result, FileStream.Size);
FileStream.Read(Pointer(Result)^, FileStream.Size);
a
SetLength(Result, FileStream.Size*2);
FileStream.Read(Pointer(Result)^, FileStream.Size);
para almacenar el contenido del archivo en la cadena Unicode pero el resultado es el mismo.
how i can fix this procedure to read the content of this file?
Tenga cuidado con TStringList, porque si el archivo 'texto' de alguna manera contiene caracteres ASCII NUL (0x00), el analizador se detiene y termina con menos líneas que en realidad en el archivo. –