//读数据库线程函数
function ReadDb(P:pointer):Longint;stdcall;
var
i : Integer;
itx : TListItem;
bIsOnLine : Boolean; //判断是否在线变量TRUE为在线,FALSE为不在线
str : String;
strIp : String;
strMac : String;
strName : String;
strGroup : String;
dwlen : DWORD;
MacAddress : Array [0..5] of byte;
begin
//MainForm.LV_Computer.Clear;
with MainForm.AQ_ReadDb do
begin
Close;
Sql.Clear;
Sql.Text := 'Select IpAddr,MacAddr,ComputerName,GroupName from ComputerInfo';
WaitForSingleObject(MainForm.hMutex,INFINITE);//等待互排量
Open;
MainForm.iHasAddLV := 1; //读取数据库完毕
ReleaseMutex(MainForm.hMutex); //释放互斥量
First;
while (not Eof) do
begin
bIsOnLine := FALSE; //默认电脑不在线
itx := MainForm.LV_Computer.Items.Add();
str := Trim(FieldbyName('IpAddr').AsString);
itx.Caption := str;
str := Trim(FieldbyName('MacAddr').AsString);
itx.SubItems.Add(str);
str := Trim(FieldbyName('ComputerName').AsString);
if (str='')
then begin
itx.SubItems.Add(Trim(FieldbyName('IpAddr').AsString));
end
else begin
itx.SubItems.Add(str);
end;
str := Trim(FieldbyName('GroupName').AsString);
if (str='')
then begin
itx.SubItems.Add('Default');
end
else begin
itx.SubItems.Add(str);
end;
Next;
end;
这是个线程函数线程执行到这的时候就会出现 list index out of bounds(1) 这个错误
请问是什么问题啊?急!!!
function ReadDb(P:pointer):Longint;stdcall;
var
i : Integer;
itx : TListItem;
bIsOnLine : Boolean; //判断是否在线变量TRUE为在线,FALSE为不在线
str : String;
strIp : String;
strMac : String;
strName : String;
strGroup : String;
dwlen : DWORD;
MacAddress : Array [0..5] of byte;
begin
//MainForm.LV_Computer.Clear;
with MainForm.AQ_ReadDb do
begin
Close;
Sql.Clear;
Sql.Text := 'Select IpAddr,MacAddr,ComputerName,GroupName from ComputerInfo';
WaitForSingleObject(MainForm.hMutex,INFINITE);//等待互排量
Open;
MainForm.iHasAddLV := 1; //读取数据库完毕
ReleaseMutex(MainForm.hMutex); //释放互斥量
First;
while (not Eof) do
begin
bIsOnLine := FALSE; //默认电脑不在线
itx := MainForm.LV_Computer.Items.Add();
str := Trim(FieldbyName('IpAddr').AsString);
itx.Caption := str;
str := Trim(FieldbyName('MacAddr').AsString);
itx.SubItems.Add(str);
str := Trim(FieldbyName('ComputerName').AsString);
if (str='')
then begin
itx.SubItems.Add(Trim(FieldbyName('IpAddr').AsString));
end
else begin
itx.SubItems.Add(str);
end;
str := Trim(FieldbyName('GroupName').AsString);
if (str='')
then begin
itx.SubItems.Add('Default');
end
else begin
itx.SubItems.Add(str);
end;
Next;
end;
这是个线程函数线程执行到这的时候就会出现 list index out of bounds(1) 这个错误
请问是什么问题啊?急!!!
解决方案 »
- 对于sqlservermethod 怎么样保存在客户端修改的数据?
- d 2010 的画布怎样才能拖动啊?
- delphi7连接MYSQL的问题
- PageControl控件
- 怎么做可以让dbnavigator中的“+”直接在最后一行添加,而不是在当前行的上面插入?
- 在系统中用户密码为明文,让人打开数据库就知道了,对用户密码加密如何实现?
- 如何将flash文件转换为exe文件及提取flash文件中的声音
- 关于在table1中保存图片的问题
- 救命!!!!!!!!!!!!!!!!!!!!!
- 谁有售饭系统的资料或程序,员工每日第一餐免费,后两餐2元/次,经理全免。刷磁卡条卡均可,IC卡更好。
- 弱弱的问:bytez怎么转换为string?
- mwy654321 兄弟领分
synchronize(ReadDB);