写DELPHI调用WINDOWS2000的用户管理器导出的用户表时遇到些小问题?如果您装的是WIN2000 P 的话,现在你就可以看看,很值得研究哟(0分)

  • 主题发起人 主题发起人 liwei@
  • 开始时间 开始时间
L

liwei@

Unregistered / Unconfirmed
GUEST, unregistred user!
在WINDOWS2000 P 里的开始-控制面板-管理工具-计算机管理-本地用户和组-用户
然后在工具栏的帮助左边那个按钮,将用户导出为一个.txt文件
这是我机器上导出后的文件内容:
****************************************************
第一行** 名称 全名 描述
第二行** Administrator administrator 管理计算机(域)的内置帐户
第三行** Guest 供来宾访问计算机或访问域的内置帐户
*****************************************************
我现在要把这个表的数据导到我的数据库里,现在遇到一个问题:
注意看,第二行的'名称','全名','描述'都有,第三行没有'全名'
那么,在第二行,我可以判断空格的位置来求子串,而第三行,中间没有'全名'
我如何求出其中的子串呢?
我想国定义一个记录数组,可没有实现

TUser = record
UserName:String;
fullname:String;
dec:String;
end;
var
User: array of TUser;

 
经过我分析发现,它们具备下列格式:
Administrator[#9]administrator[#9]管理计算机(域)的内置帐户
Guest[#9][#9]供来宾访问计算机或访问域的内置帐户
你可以用文本文件方式读取,使用ReadLn()
然后用字符串函数读取字符,判断ASCII码[#9]的个数:
第一个[#9]前面是“名称”;
第一个[#9]和第二个[#9]之间是“全名”
第二个[#9]后面是“描述”
用Pos()函数判断[#9]出现的位置就可以了,具体编程不复杂,自己试一试。
 
程序实现如下:

type
TUser = record
UserName: String;
Fullname: String;
Dec: String;
end;
TUsers = array of TUser; // 若要用动态数组作为参数传递,必须这样声明
var
User: TUsers;

function GetComputerUsers(Filename: string; var Users: TUsers): Boolean;
var
F: TextFile;
S: string;
P: Integer;
begin
{$I-}
System.AssignFile(F, FileName);
System.Reset(F);
SetLength(Users, 0); // 设置动态数组的长度为零
try
System.ReadLn(F, S); // 跳过第一行的标题
while not System.Eof(F) do
begin
System.ReadLn(F, S); // 读取第一个用户信息
SetLength(Users, High(Users) - Low(Users) + 2); // 设置动态数组的长度
P:= Pos(#9, S); // 判断TAB字符第一次出现的位置
Users[High(Users)].UserName:= Copy(S, 1, P - 1); // 取用户名称
S:= Copy(S, P + 1, Length(S) - P); // 从S中删除用户名称
P:= Pos(#9, S); // 判断TAB字符第二次出现的位置
Users[High(Users)].Fullname:= Copy(S, 1, P - 1); // 取全名
Users[High(Users)].Dec:= Copy(S, P + 1, Length(S) - P); // 取描述
end;
finally
System.CloseFile(F);
Result:= not BOOL(System.IOResult); // 返回操作的结果
end;
{$I+}
end;

在我的计算机上已经测试通过!

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部