設定した特定の宛先にテキストファイル形式で保存されるパスワードを生成するプログラムを作成する必要があり、ユーザーは.txtを開いてパスワードを取得し、別のプログラムを「ロック解除」する必要があります。
文字列sPassにパスワードを生成するコードを既に持っているので、SaveToFile関数を使用してPassword.txtという名前の作成したテキストファイルに保存する必要がありますが、SaveTo File関数を使用する一般的なフォームが見つかりませんDelphiと私は、関数のどこにsPassとPassword.txtを配置するのかわかりません。
SaveToFile(...)のようなものであるべきですが、Password.txtにsPassを保存する方法がわかりません
編集:
もう1つ質問があります。それは、Password.txtに文字列を追加する前にPassword.txtに保存されているものを削除してから、Password.txtを空白にしてから文字列を追加する方法です。ありがとう
現代的な方法は、文字列リストを作成し、それをファイルに保存することです。
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のパスワード暗号化
安全な方法でパスワードを保存する方法に関するヒント。
Modern Modernの方法は、TFile.WriteAllText
IOUtilsで(Delphi 2010以降)
プロシージャWriteAllText(constパス:文字列; const内容:文字列);過負荷;静的;
新しいファイルを作成し、指定された文字列をファイルに書き込み、ファイルを閉じます。ターゲットファイルが既に存在する場合、上書きされます。
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;
最も速くて簡単な方法、変数を宣言する必要はありません:
with TStringList.Create do
try
Add(SomeString);
SaveToFile('c:\1.txt');
finally
Free;
end;