AGB  ·  Datenschutz  ·  Impressum  







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

TStringlist verliert Strings

Ein Thema von mentaltec · begonnen am 3. Jan 2013 · letzter Beitrag vom 4. Jan 2013
Antwort Antwort
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#1

TStringlist verliert Strings

  Alt 3. Jan 2013, 17:15
Delphi-Version: 5
Hallo,

hat schon mal jemand einer TStringList mit

sl.ValueFromIndex[0] := '';

n Leerstring zugewiesen??

jaja, sl.count ist > 0 und die keys stehen drin z.B. 'head='; Values sind alle ''
und ja, in dem Fall sollte sich nichts ändern
aber Pustekuchen : der gösamte String[0] wird gelöscht !!
was soll das?
wei's ich n Leerzeichen zu, funzt es
sind Leerstrings als Value nicht zulässig?

arrrg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

AW: TStringlist verliert Strings

  Alt 3. Jan 2013, 17:31
Sieht wohl so aus:
Zitat:
Delphi-Quellcode:
procedure TStrings.SetValueFromIndex(Index: Integer; const Value: string);
begin
  if Value <> 'then
  begin
    ...
  end
  else
    if Index >= 0 then Delete(Index);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: TStringlist verliert Strings

  Alt 3. Jan 2013, 17:36
Das hat schon seine Richtigkeit, der String wird bewußt von der Klasse gelöscht, weil er keinen Wert hat. Allerdings sollte dir theoretisch dadurch kein Nachteil entstehen, denn ob man den Wert abfragt, wo es keinen Wert gibt, oder wo der String gar nicht da ist, es ergibt in beiden Fällen einen leeren String zurück. Wird der String aber bei so einer Aktion gelöscht, spart das Speicher.

Es ist natürlich Pech wenn man statt mit Values und Names mit ValueFromIndex arbeitet, weil man dadurch den Bezugspunkt verliert.

Da es sich aber hier um eine Klasse handelt, dürfte es kein großes Problem geben sich seine eigene TStringList2 davon abzuleiten und diese Kleinigkeit zu überschrieben.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: TStringlist verliert Strings

  Alt 3. Jan 2013, 17:46
DEL

EDIT: zu spät gesehen dass es bereits von DeddyH beantwortet wurde ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 3. Jan 2013 um 17:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#5

AW: TStringlist verliert Strings

  Alt 3. Jan 2013, 18:43
Mann könnts auch (unsauber) so machen:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  S: String;
  SL: TStringList;

begin
  SL := TStringList.Create;

  try
    //Test-String
    sl.Add('hallo=test');

    //Name des 1. Index auslesen und an gleicher Stelle in SL zurückschreiben
    SL.Strings[0] := Format('%s=', [SL.Names[0]]);

    ShowMessage(IntToStr(SL.Count));

    //Wert auslesen
    S := SL.ValueFromIndex[0];

    If S = 'then
      S := '*';

    ShowMessage(S);
  finally
    FreeAndNil(SL);
  end;
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
mentaltec

Registriert seit: 28. Sep 2012
60 Beiträge
 
#6

AW: TStringlist verliert Strings

  Alt 4. Jan 2013, 10:46
ich danke allen, die sich an der Diskussion beteiligt haben.

hätte nicht gedacht, das ein simpler Blick in den Quellcode gereicht hätte

die Bewertung "Pech" ist für dieses imho undokumentierte Verhalten sehr wohlwollend
für mich grenzt eine Funktion, die mit Index als Parameter aufgerufen wird und dann die Indicees der Collection verwursteln kann an Schwachfug

egal, ich werd damit umgehen können - und alle Anderen sind hoffentlich gewarnt
  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 02:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz