Hier mal wie das Array befüllt und geleert wird. Mag sein, dass die Remove-Methode noch etwas umständlich ist, die hab ich noch nicht überarbeitet, vllt. wird da auch das Array zerschossen?
Delphi-Quellcode:
procedure TTapiLine.AddCall(Call: TTapiCall);
begin
SetLength(priv_Calls,High(priv_Calls)+2);
priv_Calls[High(priv_Calls)]:=Call;
end;
procedure TTapiLine.AddCall(CallHandle: Cardinal);
var Call:TTapiCall;
begin
Call:=TTapiCall.Create(CallHandle);
if Call.Initialized then
AddCall(Call)
else
Call.Free;
end;
procedure TTapiLine.RemoveCall(CallHandle: Cardinal);
var i,j:integer;
begin
if CallCount=0 then exit;
i:=low(priv_calls);
while (priv_calls[i].Handle<>CallHandle) and (i<high(priv_calls)) do
inc(i);
if priv_calls[i].Handle=CallHandle then
begin
for j:=i to high(priv_Calls)-1 do
priv_Calls[j]:=priv_Calls[j+1];
Setlength(priv_Calls, High(priv_Calls));
end;
end;