AGB  ·  Datenschutz  ·  Impressum  







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

TArray welches TPair<> enthält sortieren

Ein Thema von TurboMagic · begonnen am 26. Sep 2022 · letzter Beitrag vom 27. Sep 2022
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.398 Beiträge
 
Delphi 12 Athens
 
#5

AW: TArray welches TPair<> enthält sortieren

  Alt 27. Sep 2022, 08:59
Nicht nur das. Es sind zwei verschiedene Typen.

System.Generics.Collections: TArray = class mit den Klassenmethoden<T>
System: TArray<T> = array of T; ohne irgendwas (Gut, ein Sortierungscode in System ist vielleicht zuviel, aber dann eben den Typen einfach in eine andere Unit, als TSortedArray<T> TManagedArray<T> mit Find/Exists/Sort/Pop/Push/Shift/Move/...)

Einen ClassHelper RecordHelper für Arrays funktioniert inzwischen,
aber nicht in der generischen Variante.
Delphi-Quellcode:
type
  TArrayHelper<T> = record helper for TArray<T> // [dcc32 Fehler] E2508 Typparameter sind bei diesem Typ nicht erlaubt
    procedure Sort;
  end;
Und das kompiliert zwar, geht aber auf den falschen Typen.
Delphi-Quellcode:
  TArrayHelper = class helper for TArray
    procedure Sort<T>;
  end;
Wenn du sowas haben willst, mußt du es also selber implementieren, für jeden einzelnen Typen.
Delphi-Quellcode:
type
  TByteArrayHelper = record helper for TArray<Byte>
    procedure Sort;
  end;

var
  A: TArray<Byte>;
begin
  A.Sort;
Und die Klassenvervollständigung kannst du auch vergessen, weil sie immernoch beim < abraucht.

Bestimmt kann man noch durch Vererbung oder einen Dummyklasse bissl gemeinsamen Code zentralisieren
und es über ein Code-LiveTemplate bereitstellen.



[add]
Oder ein Record, der sich wie ein Array verhält.

Wenn du noch bis zum Wochenende warten kannst ... ich bastle mir eh grade was, da das threadsave von Emba garnicht wirklich threadsave ist (seit jahren ignorierte Bugs und ich hab einen Anwendungsfall, wo sekündlich mehrere hundert Aktionen sicher nötig wären)
und das sonst passendende zwar ginge, aber von Haus aus nicht als thradsave implementiert ist.

(das was ich weglassen wollte, weil für mich nicht nicht nötig, wäre nicht der große Mehraufwand)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Sep 2022 um 09:34 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 03:59 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