Ich wette du bekommst das
falsche WriteBuffer, denn es gibt eines mit TBytes und eines mit Pointer/VAR-Parameter.
Aber das hätte dir auch der Debugger verraten, wenn du ihn gefragt hättest.
Da TidBytes und TBytes seit vielen Jahren immernoch nicht kompatibel/"identisch" sind, wird also nicht die gewünschte Version mit TBytes verwendet.
* deine Variable nach TBytes casten
* oder als Pointer übergeben (der Anfang des Arrays, also das erste Feld)
Delphi-Quellcode:
Data.WriteBuffer(dm1.FGlobalBuffer[0], Length(dm1.FGlobalBuffer)); // bei Funktionen mit typlosem "var Data"
oder
Data.WriteBuffer(@dm1.FGlobalBuffer[0], Length(dm1.FGlobalBuffer)); // bei Funktionen mit Pointer als Data-Parameter