Thema: Delphi Query an Gameserver

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#43

AW: Query an Gameserver

  Alt 24. Feb 2015, 13: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."
  Mit Zitat antworten Zitat