AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Value-Abruf aus Tstringlist beinhaltet "=" -> Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Value-Abruf aus Tstringlist beinhaltet "=" -> Fehler

Ein Thema von friedemann2009 · begonnen am 10. Mai 2010 · letzter Beitrag vom 10. Mai 2010
Antwort Antwort
Seite 1 von 2  1 2      
friedemann2009

Registriert seit: 10. Feb 2010
49 Beiträge
 
#1

Value-Abruf aus Tstringlist beinhaltet "=" -> F

  Alt 10. Mai 2010, 13:23
Liebe Leute,

ich habe folgenden Code:

Delphi-Quellcode:
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;
Sinn dieser Funktion ist lediglich die Addition zweier Stringlists, die jeweils automatisch erhobene Ausdrücke (->Names) und zu String konvertierte Zahlen (->Values) enthalten (= Wortliste).

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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a

  Alt 10. Mai 2010, 13:41
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;
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
friedemann2009

Registriert seit: 10. Feb 2010
49 Beiträge
 
#3

Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a

  Alt 10. Mai 2010, 13:48
Moin,

danke für deinen Post: aber dadurch ändert sich nichts.

Zitat:
Ich hab zwar nicht ganz verstanden, was Dein Code tun soll
Der Code soll zwei Stringlists mit Werten (z.B. "Hallo=3") miteinander vergleichen und zu ZIELliste hinzufügen, was neu ist bzw. aus QUELLliste hinzuaddieren, was als Names schon in ZIEL enthalten ist.

Also:
QUELLE:
"Hallo=3
gut=4"

ZIEL (bisher):
"neu=2
Hallo=1"

=> ZIEL (neu)
"neu=2"
Hallo=4
gut=4"

Gruß,
friedemann
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a

  Alt 10. Mai 2010, 13:50
Genau dies sollte mein Code eigentlich erledigen

[edit] Und in einer fehlertoleranteren Version:
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(StrToIntDef(Ziel.Values[Quelle.Names[i]],0) +
      StrToIntDef(Quelle.Values[Quelle.Names[i]],0));
end;
[/edit]
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
friedemann2009

Registriert seit: 10. Feb 2010
49 Beiträge
 
#5

Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a

  Alt 10. Mai 2010, 13:55
Zitat von DeddyH:
Genau dies sollte mein Code eigentlich erledigen
Ja, eben, das tut er auch - nicht anders als meiner es auch schon getan hat.
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?!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a

  Alt 10. Mai 2010, 13:59
Da bin ich im Moment auch überfragt. Bringt es Besserung, wenn man NameValueSeparator von TStrings noch einmal explizit auf "=" setzt?
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
friedemann2009

Registriert seit: 10. Feb 2010
49 Beiträge
 
#7

Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a

  Alt 10. Mai 2010, 14:08
Ähm, wie? - .delimiter ist doch was anderes, oder?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a

  Alt 10. Mai 2010, 14:11
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;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a

  Alt 10. Mai 2010, 14:12
Einfach zuweisen.
Delphi-Quellcode:
Quelle.NameValueSeparator := '=';
Ziel.NameValueSeparator := '=';
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
friedemann2009

Registriert seit: 10. Feb 2010
49 Beiträge
 
#10

Re: Value-Abruf aus Tstringlist beinhaltet "=" -&a

  Alt 10. Mai 2010, 16:50
Zitat von shmia:
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;
Hey, vielen Dank: das war ne gute Idee. Ich muss zwar erst noch checken, ob das die Ergebnisse doch irgendwie verfälscht, aber auf den ersten Blick sieht es ganz gut aus.

Gruß,
friedemann
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:26 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