Forum: Object-Pascal / Delphi-Language
Delphi
by Der schöne Günther,
25. Feb 2020
Wenn du dir sicher bist dass es ein Big/Little-Endian Problem ist:
Ich habe in der Delphi-Standard-Bibliothek komischerweise nie etwas gefunden wie man die Endianess von Dingen wie z.B. einem Word ändern kann. Ich habe es dann ganz billig von Hand gemacht. Hier ein Beispiel:
https://gist.github.com/JensMertelmeyer/5987a6430d8da2d0ca1297748f61c91b
Forum: Object-Pascal / Delphi-Language
Delphi
by Der schöne Günther,
24. Feb 2020
In deinem Beispiel ist ReadVar_vonSPS doch ein Byte-Array. Dein OPCServerItemArray scheint ein Array von irgendwas zu sein, und du willst von deinem Byte-Array (oder "Bytefolge") aus die Daten in deinem OPCServerItemArray setzen. Mehr war nicht gemeint 😉
Forum: Object-Pascal / Delphi-Language
Delphi
by Der schöne Günther,
24. Feb 2020
Der Unterschied bei p3() ist im Endeffekt dass die einzelnen Felder zugewiesen werden und nicht alles auf einen Rutsch.
Das ist natürlich schon einmal gut, damit muss der Record z.B. nicht mehr packed sein und man kann sich die Reihenfolge der Felder selbst aussuchen.
Ich würde noch einen Schritt weitergehen:
Ob man die einzelnen Bytes da jetzt mit wilden Zeigerzugriffen, mit...
Forum: Object-Pascal / Delphi-Language
Delphi
by Der schöne Günther,
24. Feb 2020
Also wenn du wirklich eine Struktur (packed record) hast die sich 1:1 auf die Bytes abbilden lässt die du bekommst dann gibt es das schon fertig mit TBitConverter aus System.Types:
uses
System.SysUtils,
System.Types;
type
TAppData = packed record
someInteger: Int32;
someTimestamp: TDateTime;