AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Eintrag in TStringList wird gelöscht wenn value auf '' gesetzt wird
Thema durchsuchen
Ansicht
Themen-Optionen

Eintrag in TStringList wird gelöscht wenn value auf '' gesetzt wird

Ein Thema von softtouch · begonnen am 7. Okt 2024 · letzter Beitrag vom 7. Okt 2024
Antwort Antwort
itsChris

Registriert seit: 29. Jul 2022
27 Beiträge
 
Delphi 12 Athens
 
#1

AW: Eintrag in TStringList wird gelöscht wenn value auf '' gesetzt wird

  Alt 7. Okt 2024, 12:53
SetValue wird aber nicht bei sl[1] := '' aufgerufen (Jedenfalls in Delphi 11 nicht).
In dem Fall würde ja auch nicht nur der Value geleert, sondern das gesamte Name/Value-Pair durch einen Leerstring ersetzt.
Stimmt...hab mal wieder nicht richtig gelesen. Die Zuordnung mit dem Namen hab ich übersehen .
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.431 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eintrag in TStringList wird gelöscht wenn value auf '' gesetzt wird

  Alt 7. Okt 2024, 13:21
Wie wäre es denn mit TDictionary<string, string>?
https://docwiki.embarcadero.com/Libr...ns.TDictionary
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Eintrag in TStringList wird gelöscht wenn value auf '' gesetzt wird

  Alt 7. Okt 2024, 13:25
Da Values[name] beim Auslesen von nichtexistierenden Namen einen Leerstring zurück gibt, ist es immer Programm auch egal, ob es gelöscht wird, oder nicht.

Außer wenn es z.B. in einer Datei gespeichert werden soll und es dort für "Andere" vorhanden bleiben muß.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
237 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eintrag in TStringList wird gelöscht wenn value auf '' gesetzt wird

  Alt 7. Okt 2024, 14:46
Da die Namen in der Liste erhalten bleiben müssen, unabhängig ob Value einen Wert hat oder nicht, habe ich es einfach so gelöst:

Delphi-Quellcode:
s:=<originaler wert> oder leer

sl[i]:=sl.names[i]+'='+s;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Eintrag in TStringList wird gelöscht wenn value auf '' gesetzt wird

  Alt 7. Okt 2024, 15:15
Wenn es den Eintrag gibt, dann ist es so OK.

Statt '=' kannst/solltest du aber SL.NameValueSeparator nutzen,
falls es mal was Anderes ist.




Ich würde mal einen FeatureRequest zu erstellen, damit man das Löschen in der Liste deaktivieren kann, oder es ein eine Art SL.ValuesNotDeleteIfEmpty[name] := gibt.

Außerdem wollte ich eh mal einen 20 Jahre alten Bug beheben lassen.
Dieses blöde ValueFromIndex wurde ja nur erfunden, weil man ursprünglich (bis Delphi 7 oder so) die Default-Property und Array-Property nicht überladen konnte,
aber seit 15-20 Jahren geht es ja nun direkt
Delphi-Quellcode:
property Values[const Name: string]: string read GetValue write SetValue;
property Values[Index: Integer]: string read GetValueFromIndex write SetValueFromIndex; // das hier neu

property ValueFromIndex[Index: Integer]: string read GetValueFromIndex write SetValueFromIndex; // anstatt ähhhhhhhh, zusätzlich zu dem
Ein Therapeut entspricht 1024 Gigapeut.
  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 20:21 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