AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TStringList nach Dupplikaten suchen - Standard Pascal
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList nach Dupplikaten suchen - Standard Pascal

Ein Thema von paule32.jk · begonnen am 2. Sep 2024 · letzter Beitrag vom 4. Sep 2024
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#1

TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 2. Sep 2024, 13:04
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;
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#2

AW: TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 2. Sep 2024, 13:17
Ist MetaList sortiert?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 2. Sep 2024, 13:21
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:
A=Wert1
B=Wert2
Test=Wert3
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 2. Sep 2024, 13:39
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.
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#5

AW: TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 2. Sep 2024, 13:44
Das hier wäre dann auch ein Duplikat?

name=123
content=123
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 2. Sep 2024, 14:30
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.
Keine Sorge, eine ordentliche Programmiersprache erlaubt sowas eh nicht.

Zitat von Zeile 25 = das VAR:
[dcc32 Fehler] Unit27.pas(25): E2004 Bezeichner redeklariert: "index"
[dcc32 Fataler Fehler] Project27.dpr(5): F2063 Verwendete Unit 'Unit27.pas' kann nicht compiliert werden



Zitat:
 if MetaList[index].Values['name'] = ... <--- hier
Values oder Strings?

MetaList[index]{.Values['name']}
entspricht
MetaList.Strings[index]{.Values['name']}
aber du meinst bestimmt
MetaList.ValueFromIndex[index]
$2B or not $2B

Geändert von himitsu ( 2. Sep 2024 um 14:50 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#7

AW: TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 2. Sep 2024, 15:27
http://www.delphibasics.co.uk/RTL.php?Name=TStringlist

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;
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 2. Sep 2024, 15:40
ValueFromIndex kommt schon sehr nah dran, danke.
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 2. Sep 2024, 17:40
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;
$2B or not $2B
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
 
Delphi 12 Athens
 
#10

AW: TStringList nach Dupplikaten suchen - Standard Pascal

  Alt 3. Sep 2024, 16:12
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.
  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 02:40 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