AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rcon - Antwort

Ein Thema von schmitzlipp · begonnen am 25. Nov 2007 · letzter Beitrag vom 25. Nov 2007
Antwort Antwort
schmitzlipp

Registriert seit: 6. Nov 2005
9 Beiträge
 
#1

Rcon - Antwort

  Alt 25. Nov 2007, 15:26
Hi,
ich hab mich schon ne Weile zu meinem Problem hier umgesehen, jedoch ohne Erfolg.

Ich will mit meinem Programm Befehle an einen Spiele-Server per Rcon schicken und die Antworten des Servers dann mit meinem Programm auswerten. Ich schicke dabei die Befehle mit der IndyUdpClient-Komponente und empfange die Antworten ebenfalls damit:
Delphi-Quellcode:
...
var Part: string;
...
Form1.IdUDPClient1.Send(('ÿÿÿÿrcon ' + password + ' ' + command));
...
Part := Form1.IdUDPClient1.ReceiveString();
...
Das Problem besteht darin, dass die komplette Antwort aus einem einzigen String besteht, dessen Zeilen durch Leerzeilen (ich glaube 'chr(13)') getrennt sind und ich die Antwort nur zeilenweise verarbeiten kann. Ich weis nur nicht wie ich den String zerteilen soll. Mit der Delimiter-Funktion und der Explode-Funktion aus der Code-Library hatte ich keinen Erfolg, da die erstere auch bei Leerzeichen trennt und die andere den gesamten String in den Array-Index 0 gepackt hat.
Wäre echt geil, wenn jemand eine konstruktive Idee liefern würde.
Die Welt hat sich weiter gedreht !!
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Rcon - Antwort

  Alt 25. Nov 2007, 15:32
Könntest du uns dann vielleicht einen solchen String geben, damit wir sehen können, wie der denn aussieht. Bei undruckbaren Zeichen, könntest du dann auch vielleicht den ASCII Code angeben.

Vielleicht können wir dir dann helfen, weil wir die Kristallkugel schon vor einiger Zeit kaputt gemacht haben.
Frederic H.
  Mit Zitat antworten Zitat
schmitzlipp

Registriert seit: 6. Nov 2005
9 Beiträge
 
#3

Re: Rcon - Antwort

  Alt 25. Nov 2007, 15:47
-PLAYER INFORMATION
slot: 1
team: ALLIES
name changes: 0
-USER INFORMATION
name: [BOT]Vic
level: 0 (No0b)
GUID: omnibot0100000000000000000000000 (USERID: 00000000)
IP: localhost
MAC:
timestamp: 11/25/07 15:33:40
greet-text: none
greet-audio: none
private-ACL: none

Mit dem ASCII-Code bin ich mir eben nicht sicher. Ich weis nicht genau, ob die Leerzeilen dem ASCII-Code 13 entsprechen.
Wenn ich mir Part mit showmessage ansehe, wird es wie oben abgebildet.
Die Welt hat sich weiter gedreht !!
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Rcon - Antwort

  Alt 25. Nov 2007, 16:18
eine StringList mit delimitter müsste gehen...

schau mal was hier rauskommt:
Delphi-Quellcode:
var
  List: TStringList;
  Antwort: String;
begin
  List := TStringList.Create;
  Antwort := 'Hallo'#13'das'#13'ist'#13'ein'#13'Test';
  List.DelimitedText := Antwort;
  showmessage(List[0]);
  FreeAndNil(List);
end;
Da wo 'Hallo'#13... steht kommt dein empfangener String hin.

Und wenn das immernochnicht funktioniert denn setze auf die Zeile DelimitedText := Antwort einen Breakpoint, wenn er dann dort anhält drückst du STRG + F7 und gibst bei Ausdruck: Antwort ein und drückst Enter und diesen String postest du mal hier.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Rcon - Antwort

  Alt 25. Nov 2007, 16:23
Wir hatten vor einiger Zeit schon mal ein Thema über TStrings.Delimiter. In neuen Delphi-Versionen gibt es die Eigenschaft StrictDelimiter, wenn du die auf true setzt, sollte die Trennung funktionieren.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
schmitzlipp

Registriert seit: 6. Nov 2005
9 Beiträge
 
#6

Re: Rcon - Antwort

  Alt 25. Nov 2007, 16:29
ich glaube dei deinem Vorschlag fehlt noch die Festlegung nach welchem Zeichen der Delimiter trennen soll.
Außerdem wird mein String jetzt auch bei Leerzeichen getrennt. Er soll aber nach Zeilenumbrüchen (hab vorhin fälschlicherweise Leerzeilen geschrieben) trennen.

Ab welcher Version geht das mit strictdelimiter und wie genau lege ich das fest? Einfach strictdelimiter := true?

Ok Frage schon beantwortet: Erst ab Delphi 2006 und ich benutz die 2005!
Gibts da irgendwie ne andere möglichkeit?
Die Welt hat sich weiter gedreht !!
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Rcon - Antwort

  Alt 25. Nov 2007, 16:43
es würde so gehen:
Delphi-Quellcode:
var
  List: TStringList;
  Antwort: String;
begin
  List := TStringList.Create;
  Antwort := 'Hallo das ist'#13'ein'#13'Test';
  List.Delimiter := #13;
  List.StrictDelimiter := True;
  List.DelimitedText := Antwort;
  showmessage(List[0]);
  FreeAndNil(List);
end;
ansonsten versuch mal das:
Delphi-Quellcode:
var
  List: TStringList;
  Antwort: String;
begin
  List := TStringList.Create;
  Antwort := 'Hallo das ist'#13'ein'#13'Test';
  List.Text := Antwort;
  showmessage(List[0]);
  FreeAndNil(List);
end;
edit: [ quote]-Tag mit [ delphi]-Tag vertauscht...
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
schmitzlipp

Registriert seit: 6. Nov 2005
9 Beiträge
 
#8

Re: Rcon - Antwort

  Alt 25. Nov 2007, 16:48
Also die obere Methode geht nich, weil ich die Property StrictDelimiter nicht verwenden kann
und bei der unteren Möglichkeit wird auch nach Leerzeichen getrennt, also Wort für Wort. Ich brauche aber Zeile für Zeile.

Stimmt nich: Nach der Zeiten Method kommt eine Exeption. Was soll der denn bei List.Text := Antwort; machen?
Die Welt hat sich weiter gedreht !!
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Rcon - Antwort

  Alt 25. Nov 2007, 16:53
Zitat von schmitzlipp:
Also die obere Methode geht nich, weil ich die Property StrictDelimiter nicht verwenden kann
und bei der unteren Möglichkeit wird auch nach Leerzeichen getrennt, also Wort für Wort. Ich brauche aber Zeile für Zeile.
Bei mir gehts -.-
Sicher das du auch List.Text eingegeben hast und nicht List.DelimitedText?
Ansonsten kannst du mit Hier im Forum suchencopy arbeiten oder die Leerzeichen ersetzen und dann mit DelimitedText...
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
schmitzlipp

Registriert seit: 6. Nov 2005
9 Beiträge
 
#10

Re: Rcon - Antwort

  Alt 25. Nov 2007, 16:57
Der stürzt mit dieser Meldung ab:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt etadwin1.exe ist eine Exception der Klasse EStringListError mit der Meldung 'Listenindex überschreitet das Maximum (2)' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

Ich weis nicht, was der mit MAximum will. Ich hab doch nirgendwo ein Maximum festgelegt.

Fuck, bin ich blöd!!
Das Maximum bezog sich auf meine Abfrage: showmessage(InputList[2]);
Es gab aber nur eine Zeile, darum kam die Exeption. Jedenfalls funzt dein Lösungsansatz bestens. Hätt nicht gedacht, dass das so einfach geht.
Thx an alle, die mir geholfen haben und besonders an dominikkv!!!!!!!!!!!!!!!!
Die Welt hat sich weiter gedreht !!
  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 06:13 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