Forum: Programmieren allgemein
by Zacherl,
27. Mär 2016
Seltsam, bei mir war das wohl scheinbar standardmäßig immer an.
var
S: String;
begin
SetLength(S, 42);
CopyMemory(@S, Pointer(Cardinal(Buffer) + Offset), 42);
Forum: Programmieren allgemein
by Zacherl,
27. Mär 2016
Nicht machen :mrgreen: Wenn man plattformunabhängig bleiben will, sollte man auf jeden Fall mit PByte() casten. NativeUInt sollte auch funktionieren, aber die PByte Variante ist empfohlen.
Probiers mal mit Result := PInteger(PByte(aRcvdBuf) + (aRcvdSize - 4))^
Forum: Programmieren allgemein
by Zacherl,
27. Mär 2016
PChar nimmt er ja nur als Buffer. Ist relativ weit verbreitet diese Vorgehensweise .. wobei ich persönlich hierfür auch eher ein untypisiertes Pointer bevorzuge.
Forum: Programmieren allgemein
by Zacherl,
27. Mär 2016
PInteger(PByte(RcvdHeader) + 24)^
Endian-ess umwandeln kannst du danach mit einer der hier vorgeschlagenen Lösungen machen:
http://stackoverflow.com/questions/3065335/how-to-convert-big-endian-numbers-to-native-numbers-delphi