函数返回指针问题
且看以下代码
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]);