AGB  ·  Datenschutz  ·  Impressum  







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

Item aus einem dynamischen String-Array löschen

Ein Thema von DieDolly · begonnen am 25. Sep 2018 · letzter Beitrag vom 27. Sep 2018
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

AW: Item aus einem dynamischen String-Array löschen

  Alt 26. Sep 2018, 10:09
Delete(array, 1, 1) funktioniert leider nicht, da mein Array ein property eines Records ist und der Compiler meckert, dass es ein Konstantenobjekt sei.
Delete funktioniert mit einem TArray<string> schon. Dein Problem ist hier ein anderes. Wenn du mal etwas Code zeigst, kann man auch einen passenden Vorschlag machen.
Das Array was ich bearbeiten möchte steht in einem Record einer anderen Unit. Etwa so
Delphi-Quellcode:
type
 TFilterOptions = record
 
 private
  FFilterList: TArray<string>;
 public
  property FilterList: TArray<string> read FFilterList write FilterList;

  procedure LoadFilterList; // Prozedur die die Liste aus einer Datei lädt und in FilterList schreibt

  // NEU
  procedure FilterListDeleteFromArray(const Index: Integer);
 end;

implementation

uses ...

procedure TFilterOptions.FilterListDeleteFromArray(const Index: Integer);
begin
 TArrayHelper.Delete<string>(FFilterList, Index);
end;
Aus einer anderen Unit rufe ich dann auf
TFilterOptions.FilterListDeleteFromArray(1); Ich habe gerade ein paar Tests durchgeführt und alles funktioniert. Ein netter Nebeneffekt ist, dass ich circa 100 Zeilen Code einsparen konnte (alter, schlechter Code wo ich ständig eine Ini-Datei lade).

Geändert von DieDolly (26. Sep 2018 um 10:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#2

AW: Item aus einem dynamischen String-Array löschen

  Alt 26. Sep 2018, 10:49
Ich kann leider deine Delphi-Version nicht erkennen. Funktioniert dies bei dir nicht?

Delphi-Quellcode:
procedure TFilterOptions.FilterListDeleteFromArray(const Index: Integer);
begin
  Delete(FFilterList, Index, 1); // alternativ System.Delete(FFilterList, Index, 1)
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Item aus einem dynamischen String-Array löschen

  Alt 26. Sep 2018, 11:01
Die "string-like"-Array-Funktionen ala Insert/Delete/+ wurden erst vor Kurzem eingebaut.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: Item aus einem dynamischen String-Array löschen

  Alt 26. Sep 2018, 11:16
Ich kann leider deine Delphi-Version nicht erkennen. Funktioniert dies bei dir nicht?

Delphi-Quellcode:
procedure TFilterOptions.FilterListDeleteFromArray(const Index: Integer);
begin
  Delete(FFilterList, Index, 1); // alternativ System.Delete(FFilterList, Index, 1)
end;
Doch das funktioniert. Ich benutze die Community Edition.

Sollte ich hier nun besser Delete() verwenden oder meinen eigenen Wrapper TArrayHelper.Delete<T>()?
Ich bin bisher so verfahren, dass ich meist meine eigenen Wrapper nutze, da ich dort den Aufruf manipulieren kann und so nur eine Änderung vornehmen muss statt an 100 Stellen.

Die "string-like"-Array-Funktionen ala Insert/Delete/+ wurden erst vor Kurzem eingebaut.
Meinst du damit TFilterOptions.FilterList.Delete() ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Item aus einem dynamischen String-Array löschen

  Alt 26. Sep 2018, 12:29
Neee, Delphi-Referenz durchsuchenSystem.Delete

Delphi-Quellcode:
ArrayOrString := ArrayOrString1 + ArrayOrString2;
Insert(Value, ArrayOrString, X);
Delete(ArrayOrString, X, Y);
Früher ging das nur mit Strings, weswegen dieses supercoole neue Feature in der What's New auch als "string-like" betitelt wurde.
http://docwiki.embarcadero.com/RADSt...Dynamic_Arrays
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Sep 2018 um 12:32 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: Item aus einem dynamischen String-Array löschen

  Alt 27. Sep 2018, 11:30
Gäbe es denn eine Möglichkeit aus meinem obigen Record-Beispiel etwas zu machen, dass ich die properties (die ja Konstantenobjekte sind) Prozeduren mit var-Parameter übergebe kann? Vielleicht sogar ohne einschneidende Änderungen vorzunehmen.
  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 11:01 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 by Thomas Breitkreuz