![]() |
TeamSpeak-Playerliste über Telnet auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Die "with .. do" Schleife habe ich nur gewählt damit das ganze einfacher ist.
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; 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:
Hier spare ich mir erläuterungen, weil es einfach zu viel Code ist, postet einfach eure Fragen,
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 = 'OK' then 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; 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] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz