Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
Delphi 7 Enterprise
|
Re: Indy Record sendeproblem
14. Jan 2008, 22:00
Habe ich mir fast gedacht. Ich wollts noch erwähnen. Um es nochmal zusammenzufassen. Du kannst so nur statische Records senden. Also Records in denen keine Ansistrings und keine dynamischen Arrays drin vorkommen (von Objekten etc. mal abgesehen). Allerdings funktionieren Shortstrings, so wie sie in TSpielerguckanders und TBomberutsch deklariert sind. Teste mal, ob die problemlos rüberkommen!
Das ist, wie gesagt definitiv ein Problem(/Fehler), aber es könnte nicht das einzigste sein.
Wenn du einen string ohne Längenangabe deklarierst ist es eine dynamische Variable. Also während für z.B. string[100] direkt an der Stelle der Variablen (oder des Records) 100+1 Zeichen reserviert werden, wird bei einem dynamischen string immer 4 Bytes reserviert, welche einen Zeiger darstellen, auf einen Spiehcerplatz, wo dann wirklich der String steht (deswegen ist sizeof(TIdentifikationMSG) immer 4 Bytes). Und du kopierst nur diesen Zeiger. Das losschicken des Zeigers ist kein Problem, auch wenn die Information sinnlos ist. nur bei Readbuffer überschreibst du einen String-Zeiger, der damit ungültig wird und irgendwohin zeigt. Das pringt eben einen Fehler. Allerdings verstehe ich nicht, der Fehler dürfte erst beim nächtsen Zugriff auf vuser kommen. Naja, mal probieren.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
|