Подтвердить что ты не робот

Как сохранить строку в TXT файле в Delphi?

Мне нужно создать программу, которая генерирует пароль, который сохраняется в текстовом формате в определенном месте назначения, и пользователь должен открыть .txt, чтобы получить пароль для "разблокировки" другой программы.

У меня уже есть код для генерации пароля в строке sPass, и теперь мне нужно использовать функцию SaveToFile, чтобы сохранить ее в текстовый файл, созданный с помощью Password.txt, но я не могу найти общую форму для использования SaveTo File Function в Delphi, и я не знаю, где положить sPass и Password.txt в функцию.

Это должно быть что-то вроде: SaveToFile (...), но я не знаю, как сохранить sPass в Password.txt

Изменить:

Еще один вопрос: как вы удаляете ранее сохраненную в Password.txt ранее добавленную строку к ней, так что Password.txt пуст до того, как будет добавлена ​​строка? Благодаря

4b9b3361

Ответ 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;