AGB  ·  Datenschutz  ·  Impressum  







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

TObjectDictionary komplett durchlaufen

Ein Thema von Kostas · begonnen am 4. Okt 2012 · letzter Beitrag vom 4. Okt 2012
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

TObjectDictionary komplett durchlaufen

  Alt 4. Okt 2012, 12:06
Delphi-Version: 5
Hallo Zusammen,

ich möchte gerne durch alle Einträge eines TObjectDictionary durchlaufen
und dabei die Keys und die Values abfragen. Mit ExtractPair kann ich
eigentlich genau das "Paar"(Kay,Value) abfragen. Doch leider nimmt
es ExtractPair wörtlich "Extract" und entfernt mir den Eintrag aus dem Dict.
Die Hilfe sagt, es gibt keine Hilfe.



Delphi-Quellcode:
procedure TfrmMain.SendAllStati;
var UserObject:TUserObject;
    i:integer;
    status:String;
    aPair :TPair<integer,TUserObject>;
begin
  status := 'ALLSTATI';
  for i := 0 to UserObjectDict.Count-1 do
  begin
    aPair := UserObjectDict.ExtractPair(i);
    if aPair.Value<>nil then
    begin
      status := status + Format(';%d_%d',[aPair.Key, aPair.Value.State]);
    end;
  end;
  Display(Memo3, status);
end;{SendAllStati}
Hat jemand eine Idee?

Gruß Kostas

[Edit] Auch wirklich unschön ist dass der Value.Destructor nicht gefeuert wird!
Es wird also aus der Liste entfern ohne dass das Object es mittbekommt!

Geändert von Kostas ( 4. Okt 2012 um 12:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.995 Beiträge
 
Delphi 12 Athens
 
#2

AW: TObjectDictionary komplett durchlaufen

  Alt 4. Okt 2012, 12:17
Ganz einfach:

Delphi-Quellcode:
var
  pair: TPair<<integer,TUserObject>;
...
  for pair in UserObjectDict do begin
    if aPair.Value<>nil then
    begin
      status := status + Format(';%d_%d',[aPair.Key, aPair.Value.State]);
    end;
  end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#3

AW: TObjectDictionary komplett durchlaufen

  Alt 4. Okt 2012, 12:19
So kannst Du das Dictionary durchlaufen:

Delphi-Quellcode:
for lKey in MyDict.Keys do
begin
  LValue := MyDict[lKey]; //<- value des Pair
end;
Lars
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.058 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: TObjectDictionary komplett durchlaufen

  Alt 4. Okt 2012, 12:25
Perfekt, genau so gehts.

Besten Dank und eine schöne Zeit.
Gruß Kostas
  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 16:55 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