Zitat:
Dort versuchst du auch einen Pointer und einen Integer zu addieren.
Das ist richtig was du sagst.
Nur..
Das tue ich auch unter c++ da gibt es keine Probleme bei der gleichen Übergabe.
Letztendlich verwenden beide sprachen die gleiche
API darauf wollte ich hinaus.
Um so mehr ich mit C++ Arbeite
um so mehr stelle ich fest wie verkorkst die Sprache Delphi(Compiler) eigentlich ist.
Was ist an MoveMemory in Delphi anders als in C++ eigentlich nichts.
MoveMemory(Pointer(NativeUInt(@buffer[0])) + K * sizeof(Short), @A2[K], sizeof(Short));
Das gleiche Problem.
MoveMemory(PByte(@buffer[0]) + K * sizeof(Short), @A2[K], sizeof(Short));
Lässt sich kompilieren aber ob es richtig ist bzw.. die Daten korrekt verarbeitet werden ist mir nicht ersichtlich.
Damit steht bzw. fällt das Projekt.
Delphi-Quellcode:
procedure TSkinSpriteContainer.gDrawZorderObjects(WinHandle: HWND; hDCdest: HDC;
InPrintMode: Integer);
var
K, Item, gP: Integer;
begin
Item := 0;
// Draw objects with respect of the z-order
gP := GetObjectOrder(WinHandle);
if (gP > -1) then
begin
for K := 0 to g_Prop[gP].Ordersize do
begin
MoveMemory(@Item, g_Prop[gP].order + K * sizeof(short), sizeof(short)); // Das Item hier müsste inkrementiert werden geht aber nicht.
// Draw only visible objects
if (g_Obj[Item].Visible) then
GI_DrawObject(hDCdest, g_Obj[Item], InPrintMode);
end;
end;
end;
gruss