type
IntegerStringrecord = record
msgType: Byte;
Len: Word;
int:integer;
msg:array[0..0] of Char;
end;
ich hab nur einfach versucht mit
type
Plainrecord = record
msgtype:byte;
end;
an das erste byte zu kommen, nur ist danach alles wuschelig und nix klappt mehr..
Also zuerst mit receivebuf versucht die Nachricht in ein anderes Record(plainrecord) zu "pressen", aber dafür ist danach das zweite receivebuf dann total falsch mit dem richtigen record(integerrecord)
Die einzige andere Methode die mir noch einfällt wäre da ein reines msgtype paket zu schicken und danach erst das eigentliche Paket.. wäre nur extrem blöd wenn das so aussehen sollte:
paket1: msgtype
paket2: string
paket3: msgtype
paket4: integer
und nun das draus wird wegen verzögerung oder keine ahnung:
paket1:msgtype
paket2:msgtype
paket3:string
paket4:integer
oder wenn ein packet nicht ankommt:
paket1:msgtype
paket2:string
paket3:integer
Ich meine ich könnte auch nur den Integerstringrecord nehmen, selbst wenn ich kein integer habe.. das sind dann halt 4 byte zusätzlich verschwendet für nen string, aber das ist eigentlich auch net so schlimm. Natürlich auch blöd wenn ich sagen wir mal ein Datenpaket habe mit 10 Integer Werten dann müsste ich die auch einzeln verschicken... naja wenn ihr net wisst wie man am das am besten macht, dann sagt mir wenigstens ob solche Verzögerungen, dass pakete in der falschen reihenfolge ankommen überhaupt existieren? Oder dass überhaupt ein Paket gar nicht ankommt...? Weil notfalls kann man immer noch mit try except das ganze abfangen und dann so ne Art bestätigungsnachricht schicken wenn´s geklappt hat..
Oder... das versuch ich jetzt mal.. Die Nachricht in ein Array of Byte zu lesen und dann das x-te Byte auszulesen.. einen Versuch ist es wert..
...
Das Problem liegt an dem ReceiveBuf.. da der zweite Aufruf von ReceiveBuf nur noch Müll ausspuckt.. die einzige Möglichkeit wäre es, das Array of Byte einzulesen und dann in das passende Record umzuwandeln.. aber wie?