Je dois créer un programme qui génère un mot de passe enregistré dans un format de fichier texte dans une destination spécifique que j'ai définie et l'utilisateur doit ouvrir le fichier .txt pour obtenir le mot de passe pour "déverrouiller" un autre programme.
J'ai déjà le code pour générer le mot de passe dans la chaîne sPass et maintenant je dois utiliser la fonction SaveToFile pour l'enregistrer dans le fichier texte que j'ai créé appelé Password.txt mais je ne trouve pas le formulaire général pour utiliser la fonction SaveTo File dans Delphi et moi ne savons pas où mettre le sPass et Password.txt dans la fonction.
Cela devrait être quelque chose comme: SaveToFile (...) mais je ne sais pas comment enregistrer sPass dans Password.txt
Éditer :
Juste une autre question, comment supprimez-vous ce qui est précédemment stocké dans Password.txt avant d'y ajouter la chaîne afin que Password.txt soit vide avant l'ajout de la chaîne? Merci
La méthode moderne consiste à créer une liste de chaînes et à l'enregistrer dans un fichier.
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;
Notez que Delphi a déjà une classe associée qui fait tout ce que vous voulez: TInifile.
Il stocke les valeurs et les clés dans un key = 'value'
format.
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}
Avertissement
Notez que l'enregistrement de mots de passe non cryptés dans un fichier texte est une faille de sécurité. Il est préférable de hacher vos mots de passe à l'aide d'une fonction de hachage, voir: Cryptage du mot de passe dans Delphi
Pour obtenir des conseils sur la façon de sauvegarder les mots de passe de manière sécurisée.
La manière moderne et moderne consiste à utiliser TFile.WriteAllText
dans IOUtils (Delphi 2010 et supérieur)
procedure WriteAllText (const Chemin: chaîne; const Contenu: chaîne); surcharge; statique;
Crée un nouveau fichier, écrit la chaîne spécifiée dans le fichier, puis ferme le fichier. Si le fichier cible existe déjà, il est remplacé.
Vous pouvez utiliser la classe TFileStream
pour enregistrer une chaîne dans un fichier:
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;
et lire
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;
Manière la plus rapide et la plus simple, pas besoin de déclarer de variables:
with TStringList.Create do
try
Add(SomeString);
SaveToFile('c:\1.txt');
finally
Free;
end;