字符串和整数访问和保存

时间:2011-02-22 11:28:40

标签: delphi

总之,我在完成一个项目时遇到了一些问题。我对delphi不太熟悉,但也不是太糟糕。

我正在创建一个项目,人们可以通过delphi中的Twebbrowser在网站上一次填充两个空格。例如,创建任何网站的帐户创建页面,并说有4个输入字段(输入字段),名字,姓氏,密码和重复密码。我刚刚做了这些,但他们应该让我理解。每个领域都是一种形式。该网站是我的,我知道一切。名字和姓氏在表单1中,密码在表单2中。现在我想创建某种表格,我可以像这样编写这些值:

|名字| 1 |姓氏| 1 |

|密码| 2 | repeatpassword | 2 |

我希望将其保存到任何类型的文件中,并在打开它时再次从中读取。这个想法是4列,初学者是2行。可能会稍后扩展它。但重要的是,当找到firstname id时,它的表单和姓氏+形式是可访问的,而不是密码中的。我希望这能很好地解释这个项目。数据库似乎太复杂了。

现在我的问题是:将这些字符串和值保存到文件中的最佳方法是什么,以便可以从delphi表单(并编辑)访问它们?

3 个答案:

答案 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;

现在......这远远不是“好的代码”,但现在你知道至少有一种方法来做你的事情。希望有所帮助。