Invalid pointer operation出错,找了很久找不出原因.大家帮帮忙啊(100分)

  • 主题发起人 主题发起人 crazybay
  • 开始时间 开始时间
C

crazybay

Unregistered / Unconfirmed
GUEST, unregistred user!
我是(一)调用(二)的.然后在(二)的最后一句(Result := fValue;)出现了那个错误..注:(二)是(一)引用的一个.PAS里面的函数
(一)
if (trim(SpecRec.NBR_TYPE)<>'O')and(trim(SpecRec.NBR_TYPE)<>'Q')and(trim(SpecRec.NBR_TYPE)<>'Z') then
SpecRec.NBR_TYPE := GetServTypeSts(ServTypeId, 'NBR_TYPE');
(二)
function GetServTypeSts(sServTypeId:string;ServTypeSts:string): string;
var
qryGetServFlag: TAppClientDataSet;
fValue : String;
begin
qryGetServFlag := TAppClientDataSet.Create(nil);
qryGetServFlag.SetSQLStmt('select b.sts_words '+ServTypeSts+' from sp_status b '+
' where b.tab_name = ''SERV_TYPE'' and b.col_name = '''+ServTypeSts+''''+
' and b.sts_id = :v_serv_type_id');

qryGetServFlag.Close;
qryGetServFlag.Params.ParamByName('v_serv_type_id').asString := sServTypeId;
qryGetServFlag.open;

if not qryGetServFlag.IsEmpty then
begin
fValue := qryGetServFlag.fieldByName(ServTypeSts).asString;
end;

Result := fValue;
end;
 
无效的指针操作错误。。
你的APPCLIENTDATASET不知道是什么组件,应该类似于CLIENTDATASET吧。。
TAPPCLIENTDATASET.怎么没有FREE呢?
另外代码比较乱,你的两个参数最好也通过参数的方法操作。
这个动态的组件不需要设置数据源吗?
我建议了,我不大明白你的组件。。
 
我刚才又试了,只要有在(一)中对SpecRec.NBR_TYPE 赋值就会出错..我晕了,真找不出为什么..我赋了STRING类型的,还有PCHAR都会出错...太怪了.
 
看上面的代码,应该保持先关闭在赋值的原则
qryGetServFlag := TAppClientDataSet.Create(nil);
qryGetServFlag.Close;//其实刚创建的可以省略。
qryGetServFlag.SetSQLStmt('select b.sts_words '+ServTypeSts+' from sp_status b '+
' where b.tab_name = ''SERV_TYPE'' and b.col_name = '''+ServTypeSts+''''+
' and b.sts_id = :v_serv_type_id');


qryGetServFlag.Params.ParamByName('v_serv_type_id').asString := sServTypeId;
qryGetServFlag.open;

if not qryGetServFlag.IsEmpty then
begin
fValue := qryGetServFlag.fieldByName(ServTypeSts).asString;
end;
如果不需要数据源。这个函数没有问题,如果指针有问题,估计SpecRec.NBR_TYPE 有问题。SpecRec不知道是什么指针或者记录。
 
接受答案了.
 

Similar threads

I
回复
0
查看
709
import
I
I
回复
0
查看
561
import
I
I
回复
0
查看
643
import
I
I
回复
0
查看
853
import
I
后退
顶部