AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Internet / LAN / ASP.NET Delphi TeamSpeak-Playerliste über Telnet auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

TeamSpeak-Playerliste über Telnet auslesen

Ein Thema von BlackHawk2006 · begonnen am 1. Jul 2006
Antwort Antwort
BlackHawk2006

Registriert seit: 1. Jul 2006
Ort: Schwanewede
3 Beiträge
 
#1

TeamSpeak-Playerliste über Telnet auslesen

  Alt 1. Jul 2006, 12:21
Moin, moin!

Ich habe vor kurzem eine (meiner Meinung nach gute) Methode gefunden die Playerliste aus dem Telnet sauber in einem TValueListEditor darzustellen!!!

Was ihr braucht:
- Indy 9
- 1x TValueListEditor (Den nennt ihr "Liste")
- 1x TIdTCPClient (Den nennt ihr "TS")
- 1x TXPManifest (Nur damit's besser aussieht)
- 1x TListBox (Die nennt ihr "Log")
- 2x TButton

Dann kannst ja losgehen!
Nachdem ihr die Komponenten so genannt habt, wie oben vergeschrieben, fangen wir mit dem Verbinden an...

Hierzu habe ich den ersten Button (OnClick) verwendet:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TS do
  begin
    Host := '192.168.1.1'; // Server IP
    Port := 51234; // Query/TCP Port (Nicht UDP)
    Connect();
    Log.Items.Add(ReadLn()); // [TS] abfrage
    WriteLn('sel 8767'); // Server wählen (mit UDP Port)
    Log.Items.Add(ReadLn()); // Port abfrage
  end;
end;
Die "with .. do" Schleife habe ich nur gewählt damit das ganze einfacher ist.
Host, Port, und UDP müsst ihr selbst angeben!

OK, jetzt wird's hart, nun kommt die Auslese der Playerliste!!!
Wer es nicht versteht, darf natürlich gerne Fragen.
Hier kommt der 2. Button ins Spiel:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Ende: Boolean;
    Antwort, Playername, Playerid, Antwort2: String;
    Count, i, a: Integer;
begin
  Ende := false;
  TS.WriteLn('pl');
  repeat
    Antwort := TS.ReadLn; // Telnet auslesen
    Antwort2 := Antwort; // Backup machen
    if Antwort = 'OKthen Ende := true;
    // Playername auslesen
    for i := 0 to Length(Antwort2) do
    begin
      if Antwort2[i] = '"then
        Inc(Count);
      if Count = 3 then
        break;
    end;
    for i := i+1 to Length(Antwort2) do
    begin
      if Antwort2[i] <> '"then
        Playername := Playername+Antwort2[i]
      else
        break;
    end;
    // Player ID auslesen
    for a := 1 to 10 do
    begin
      if Antwort2[a] = '   then
        break
      else
        Playerid := Playerid+Antwort[a];
    end;
    Liste.InsertRow(Playerid,Playername,true); // Werte schreiben
    Playername := ''; // Variablen resetten
    Playerid := '';
    Count := 0;
  until Ende; // So lange bis Ende := true ist
  Liste.DeleteRow(1); // 1. Zeile löschen
end;
Hier spare ich mir erläuterungen, weil es einfach zu viel Code ist, postet einfach eure Fragen,
ich werde sie natürlich beantworten!!!

Das Projekt geschrieben mit Delphi 2005 Architect findet ihr im Anhang...


MFG
BlackHawk2k6

[edit=Chakotay1308]Titel geändert. Mfg, Chakotay1308[/edit]
Angehängte Dateien
Dateityp: zip ts-tool_530.zip (7,8 KB, 139x aufgerufen)
if Copy_Paste.Unmöglich then
begin
Programmierer.Hilflos := true;
end;
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz