AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language TMultiMap: Problem wenn gelöschter Key erneut hinzugefügt wird

TMultiMap: Problem wenn gelöschter Key erneut hinzugefügt wird

Offene Frage von "Dawn87"
Ein Thema von Dawn87 · begonnen am 16. Apr 2018 · letzter Beitrag vom 16. Apr 2018
Antwort Antwort
Dawn87

Registriert seit: 15. Feb 2007
Ort: Lüdenscheid
179 Beiträge
 
Delphi XE5 Professional
 
#1

TMultiMap: Problem wenn gelöschter Key erneut hinzugefügt wird

  Alt 16. Apr 2018, 16:26
Delphi-Version: XE5
Liebe Foristen,

ich verwende in einem Projekt die Klasse TMultiMap aus der Library "delphi-coll". Das ist im Prinzip ein TDictionary das den gleichen Key mehrfach enthalten darf.

Jetzt bin ich über ein Phänomen gestolpert. Wenn ich einen Key (und somit auch alle dazugehörigen Values) aus meiner MultiMap entferne und anschließend den gleichen Key mit anderen Values hinzufüge, bleibt meine TMultiMap danach leer. Hat dieses Probem schon einmal jemand beobachten können oder mache ich sogar etwas grundsätzliches falsch? Der folgende Unit-Test demonstriert das Problem:

Delphi-Quellcode:
unit TestMultiMapU;

interface

uses
  TestFramework, Collections.MultiMaps;

type
  TestMultiMap = class(TTestCase)
  strict private
    FMultiMap: TMultiMap<string, string>;
  public
    procedure SetUp; override;
    procedure TearDown; override;
  published
    procedure RemoveKey_AddKeyAgain_MultiMapShouldContainKey;
  end;

implementation

uses
  Collections.Base;

procedure TestMultiMap.RemoveKey_AddKeyAgain_MultiMapShouldContainKey;
const
  csKey = 'Key';
  csValue = 'Value';
var
  Values: ISequence<string>;
begin
  FMultiMap.Add(csKey, csValue);

  CheckEquals(1, FMultiMap.Count); // OK
  CheckTrue(FMultiMap.TryGetValues(csKey, Values)); // = True

  FMultiMap.Remove(csKey);

  FMultiMap.Add(csKey, csValue);

  CheckEquals(1, FMultiMap.Count); // OK
  CheckTrue(FMultiMap.TryGetValues(csKey, Values)); // = False (Es wurde ja wieder ein Eintrag mit .Add angelegt, wieso kann dieser also nicht ausgelesen werden?)
end;

procedure TestMultiMap.SetUp;
begin
  FMultiMap := TMultiMap<string, string>.Create;
end;

procedure TestMultiMap.TearDown;
begin
  FMultiMap.Free;
end;

initialization

// Alle Testfälle beim Testprogramm registrieren
RegisterTest(TestMultiMap.Suite);

end.
Über jeden Ratschlag bin ich dankbar!
  Mit Zitat antworten Zitat
Dawn87

Registriert seit: 15. Feb 2007
Ort: Lüdenscheid
179 Beiträge
 
Delphi XE5 Professional
 
#2

AW: TMultiMap: Problem wenn gelöschter Key erneut hinzugefügt wird

  Alt 16. Apr 2018, 18:19
Ich habe die bisher genutzte Library gegen die Spring4d.Collections ausgetauscht. Das Problem besteht nun nicht mehr.

Es war offenbar ein Bug in der TMultiMap selbst.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf