求高手,hook其他程序DBGRID后,增加多条数据报错
注入程序进程后,获取到了DBGRID code:
- Delphi(Pascal) 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;
后面
- Delphi(Pascal) code
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