Also warum funktioniert es unter C++ und nicht mit Delphi.
Es funktioniert bei beiden. Delphi Syntax ist anders und in Delphi ist (standardmäßig) Pointerarithmetik nicht erlaubt weswegen du die Berechnung der Adresse als Integer machen musst und das Ergebnis dann auf Pointer castest.
MoveMemory ist wie gesagt eine Windows
API und die KANN in Delphi nicht anders funktionieren als in C++.
Code:
MoveMemory(&buffer[0] + K * sizeof(short) , &A2[K], sizeof(short));
=
MoveMemory(Pointer(NativeUInt(@buffer[0]) + K * sizeof(Short)), @A2[K], sizeof(Short));
Edit: Soviel zu meinem Punkt "Der C++ Code ist unnötig kompliziert" (zumindest auf Delphi übertragen):
MoveMemory(@buffer[K * sizeof(Short)], @A2[K], sizeof(Short));
geht auch.
Es hilft halt, wenn man den Code den man überträgt auch versteht
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."