对象间的赋值(50分)

  • 主题发起人 主题发起人 flax
  • 开始时间 开始时间
F

flax

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好!
有一 function t1(a:string):TQuery;
我调用它
var
t2:TQuery;
begin
t2:=TQuery.Creat(Self);
t2:=t1('1');
t2.first;
................
end;
在t2.first处出现错误,错误信息:Access violation at address 0040996c in module 'test.exe'.Read of address 6e6e613f.
在watch中显示t2.first:Inaccessible value
请问为何不能调用此对象,如何解决?
 
用参数调用,因为你的方法t2是局部变量,应该是系统自动释放了.
procedure t1(a : string
var Qy : TQuery);
 
t2:=t1('1');
t1()的作用是为t2生成一个TQuery,
用参数调用,因为你的方法t2是局部变量,应该是系统自动释放了.
何解呢?
 
应该把下面这个去掉
t2:=TQuery.Creat(Self);
但是错误并不在这几行里,很可能t1有错误
 
去掉t2.first;
是不是你的t2还没有open???
 
function t1(a:string):TQuery
贴出来
另外t2:=TQuery.Creat(Self);属于多余
 
to Pipi:
function t1(a:string):TQuery
只是返回一个TQuery对象的函数
另外,去掉t2:=TQuery.Creat(Self);错误依旧
to kingdeezj
Open后也依旧

 
试试此方法:
function t1(a:string):TQuery;
begin
....
Result := TQuery.Create;//在函数里把它建起来!
end;
 
t2:=t1('1') 返回了一个空指针(返回TQuery实际返回TQuery的指针,没找到合适的的返回值,会返回空)
'1'估计不是个能产生Query的参数值,把t1的详细过程也贴出来
 
不看 t1 这个函数,我就不放心
 
后退
顶部