AGB  ·  Datenschutz  ·  Impressum  







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

System.Delete und dynamische Arrays

Ein Thema von Bbommel · begonnen am 7. Okt 2025 · letzter Beitrag vom 9. Okt 2025
Antwort Antwort
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
680 Beiträge
 
Delphi 12 Athens
 
#1

System.Delete und dynamische Arrays

  Alt 7. Okt 2025, 15:35
Delphi-Version: 12 Athens
Hi alle,

ich brauche mal euer Schwarmwissen, weil ich mich gerade über mich selber bzw. über alten Code von mir wundere. Ich habe seit sehr, sehr vielen Jahren eine olle Funktion "RemoveFromRealArray", die genau das macht, was sie sagt: Löscht aus einem Array von Real-Werten einen per Index angegebenen Eintrag. Damals habe ich da irgendwas mit "Move" gemacht, um die Elemente eins nach vorne zu schieben. Stand bestimmt so irgendwo im Netz oder hier in der DP - und ist ja auch kein Hexenwerk und funktioniert.

Jetzt wollte ich nach längerer Zeit mal wieder was aus einem Array von einem anderen Typ löschen (meistens arbeiten wir bei uns im Code mit Listen oder anderen Strukturen) und habe mich gewundert, dass es für diese Standardaufgabe nix fertiges gibt. Gibt ja auch mittlerweile TArray und so.

Letztlich bin ich dann ganz einfach bei System.Delete gelandet und wundere mich, warum ich da früher was eigenes für gebastelt habe. Mein alter Code muss so von 2008 oder 2009 sein (damals hatten wir leider noch kein Repository, insofern kann ich nicht nachgucken). Konnte System.Delete damals noch kein Array? Oder gab und gibt es gute Gründe, es anders zu machen? Oder hab ich das damals einfach nur übersehen und es erst jetzt, 16-17 Jahre später bemerkt?

Vielleicht kann ja jemand etwas Licht ins Dunkel bringen. Vielleicht hat ja jemand D2007 und kann mal schauen, ob das dort auch schon ging.
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
667 Beiträge
 
Delphi XE6 Enterprise
 
#2

AW: System.Delete und dynamische Arrays

  Alt 7. Okt 2025, 16:36
Bei Delphi XE6 gehts nicht, bei Delphi 10.2 gehts schon.
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
680 Beiträge
 
Delphi 12 Athens
 
#3

AW: System.Delete und dynamische Arrays

  Alt 7. Okt 2025, 16:46
Bei Delphi XE6 gehts nicht, bei Delphi 10.2 gehts schon.
Danke dir fürs Testen/Nachschauen. XE6 ist definitiv neuer als der Code (zumindest seine ursprüngliche Form) - das erklärt dann, warum ich das so gelöst habe.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: System.Delete und dynamische Arrays

  Alt 7. Okt 2025, 17:16
TArray<> ist garnicht nötig ... geht mit allen dynamischen Arrays.

Aber falls du doch TArray meints, die Klasse.
Da gibt es z.B. auch so ein nettes TArray.Sort (aber leider nur für sortierte Arrays)


Delete und Insert wurde, nach über 20 Jahren, endlich im XE7 repariert hinzugefügt,
unter dem Thema "string-like array operators"

ebenso wie
Delphi-Quellcode:
const
  C: array of Cardinal = [257];

var
  A, B: array of string;

A := A + B;
A := A + ['aa'];
A := A + ['bb', 'cc', 'dd'];
https://docwiki.embarcadero.com/RADS...Types_(Delphi)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 7. Okt 2025 um 17:26 Uhr)
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
680 Beiträge
 
Delphi 12 Athens
 
#5

AW: System.Delete und dynamische Arrays

  Alt 8. Okt 2025, 09:21
Delete und Insert wurde, nach über 20 Jahren, endlich im XE7 repariert hinzugefügt,
unter dem Thema "string-like array operators"
Ah, alles klar. Danke für die genaue Aufklärung und die zeitliche Eingrenzung.

Das Hinzufügen mit A:=A+['SomeString'] nutze ich schon länger fleißig, aber das in dem Zuge auch Delete und Insert angepasst wurden, ist komplett an mir vorbeigegangen (ich hab aber bis gestern auch nicht mehr danach gesucht - zumindest ich baue viel öfter ein Array zusammen, als dass ich mal was daraus löschen muss).

Danke an alle - wieder was gelernt!
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.538 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: System.Delete und dynamische Arrays

  Alt 8. Okt 2025, 09:25
Das Hinzufügen mit A:=A+['SomeString'] nutze ich schon länger fleißig, ...
Das ist aber eine relativ langsame Operation. Wenn Du das in einer Schleife machst dann erwäge es unter Umständen anders zu machen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:40 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