![]() |
TStringList nach Dupplikaten suchen - Standard Pascal
Hallo,
ich habe gerade eine kleine Blockade, um vorhandene items in einer TStringList zu finden. wenn gefunden, dann soll found := true; ansonsten false; einnehmen. die Suchfunktion unten iteriert von 0 auf Count-1 - aber was ist, wenn weitere Einträge vorhanden sind ?
Delphi-Quellcode:
function TCustomMetaName.get(index: Integer): String;
var found: Boolean; var index: Integer; begin // index out of bounds ? if (index > MetaList.Count-1) or (index < 0) or ((MetaList.Count-1) < 0) then begin if debugMode then begin ShowMessage( Locale.tr('Error: meta name is empty/out of bounds.') + #13#10 + Locale.tr('A Exception should stop the build.')); raise Exception.Create(Locale.tr('internal error')); end; raise Exception.Create(Locale.tr('internal error')); end; // duplicates in list ? found := false; for index := 0 to MetaList.Count - 1 do begin if MetaList[index].Values['name'] = ... <--- hier end; end; |
AW: TStringList nach Dupplikaten suchen - Standard Pascal
Ist MetaList sortiert?
|
AW: TStringList nach Dupplikaten suchen - Standard Pascal
Also erstens ist es keine gute Idee, dass deine lokale Variable genauso heißt wie der Parameter. Deshalb setzt man Parametern üblicherweise ein A voran, z.B. AIndex.
Du möchstest herausfinden, ob der per Index angegebene Eintrag noch einmal in der Liste vorkommt? Und was soll dann passieren? (Denn zurück wird ja ein String geliefert...) Und deine Liste enthält Werte in der Form und du möchtest den rechten Teil nach dem Gleichheitszeichen suchen? (Weil du auf Values zugreifst) Zitat:
|
AW: TStringList nach Dupplikaten suchen - Standard Pascal
ja, die .Value Einträge.
Die Liste: name=123 name=abc name=zupf content=quatschpillepalle "name" kommt mehrmals vor (als key: name) ... aber die Value's sind anders. wenn Dupplikat gefunden wurde, soll der Suchvorgang abbrechen, und eine ShowMessage anzeigen. |
AW: TStringList nach Dupplikaten suchen - Standard Pascal
Das hier wäre dann auch ein Duplikat?
name=123 content=123 |
AW: TStringList nach Dupplikaten suchen - Standard Pascal
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
MetaList[index]{.Values['name']}
entspricht
Delphi-Quellcode:
MetaList.Strings[index]{.Values['name']}
aber du meinst bestimmt
Delphi-Quellcode:
MetaList.ValueFromIndex[index]
|
AW: TStringList nach Dupplikaten suchen - Standard Pascal
![]() Vieleicht suchst Du sowas wie ValueFromIndex?
Delphi-Quellcode:
for i := 0 to names.Count-1 do
begin ShowMessage(names.Names[i]+' is '+names.ValueFromIndex[i]); end; |
AW: TStringList nach Dupplikaten suchen - Standard Pascal
ValueFromIndex kommt schon sehr nah dran, danke.
|
AW: TStringList nach Dupplikaten suchen - Standard Pascal
Mir war so, als gab es auch ein Array (oder notfalls Enumerator) für die Values alleine, aber nee,
nur Namen bzw. Keys, sowie Strings (also 'Name=Value'), sonst würde auch sowas gehn:
Delphi-Quellcode:
if MatchStr('abc', MetaList.ToValues) then // oder MatchText() für case-insensitive
ValueInListeGefunden; |
AW: TStringList nach Dupplikaten suchen - Standard Pascal
Erst MetaList (oder eine Kopie davon) mit eigener Vergleichsfunktion nach ValueFromIndex sortieren.
In der sortierten Liste stehen danach gleiche Values hintereinander. Einfach Schritt für Schritt durchgehen und mit dem jeweiligen Vorgänger vergleichen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 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