![]() |
Value-Abruf aus Tstringlist beinhaltet "=" -> F
Liebe Leute,
ich habe folgenden Code:
Delphi-Quellcode:
Sinn dieser Funktion ist lediglich die Addition zweier Stringlists, die jeweils automatisch erhobene Ausdrücke (->Names) und zu String konvertierte Zahlen (->Values) enthalten (= Wortliste).
Procedure AddiereStringListen(var Quelle, Ziel: tstringlist);
var i: integer; begin for i:=0 to Quelle.count-1 do if Ziel.Values[Quelle.Names[i]] = '' then Ziel.Add(Quelle.Strings[i]) else begin Ziel.Values[Quelle.Names[i]]:= inttostr(strtoint(Ziel.Values[Quelle.Names[i]]) + strtoint(Quelle.Values[Quelle.Names[i]])); end; end; Nun passiert es immer wieder, dass bei einigen Additionen aus heiterem Himmel in der Values-Abfrage das Trennzeichen ("=") auftaucht - und folglich einen Fehler bei der Konvertierung in Integer erzeugt. Ich habe aber jetzt mehrfach die Listen gecheckt und ich sehe zwar dann, DASS tatsächlich dieser Wert (z.B. "=8") BEIM ABRUF so aussieht, aber ich kriege nicht heraus, wie das passieren kann. Die beiden Listen (Quelle, Ziel) enthalten VOR DEM ABRUF (d.h. z.B. via .text gecheckt) nämlich an keiner Stelle derartiges. Hat jemand eine Idee, was ich falsch mache oder welcher Quell-Ausdruck (Wert) versehentlich beim Values-Abruf (Prozess) so fehlinterpretiert wird? Danke für Eure Mühe und beste Grüße aus dem Südwesten, friedemann |
Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a
Ich hab zwar nicht ganz verstanden, was Dein Code tun soll, aber wie sieht es so aus?
Delphi-Quellcode:
procedure AddiereStringListen(const Quelle, Ziel: TStrings);
var i: integer; begin for i:=0 to Quelle.count-1 do if Ziel.Values[Quelle.Names[i]] = '' then Ziel.Values[Quelle.Names[i]] := Quelle.Values[Quelle.Names[i]] else Ziel.Values[Quelle.Names[i]]:= inttostr(strtoint(Ziel.Values[Quelle.Names[i]]) + strtoint(Quelle.Values[Quelle.Names[i]])); end; |
Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a
Moin,
danke für deinen Post: aber dadurch ändert sich nichts. Zitat:
Also: QUELLE: "Hallo=3 gut=4" ZIEL (bisher): "neu=2 Hallo=1" => ZIEL (neu) "neu=2" Hallo=4 gut=4" Gruß, friedemann |
Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a
Genau dies sollte mein Code eigentlich erledigen :gruebel:
[edit] Und in einer fehlertoleranteren Version:
Delphi-Quellcode:
[/edit]
procedure AddiereStringListen(const Quelle, Ziel: TStrings);
var i: integer; begin for i:=0 to Quelle.count-1 do if Ziel.Values[Quelle.Names[i]] = '' then Ziel.Values[Quelle.Names[i]] := Quelle.Values[Quelle.Names[i]] else Ziel.Values[Quelle.Names[i]]:= inttostr(StrToIntDef(Ziel.Values[Quelle.Names[i]],0) + StrToIntDef(Quelle.Values[Quelle.Names[i]],0)); end; |
Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a
Zitat:
Die Frage ist daher, ob es in den Verarbeitungsroutinen beim Abruf irgendwelche 'Missverständnisse' gibt, also ein Zeichen irrtümlich als Trennzeichen interpretiert wird und in Folge dann ein Fehler auftritt?! |
Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a
Da bin ich im Moment auch überfragt. Bringt es Besserung, wenn man NameValueSeparator von TStrings noch einmal explizit auf "=" setzt?
|
Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a
Ähm, wie? - .delimiter ist doch was anderes, oder?
|
Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a
Was hältst du von Zwischenvariablen?
Könnte doch sein, dass man damit leichter Debuggen kann,oder?
Delphi-Quellcode:
procedure AddiereStringListen(const Quelle, Ziel: TStrings);
var i: integer; qname : string; // Zwischenvariable begin for i:=0 to Quelle.count-1 do begin qname := Quelle.Names[i]; if Ziel.Values[qname] = '' then Ziel.Values[qname] := Quelle.Values[qname] else Ziel.Values[qname]:= inttostr(strtointDef(Ziel.Values[qname],0) + strtointDef(Quelle.Values[qname],0)); end; end; |
Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a
Einfach zuweisen.
Delphi-Quellcode:
Quelle.NameValueSeparator := '=';
Ziel.NameValueSeparator := '='; |
Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a
Zitat:
Gruß, friedemann |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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