Как сохранить строку в TXT файле в Delphi?
Мне нужно создать программу, которая генерирует пароль, который сохраняется в текстовом формате в определенном месте назначения, и пользователь должен открыть .txt, чтобы получить пароль для "разблокировки" другой программы.
У меня уже есть код для генерации пароля в строке sPass, и теперь мне нужно использовать функцию SaveToFile, чтобы сохранить ее в текстовый файл, созданный с помощью Password.txt, но я не могу найти общую форму для использования SaveTo File Function в Delphi, и я не знаю, где положить sPass и Password.txt в функцию.
Это должно быть что-то вроде: SaveToFile (...), но я не знаю, как сохранить sPass в Password.txt
Изменить:
Еще один вопрос: как вы удаляете ранее сохраненную в Password.txt ранее добавленную строку к ней, так что Password.txt пуст до того, как будет добавлена строка? Благодаря
Ответы
Ответ 1
Современный способ - создать строковый список и сохранить его в файле.
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;
Обратите внимание, что в Delphi уже есть связанный класс, который делает все, что вам нужно: TInifile.
Он сохраняет значения и ключи в формате 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}
Внимание
Обратите внимание, что сохранение незашифрованных паролей в текстовом файле является утечкой безопасности. Лучше хешировать свои пароли с помощью хэш-функции, см. Шифрование паролей в Delphi
Советы по безопасному сохранению паролей.
Ответ 2
Современный современный способ - использовать TFile.WriteAllText
в IOUtils (Delphi 2010 и выше)
procedure WriteAllText (const Path: string; const Содержимое: строка); перегрузки; статические;
Создает новый файл, записывает указанную строку в файл, а затем закрывает файл. Если целевой файл уже существует, он перезаписывается.
Ответ 3
Вы можете использовать класс TFileStream
для сохранения строки в файле:
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;
и читать
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;
Ответ 4
Самый быстрый и простой способ, не нужно объявлять какие-либо переменные:
with TStringList.Create do
try
Add(SomeString);
SaveToFile('c:\1.txt');
finally
Free;
end;