AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2 Arrays vergleichen\sortieren

Ein Thema von EWeiss · begonnen am 22. Nov 2017 · letzter Beitrag vom 30. Nov 2017
 
EWeiss
(Gast)

n/a Beiträge
 
#33

AW: 2 Arrays vergleichen\sortieren

  Alt 23. Nov 2017, 23:36
Ok das Problem hat sich erledigt.. SortShortTagArray aber noch nicht.
Wer vergleichen will.

Delphi-Quellcode:
function TSkinSpriteContainer.GetObjectOrder(hParent: HWND): Integer;
var
  gP, UB: Integer;
  K, Count: Integer;
  A1, A2: TArray<short>;
  // nur noch 512 Einträge zur Verfügung muss sehen ob ich das Array nicht wieder erhöhe.
  // 512 Objekte auf einer Form sind schnell erreicht.
  buffer: array [0 .. 1023] of Short;
begin

  gP := gPropertyItem(hParent);
  if (gP > -1) then
  begin
    if (g_Prop[gP].ordersize <> 0) then
    begin
      result := gP;
      exit;
    end;
  end;

  UB := High(g_Obj);
  if (UB > 0) then // müsste eigentlich "-1" sein weil das Array in Delphi bei 0 anfängt. (Muss vorher noch prüfen welche Auswirkungen das hat)
  begin
    Count := 0; // hier eigentlich das gleiche -1
    SetLength(A1, UB + 1);
    SetLength(A2, UB + 1);

    for K := 0 to UB do // ist der höchste Array Index deshalb kein "UB - 1"
    begin
      if (g_Obj[K].Handle = hParent) then
      begin
        A1[Count] := (g_Obj[K].order);
        A2[Count] := (K);
        inc(Count);
      end;
    end;
    //ARRAY SORT A1() FOR Count, TAGARRAY A2();
    //SortShortTagArray (A1, A2, nCount); noch nicht fertig

    FillChar(buffer, sizeof(buffer), 0);
    for K := 0 to Count do
      MoveMemory(PByte(@buffer[0]) + K * sizeof(Short), @A2[K], sizeof(Short));

    FillChar(A1, sizeof(A1), 0);
    FillChar(A2, sizeof(A2), 0);

    if (gP < 0) then
    begin
      gP := High(g_Prop) + 1;
      SetLength(g_Prop, gP + 1);
    end;

    g_Prop[gP].Handle := hParent;
    MoveMemory(@g_Prop[gP].Order, @buffer[0], sizeof(buffer));
    g_Prop[gP].Ordersize := Count - 1; // Array beginnt bei 0 alternativ kann ich Count direkt -1 zuweisen
   end;
   Result := gP;
end;
gruss

Geändert von EWeiss (24. Nov 2017 um 03:26 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz