Hallo liebe Delphi Gemeinde,
Und zwar Prüfe ich über einen Timer (Interval 500ms), wer gerade im Teamspeak auf einem Channel auf dem Man connected ist spricht!
Soweit so gut, es klappt auch, nur nach ca. 15 - 20 Minuten wird immer eine
Exception ausgelöst. und zwar eine Zugriffsverletzung in meiner Programm.exe
Könntet Ihr euch den Code bitte mal ansehen, vielleicht endeckt ihr ja einen Fehler, oder den Grund für dieses Verhalten
Hier der Code:
Delphi-Quellcode:
function GetTSSpeaker : pchar;
Function DisplayResult( Res: Integer ) : Boolean;
Var
ErrorMessage:
array[0..1023]
of Char;
begin
if res=0
then
begin
//Writeln('OK');
Result := True;
exit;
end
else
begin
tsrGetLastError(@ErrorMessage, SizeOf(ErrorMessage));
Result := False;
end;
end;
function DoGetPlayers : boolean;
var
PlayersInfo :
Array[0..1023]
of TtsrPlayerInfo;
Records : Integer;
I: integer;
begin
result := true;
Records := 1024;
try
if not DisplayResult(tsrGetPlayers(@playersInfo, @records) )
then ;
if Records > 0
then
setlength(Player,records);
if records > 0
then
begin
for I :=0
to Records-1
do
begin
PLayer[i].id := PlayersInfo[i].PlayerID;
Player[i].
Name := PlayersInfo[i].NickName;
end;
result := true;
end;
except
On E:
Exception Do
begin
hLog.AddException(E);
exit;
end;
end;
end;
function DoGetSpeakers : pchar;
var
IDs :
Array[0..1023]
of Integer;
Records : Integer;
I: integer;
PlayersInfo :
Array[0..1023]
of TtsrPlayerInfo;
ID : integer;
begin
result := '
';
Records := 1024;
try
if not DisplayResult(tsrGetSpeakers(@playersInfo, @records) )
then exit;
if Records > 0
then ;
for I :=0
to Records-1
do
ID := PlayersInfo[i].PlayerID ;
for i:= 0
to high(Player)
do
if Player[i].id = Id
then
result := pchar(player[i].
Name);
except
On E:
Exception Do
hLog.AddException(E);
end;
end;
begin
result := '
';
if DOGetPlayers
then
try
result := DogetSpeakers;
except
On E:
Exception Do
hLog.AddException(E,'
Function GetTSSpeaker', []);
end;
end;
Hier der TimerCode
Delphi-Quellcode:
procedure TForm1.Timer3Timer(Sender: TObject);
var TSSpeaker : string;
i : integer;
begin
TSSpeaker := GetTSSpeaker;
end;
Delphi-Quellcode:
type Player_ = record
ID : integer;
Name : string;
end;
var Player : array of player_;
Ich danke schonmal für eure Hilfe