求高手,hook其他程序DBGRID后,增加多条数据报错
注入程序进程后,获取到了DBGRID code:
vWinControl := FindControl(g_hWin);
for I := 0 to vWinControl.ComponentCount - 1 do
begin
if SameText(vWinControl.Components[I].ClassName, 'TDBGridE') then
begin
DBGRID := TDBGrid(vWinControl.Components[I]);
Break;
end;
end;
后面
DataSet := DBGRID.DataSource.DataSet;
for i:=1 to 10 do
begin
DataSet.Insert;
dataset.Fields[7].AsString:=ExcelApp.Cells[ih,1].Value;
dataset.Fields[8].AsString:=ExcelApp.Cells[ih,2].Value;
dataset.Fields[9].AsString:=ExcelApp.Cells[ih,3].Value;
dataset.Fields[10].AsString:=ExcelApp.Cells[ih,4].Value;
dataset.Fields[11].AsString:=ExcelApp.Cells[ih,5].Value;
dataset.Fields[12].AsString:=ExcelApp.Cells[ih,6].Value;
dataset.Fields[4].AsString:=ExcelApp.Cells[ih,7].Value;
DataSet.Post;
end;
第一条导入OK,第二条导入后发现DBGRID里2条数据内容一模一样
不管加不加dataset.next;
showmessage(inttostr(dataset.recordcount));
内容=1
最后一个难关了。研究了N天了。就差这个了。求HELP
dataset的字段有18个。我用程序自己添加数据,然后获取这18个字段的数值跟导入一条获取的数据,18个字段是一样的。
问题会出在哪里呢。。
[解决办法]
把ih换成i试试?
[解决办法]
这里看不出问题,可以这样测试,先不从Excel取数,只是连续添加一些简单的数据,看看结果如何
for i:=1 to 10 do
begin
DataSet.Insert;
dataset.Fields[7].AsString:=inttostr(i);
DataSet.Post;
end;
[解决办法]
'TDBGridE'应该是'TDBGrid'吧?
[解决办法]
Good idea