总之,我在完成一个项目时遇到了一些问题。我对delphi不太熟悉,但也不是太糟糕。
我正在创建一个项目,人们可以通过delphi中的Twebbrowser在网站上一次填充两个空格。例如,创建任何网站的帐户创建页面,并说有4个输入字段(输入字段),名字,姓氏,密码和重复密码。我刚刚做了这些,但他们应该让我理解。每个领域都是一种形式。该网站是我的,我知道一切。名字和姓氏在表单1中,密码在表单2中。现在我想创建某种表格,我可以像这样编写这些值:
|名字| 1 |姓氏| 1 |
|密码| 2 | repeatpassword | 2 |
我希望将其保存到任何类型的文件中,并在打开它时再次从中读取。这个想法是4列,初学者是2行。可能会稍后扩展它。但重要的是,当找到firstname id时,它的表单和姓氏+形式是可访问的,而不是密码中的。我希望这能很好地解释这个项目。数据库似乎太复杂了。
现在我的问题是:将这些字符串和值保存到文件中的最佳方法是什么,以便可以从delphi表单(并编辑)访问它们?
答案 0 :(得分:3)
如果你只有少数几个领域,那么inifile就是一个很好的解决方案。您可以使用TIniFile类轻松读取和写入inifiles。
答案 1 :(得分:1)
我更喜欢在本地用户的注册表中记录事物,以便以后轻松检索并防止临时用户编辑它(就像他们可以编辑文件一样) 与ini文件解决方案一样,它只对有限的一组值有用。
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Lakkerw\myProgram', True) then
Reg.WriteString('Usr_Name',sUser_name);
.....
finally
Reg.CloseKey;
FreeAndNil(Reg);
end;
编辑:刚看到你要求它在一个文件中。我想这个解决方案不适用于那个:)
答案 2 :(得分:0)
任何TStrings对象(其中TStringList是后代)都有SaveToFile和LoadFromFile方法。
由于你是初学者(但不是太糟糕:-),我推荐这些页面。
http://www.delphibasics.co.uk/Article.asp?Name=Files
http://www.delphibasics.co.uk/RTL.asp?Name=TStringList
编辑:我发现你在获得你想要的东西时遇到了一些麻烦(重新编写四个相关的字符串)
好的,关系是一个合乎逻辑的概念。我的意思是 - 它们可以通过许多不同的方式实现。
首先,为什么需要保存“重复密码”?这对我没有意义。通常,UI会要求用户重复密码作为一种验证形式,但这一切都很有用。存储它以便以后检索没有任何好处。
我认为你需要保存用户的first_name,last_name和密码(3个字符串)。看看下面这段代码。
procedure SaveUserDetails(sFileName: string);
var
sFirstName, sLastName, sPassword: string;
slUsers: TStringList;
begin
sFirstName := txtFirstName.Text; // these could be from TEdit controls for example
sLastName := txtLastName.Text;
sPassword := txtPassword.Text;
slUsers := TStringList.Create;
slUsers.Add(sFirstName + ',' + sLastName + ',' + sPassword);
slUsers.SaveToFile(sFileName); // that has saved your stringlist to a file
slUsers.Free;
end;
该文件将显示此
Shane,Warne,cricket
现在,如何加载它......
procedure LoadUserDetails(sFileName: string);
var
sFirstName, sLastName, sPassword: string;
sTemp: string;
slUsers: TStringList;
iPos: integer; // string position marker we'll use to split the string in 3
begin
slUsers := TStringList.Create;
slUsers.LoadFromFile(sFileName); // this loads the file's contents into stringlist
sTemp := slUsers[0];
if (Length(sTemp) > 0) then // just to check that there is data there
begin
iPos := pos(',', sTemp); // get position of first comma (our "delimiter")
sFirstName := Copy(sTemp, 0, iPos-1); // firstName everything upto 1st comma
sTemp := Copy(sTemp, iPos + 1, Length(sTemp)); // chop off bit we just read
iPos := pos(',', sTemp); // get position of second comma
sLastName := Copy(sTemp, 0, iPos-1); // LastName everything upto 2nd comma
sTemp := Copy(sTemp, iPos + 1, Length(sTemp)); // chop off bit we just read
sPassword := sTemp; // that's it
end;
slUsers.Free;
end;
现在......这远远不是“好的代码”,但现在你知道至少有一种方法来做你的事情。希望有所帮助。