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 = '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;
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]