Einzelnen Beitrag anzeigen

SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#12

Re: Runtime Error 217 beim Beenden! Finde keinen Fehler!

  Alt 23. Mär 2009, 19:57
Also beim TS, muss man nicht verbunden sein...

hier mal der Code:

Diese läuft alle 300ms
Delphi-Quellcode:
procedure TForm1.Timer3Timer(Sender: TObject);
var TSSpeaker : string;
    i : integer;
begin
  timer3.Enabled := false;
  TSSpeaker := GetTSSpeaker;

  if TSSpeaker = 'then
    begin
    timer3.Enabled := true;
    exit;
    end;

  for i := 0 to high(Freigabeliste) do
    if (Freigabeliste[i].belegt) and (freigabeliste[i].CallSign = TSSpeaker) then
      begin
      if not timer4.Enabled then
        begin
        LastCalling := TSSpeaker;
        LastCallingIndex := i;
        LastcallingSekunde := 0;
        Timer4.Enabled := true;
        end;

        // Code für Makierung

      end;

  timer3.Enabled := true;

end;
Delphi-Quellcode:

function GetTSSpeaker : string;
Function DisplayResult( Res : Integer ) : Boolean;
Var
  ErrorMessage: array[0..99] 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..99] of TtsrPlayerInfo;
  Records : Integer;
  I : integer;
begin
  result := true;
  Records := 100;
  DisplayResult(tsrGetPlayers(@playersInfo, @records) );

    for I := 0 to Records - 1 do
      begin
      PLayer[i].id := PlayersInfo[i].PlayerID;
      Player[i].Name := PlayersInfo[i].NickName;
      end;
    result := true;

end;

function DoGetSpeakers : string;
var
  IDs : Array[0..99] of Integer;
  Records : Integer;
  I , u: integer;
  PlayersInfo : Array[0..99] of TtsrPlayerInfo;
  ID : integer;
begin
  result := '';
  Records := 100;
  try
  //hier kommt der fehler
  DisplayResult(tsrGetSpeakers(@playersInfo, @records) );
  //if Records > 0 then ;
  for I := 0 to Records - 1 do
    for u := 0 to high(Player) do
      if Player[u].id = PlayersInfo[i].PlayerID then
        begin
        result := player[u].Name;
        break;
        end;


    except
    exit;
    end;
end;

begin
  result := '';
  if DOGetPlayers then
    try
    result := DogetSpeakers;
      except
        On E:Exception Do
        //hLog.AddException(E,'Function GetTSSpeaker', []);
        end;
end;

Sollte man nicht mit TeamSpeak verbunden sein, so passiert hier nix mit dem Code, also muss ich mich auch nicht mit dem TS disconnecten beim Beenden!
Marco Tröger
  Mit Zitat antworten Zitat