string - desde - ¿Cómo guardar una cadena en un archivo.txt en Delphi?
abrir archivos desde delphi (4)
La forma más rápida y sencilla, sin necesidad de declarar ninguna variable:
with TStringList.Create do
try
Add(SomeString);
SaveToFile(''c:/1.txt'');
finally
Free;
end;
Necesito crear un programa que genere una contraseña que se guarda en un formato de archivo de texto en un destino específico que establezco y el usuario debe abrir el archivo .txt para obtener la contraseña para "desbloquear" otro programa.
Ya tengo el código para generar la contraseña en la cadena sPass y ahora necesito usar la función SaveToFile para guardarla en el archivo de texto que creé llamado Password.txt pero no puedo encontrar la forma general para usar la función SaveTo File en Delphi y yo no sabemos dónde colocar sPass y Password.txt en la función.
Debería ser algo como: SaveToFile (...) pero no sé cómo guardar sPass en Password.txt
Editar:
Solo una pregunta más, ¿cómo eliminar lo que está almacenado previamente en Password.txt antes de agregarle la cadena de manera que Password.txt esté en blanco antes de agregar la cadena? Gracias
La forma moderna es crear una lista de cadenas y guardarla en un archivo.
procedure MakeAStringlistAndSaveThat;
var
MyText: TStringlist;
begin
MyText:= TStringlist.create;
try
MyText.Add(''line 1'');
MyText.Add(''line 2'');
MyText.SaveToFile(''c:/folder/filename.txt'');
finally
MyText.Free
end; {try}
end;
Tenga en cuenta que Delphi ya tiene una clase relacionada que hace todo lo que desea: TInifile.
Almacena valores y claves en un formato de key = ''value''
.
passwordlist:= TInifile.Create;
try
passwordlist.LoadFromFile(''c:/folder/passwords.txt'');
//Add or replace a password for `user1`
passwordlist.WriteString(''sectionname'',''user1'',''topsecretpassword'');
passwordlist.SaveToFile(''c:/folder/passwords.txt'');
finally
passwordlist.Free;
end; {try}
Advertencia
Tenga en cuenta que guardar contraseñas no cifradas en un archivo de texto es una fuga de seguridad. Es mejor codificar sus contraseñas utilizando una función hash, consulte: Cifrado de contraseñas en Delphi
Para obtener consejos sobre cómo guardar contraseñas de forma segura.
La forma moderna moderna es usar TFile.WriteAllText
en IOUtils (Delphi 2010 y versiones posteriores)
procedimiento WriteAllText (const Path: string; const Contents: string); sobrecarga; estático;
Crea un nuevo archivo, escribe la cadena especificada en el archivo y luego cierra el archivo. Si el archivo de destino ya existe, se sobrescribe.
Puede usar la clase TFileStream
para guardar una cadena en un archivo:
uses
Classes;
procedure StrToFile(const FileName, SourceString : string);
var
Stream : TFileStream;
begin
Stream:= TFileStream.Create(FileName, fmCreate);
try
Stream.WriteBuffer(Pointer(SourceString)^, Length(SourceString));
finally
Stream.Free;
end;
end;
y leer
function FileToStr(const FileName : string):string;
var
Stream : TFileStream;
begin
Stream:= TFileStream.Create(FileName, fmOpenRead);
try
SetLength(Result, Stream.Size);
Stream.Position:=0;
Stream.ReadBuffer(Pointer(Result)^, Stream.Size);
finally
Stream.Free;
end;
end;