Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#23

AW: 2 Arrays vergleichen\sortieren

  Alt 23. Nov 2017, 16:25
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

Geändert von EWeiss (23. Nov 2017 um 17:23 Uhr)
  Mit Zitat antworten Zitat