我需要制作一个程序,生成一个密码,该密码在我设置的特定目的地以文本文件格式保存,并且用户需要打开.txt以获取密码以“解锁”另一个程序。
我已经获得了在字符串sPass中生成密码的代码,现在我需要使用SaveToFile函数将其保存到我创建的名为Password.txt的文本文件中,但我找不到使用SaveTo的常规表单Delphi中的文件功能,我不知道将sPass和Password.txt放在函数中的哪个位置。
应该是这样的:SaveToFile(...)但我不知道如何在Password.txt中保存sPass
编辑:
还有一个问题,在添加字符串之前,如何删除以前存储在Password.txt中的内容,以便在添加字符串之前Password.txt为空?感谢
答案 0 :(得分:36)
现代现代的方式是在IOUtils中使用TFile.WriteAllText
(Delphi 2010及以上版本)
procedure WriteAllText(const Path:string; const Contents:string); 超载;静态的;
创建新文件,将指定的字符串写入文件,然后 关闭文件。如果目标文件已存在,则会被覆盖。
答案 1 :(得分:22)
现代的方法是创建一个字符串列表并将其保存到文件。
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}
警告强>
请注意,在文本文件中保存未加密的密码是安全漏洞。最好使用哈希函数对密码进行哈希处理,请参阅:Password encryption in Delphi
有关如何以安全方式保存密码的提示。
答案 2 :(得分:15)
您可以使用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;
答案 3 :(得分:4)
最快最简单的方法,无需声明任何变量:
with TStringList.Create do
try
Add(SomeString);
SaveToFile('c:\1.txt');
finally
Free;
end;