Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
Delphi 10.2 Tokyo Professional
|
AW: Query an Gameserver
24. Feb 2015, 14:14
Ein kleines Beispiel:
Delphi-Quellcode:
var
mem: TMemoryStream;
intVar, intVarLesen: Integer;
boolVar, boolVarLesen: Boolean;
begin
boolVar := true;
intVar := 123;
mem := TMemoryStream.Create;
try
// Integer schreiben
mem.Write(intVar, SizeOf(Integer));
// Boolean schreiben
mem.Write(boolVar, SizeOf(Boolean));
// Vor dem auslesen den Stream an den Anfang positionieren
mem.Position := 0;
// Daten in gleicher Reihenfolge auslesen wie sie eingelesen wurden
mem.Read(intVarLesen, SizeOf(Integer));
mem.Read(boolVarLesen, SizeOf(Integer));
finally
mem.Free;
end;
end;
Was du wahrscheinlich machen könntest wär sowas wie:
Delphi-Quellcode:
var
PreHeader: Array[0..3] of Byte;
Header: Byte;
Protocol: Byte;
tmpChar: AnsiChar;
ServerName: AnsiString;
begin
mem.SetSize({größe des Antwortpakets});
udp1.ReceiveBuf(mem.Memory^, mem.Size);
mem.Position := 0;
mem.Read(PreHeader[0], SizeOf(PreHeader)); // FF FF FF FF
mem.Read(Header, SizeOf(Byte));
mem.Read(Protocol, SizeOf(Byte));
// Aus folgenden kann/sollte man ne Funktion machen
ServerName:= '';
repeat
mem.Read(tmpChar, SizeOf(AnsiChar));
if (tmpChar <> #0) then
ServerName:= ServerName + tmpChar;
until tmpChar = #0;
// usw..
end;
Michael "Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
|
|
Zitat
|