-
Forum: Netzwerke
Delphi
by Sir Rufo,
28. Feb 2015
Jeder wie er will von Spaghetticode bis ordentlich strukturiert. Irgendwo dazwischen sortiert man sich ein. Wo siehst du dich da (rhetorische Frage, es reicht wenn du dir die selber beantwortest).
-
Forum: Netzwerke
Delphi
by Sir Rufo,
26. Feb 2015
Das die Daten vertauscht sind steht doch lang und breit in der Dokumentation:
Anyway, mit viel probieren bekommt man ja auch was heraus ... ok, Lesen geht manchmal schneller. Auch wenn man nicht versteht was network ordered ist, sollte der Hinweis which is unlike every other Steam protocol auf jeden Fall hellhörig machen. Da ist was anders als sonst (genau das steht da).
Da ich mir dieses...
-
Forum: Netzwerke
Delphi
by Sir Rufo,
26. Feb 2015
Den PHP-Code kann man nur dann richtig interpretieren, wenn man weiß, wie dieser Ausdruck denn abgearbeitet wird.
$a5 = ord(fread($socket,1))*256 + ord(fread($socket,1));.
Ist die Ausführungs-Reihenfolge von rechts nach links, dann wird zuerst ord(fread($socket,1)) und dann ord(fread($socket,1))*256 ausgeführt. ;)
-
Forum: Netzwerke
Delphi
by Sir Rufo,
26. Feb 2015
Wen interessiert es hier, was ein "unsigned short" von C übersetzt nach Delphi bedeutet?
Es interessiert doch ausschliesslich was der "unsigned short" in der Schnittstelle bedeutet. Es ist ein 16bit Wert (little endian) und den kann man einfach so in ein Word oder auch UInt16 einlesen.
-
Forum: Netzwerke
Delphi
by Sir Rufo,
25. Feb 2015
Was wollen einem wohl diese Worte sagen:
und dann noch (weil die Frage bestimmt auch noch kommt)
Das erste Zitat veranlasst uns zu folgendem Konstrukt
TServerAddressBlock = record
First: Byte; // Byte
Second: Byte; // Byte
Third: Byte; // Byte
-
Forum: Netzwerke
Delphi
by Sir Rufo,
24. Feb 2015
Nein, was es ist ist eindeutig von Valve festgelegt: 16 bit signed integer
Was du daraus interpretierst ist und bleibt deine Sache. Du kannst ja auch die ID als HEX-Wert ausgeben, oder daraus ein Bild erzeugen, oder oder oder.
Es ist einfach eine eindeutige ID und das wichtigste ist, dass beim Austausch mit dem Rest der Welt, die korrekte Bytefolge zu dieser ID wieder zurückgegeben wird.
...
-
Forum: Netzwerke
Delphi
by Sir Rufo,
24. Feb 2015
Ich habe jetzt mal den Beispiel-Response komplett aufgedröselt (Markdown-Format)
## A2S_INFO RESPONSE
### Example response for :
<pre>
FF FF FF FF 49 02 67 61 6D 65 32 78 73 2E 63 6F ÿÿÿÿI.game2xs.co
6D 20 43 6F 75 6E 74 65 72 2D 53 74 72 69 6B 65 m Counter-Strike
20 53 6F 75 72 63 65 20 23 31 00 64 65 5F 64 75 Source #1.de_du
-
Forum: Netzwerke
Delphi
by Sir Rufo,
24. Feb 2015
Und da sieht man doch schon, dass du immer noch nicht richtig in die Doku geschaut hast.
Wenn der Wert vom Typ BYTE ist, dann hat es da nur 1 (in Worten ein) Byte.
Data|Type|Description|Byte-Länge|HEX|Erwartet
Header|byte|8 bit character or unsigned integer|1|49|I
Protocol|byte|8 bit character or unsigned integer|1|11|17
Name|string|variable-length byte field, encoded in UTF-8, terminated...
-
Forum: Netzwerke
Delphi
by Sir Rufo,
24. Feb 2015
Also dieses ganz Rätselraten durch das falsche Zuordnen der einzelnen Bytes ist ja nicht zum Aushalten.
Nimm Papier und Bleistift zu Hand und mach dir mal eine Tabelle mit dem Satzaufbau (Name, Typ, Anzahl der Bytes, Bytes) und trage dann die empfangenen Bytes dort nach den vorgegebenen Regeln ein.
So wie ich die Dokumentation lese und verstehe gibt es da nichts mit einem Passwort Feld....
-
Forum: Netzwerke
Delphi
by Sir Rufo,
22. Feb 2015
Bist du dir auch sicher, dass auch wirklich $8A84 bedeuten oder evtl. eher $848A?
In der Valve-Dokumentation wird ganz eindeutig von All types are little endian gesprochen, was wiederum bedeutet, dass du dir diese Seite anschauen solltest
http://de.wikipedia.org/wiki/Byte-Reihenfolge#Little-Endian-Format
und dann bedeutet diese Bytefolge eben genau $848A entspricht was dezimal dann...
-
Forum: Netzwerke
Delphi
by Sir Rufo,
22. Feb 2015
Es ist erheblich einfacher als du denkst, aber du musst eben etwas umdenken :)
Zunächst einmal schaust du dir die Datentypen an, die Valve da vorgibt und suchst dir die passenden Delphi-Typen dazu heraus
http://docwiki.embarcadero.com/RADStudio/XE7/de/Interne_Datenformate#Der_Typ_Single
Dann könnte man das hier bauen
type
TValveByte = Byte; {8 bit character or unsigned...
-
Forum: Netzwerke
Delphi
by Sir Rufo,
22. Feb 2015
Du willst dir anscheinend nicht die Dokumentation von Valve durchlesen. Dass ist natürlich fatal und daher gebe ich dir nur noch einmal den Rat, dieses dringend nachzuholen.
Ganz oben steht da nämlich die Definition der Data Types
Name|Description|Byte-Länge
byte|8 bit character or unsigned integer|1 Byte
short|16 bit signed integer|2 Byte
long|32 bit signed integer|4 Byte
float|32 bit...
-
Forum: Netzwerke
Delphi
by Sir Rufo,
18. Feb 2015
Im Prinzip ist es ganz einfach (wenn man sich die Daten genau anschaut).
Dann fällt auf, dass jeder String mit einem 00 Byte abgeschlossen ist.
Wie ich denn darauf komme?
A2S_INFO
Header: byte
Payload: string
-
Forum: Netzwerke
Delphi
by Sir Rufo,
18. Feb 2015
Da diese Daten ohne Kontext eben rein philosophisch sind, welche Antwort hast du dann erwartet? Der Begriff Kontext sollte allerdings auch Nicht-Philosophen und Nicht-Programmieren bekannt sein.
Man kann es so nicht beantworten und einen Codeschnipsel kann es dann logischerweise auch nicht geben.
Aha, da ist ja das fehlende Puzzleteil ;)
-
Forum: Netzwerke
Delphi
by Sir Rufo,
18. Feb 2015
Zum besseren Verständnis mal ein Beispiel:
Du fragst eine API von mir ab und bekommst als Rückgabe ein Byte mit dem Dezimalwert 42.
Was bedeutet das? Erstmal gar nichts.
In einem Text-Control dargestellt siehst du ein *.
Ohne weiteres Wissen über den Kontext weisst du nur, dass ich dir ein Byte geliefert habe, was nun alles mögliche bedeuten kann.
Es kann tatsächlich bedeuten, dass...
-
Forum: Netzwerke
Delphi
by Sir Rufo,
18. Feb 2015
Was hast du denn für eine Ausgabe erwartet?
Du bekommst dort eine Bytefolge, die du natürlich entsprechend entschlüsseln musst. An irgendeiner Stelle werden diese Informationen stehen. Dazu muss man aber den Kontext (Struktur/Aufbau) kennen. Ohne diesen Kontext wirst du das niemals (nur sehr schwer) herausfinden.
Stell dir vor, die senden dir als Wert 42 um mit auszudrücken, dass der Server...