Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Array aus Record löschen (https://www.delphipraxis.net/192825-array-aus-record-loeschen.html)

EWeiss 22. Mai 2017 19:16

AW: Array aus Record löschen
 
Kleine Anschluss frage

Delphi-Quellcode:
procedure Delete(var SrcArray: TArray<TSprite>; Index: Integer);
var
  I: Integer;
begin

  for I := (Index + 1) to (Length(SrcArray) - 1) do
    SrcArray[I- 1] := SrcArray[I];

  Setlength(SrcArray, length(SrcArray) - 1);
end;
Ist das schnell genug oder sollte ich hier das Array mit Move verschieben ?

gruss

himitsu 22. Mai 2017 19:18

AW: Array aus Record löschen
 
Da ja keine Delphi-Verison angeeben wurde ....


Delphi kann inzwischen auch endlich Insert/Delete für dynamische Arrays (k.A. warum das so viele Jahre gedauert hat)
und es hat eine nette statische Klasse TArray in System.Generics.Collections .


Move ... nur wenn du weißt was du machst und dabei nicht z.B. eine Speicherverwaltung/Referenzzählung der Felder zerschrottest.

EWeiss 22. Mai 2017 19:19

AW: Array aus Record löschen
 
Zitat:

Zitat von himitsu (Beitrag 1372410)
Da ja keine Delphi-Verison angeeben wurde ....


Delphi kann inzwischen auch endlich Insert/Delete für dynamische Arrays (k.A. warum das so viele Jahre gedauert hat)
und es hat eine nette statische Klasse TArray in System.Generics.Collections .

D2010.. Ja muss das in mein Profil wieder addieren.
Sorry!

Ok denke mal dann ist das so in Ordnung mehr als 200 Icons(Verknüpfungen liegen eh nicht auf dem Desktop)
Und es ist auch nur eine Sicherheitsmaßnahme damit ich kein leeres Icon auf der Bar zu sehen bekomme.
Delphi-Quellcode:
  // Prüfen ob wir einige der Verknüpfungen deaktivieren (verstecken) müssen.
  for K := High(gs) downto ID_FIRST do //ID_FIRST = 6 erster Icon Eintrag im Array 0 > 6 reserviert für die Grafische Oberfläche
  begin
    if gS[K].h_Bitmap = 0 then
    begin
      Delete(gs, K);
      dec(Count);
      if gp.RecycleBin = K then
        gp.RecycleBin := 0;
    end;

    //Das RecycleBin-Array entsprechend ändern
    if gp.RecycleBin > Count then
      gp.RecycleBin := Count;
  end;
gruss

SneakyBagels 22. Mai 2017 19:34

AW: Array aus Record löschen
 
Zitat:

Delphi kann inzwischen auch endlich Insert/Delete für dynamische Arrays (k.A. warum das so viele Jahre gedauert hat)
und es hat eine nette statische Klasse TArray in System.Generics.Collections .
Darf man fragen wo man das findet?

EWeiss 22. Mai 2017 19:37

AW: Array aus Record löschen
 
Zitat:

Zitat von SneakyBagels (Beitrag 1372416)
Zitat:

Delphi kann inzwischen auch endlich Insert/Delete für dynamische Arrays (k.A. warum das so viele Jahre gedauert hat)
und es hat eine nette statische Klasse TArray in System.Generics.Collections .
Darf man fragen wo man das findet?

Ich denke mal wenn du die uses Generics hinzufügst.

gruss

SneakyBagels 22. Mai 2017 19:38

AW: Array aus Record löschen
 
Leider nicht fündig geworden. Ich finde nur Sort aber weder Delete noch Insert.

EWeiss 22. Mai 2017 19:40

AW: Array aus Record löschen
 
Zitat:

Zitat von SneakyBagels (Beitrag 1372418)
Leider nicht fündig geworden. Ich finde nur Sort aber weder Delete noch Insert.

Ist wohl abhängig von der Delphi Version die du verwendest.

gruss

himitsu 22. Mai 2017 19:55

AW: Array aus Record löschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anhang 47409
Alt und "Neu".

Delphi-Quellcode:
B := Copy(A)
oder
Delphi-Quellcode:
B := Copy(A, 1, 3)
geht ja auch schon längere Zeit ... nur Delete und Insert fehlte halt.



Weiß nicht genau seit wann es mit DynArrays geht, aber seit XE7 kann man noch ganz andere Dinge, wie "string like"-Operationen ala
Delphi-Quellcode:
var A, B, C: array of Byte; // TArray<Byte> oder TBytes

A := B + C;

A := [1, 2, 3];
A := B + [1, 2, 3];

SneakyBagels 22. Mai 2017 20:01

AW: Array aus Record löschen
 
Delete, Insert, Copy für dynamische Arrays. Vereinfacht mein Leben bestimmt sehr in Zukunft. Danke für den Tipp :thumb:

EWeiss 22. Mai 2017 20:20

AW: Array aus Record löschen
 
Zitat:

Zitat von SneakyBagels (Beitrag 1372425)
Delete, Insert, Copy für dynamische Arrays. Vereinfacht mein Leben bestimmt sehr in Zukunft. Danke für den Tipp :thumb:

Bestimmt..
Die Frage nur ob das sinnvoll ist für einen einzigen Aufruf die Generics mit einzubinden.
Das bauscht den Code wieder um einige KB auf. (Wäre in meinem Fall also unnötig)

Wenn man viel mit Arrays unterwegs ist. Warum nicht!
Dann wird sich das lohnen.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
Seite 2 von 3     12 3      

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 by Thomas Breitkreuz