读书人

函数返回指针有关问题

发布时间: 2012-03-20 14:01:11 作者: rapoo

函数返回指针问题
且看以下代码

TClient =Class(TComponent)
public
...
end

PTClient = ^TClient;

ClientList: TObjectList; //存放TClient的多个实例
ClientList.Add(TClient.Create);
ClientList.Add(TClient.Create);

function TService_Provider.LocateClient(SocketID:Cardinal):PTClient; //返回指针
var
i:integer;
begin
i:=0;
result ^:= TClient(ClientList[i]);//这里返回第一个实例,编译是成功的,但是运行时出现异常!!!!!请问还有什么好的写法吗?
end;

[解决办法]
if ClientList[i] is TClient then
result ^:= TClient(ClientList[i]);
[解决办法]
result := PTClient(ClientList[i]);
[解决办法]
GetMem(result,sizeof(result));
result^ := TClient(ClientList[i]);

读书人网 >.NET

热点推荐