Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String in TObjectList suchen (https://www.delphipraxis.net/182701-string-tobjectlist-suchen.html)

DeddyH 12. Nov 2014 15:58

AW: String in TObjectList suchen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal schnell unter XE eine kleine unkommentierte Demo geschrieben.

Sir Rufo 12. Nov 2014 15:58

AW: String in TObjectList suchen
 
Könntest du für Delphi-Code auch die Delphi-Tags benutzen?

Zitat:

Zitat von StepByStep (Beitrag 1279497)
Hm... ich habe das zwar jetzt integriert bekommen, aber es kommen noch mehr Fehler.

Delphi-Quellcode:
  List.Sort(TComparer<TWort>.Construct(
    function(const Left, Right: TWort): integer
    begin
      Result := Left.iAnzahl - Right.iAnzahl;
    end));
  iAusgabe    := 0;
  for iAusgabe := List[iAusgabe].iAnzahl to List[List.Count - 1].iAnzahl do
    Memo2.Lines.Add(IntToStr(List[iAusgabe].iAnzahl) + 'x ' + List[iAusgabe].sWort2);

Den Comparer würde ich so definieren:
Delphi-Quellcode:
uses
  Math;

TComparer<TWort>.Construct(
  function (const L, R : TWort ) : Integer
  begin
    Result := CompareValue( L.iAnzahl, R.iAnzahl );
  end );
und das verstehe ich irgendwie überhaupt nicht
Delphi-Quellcode:
  iAusgabe    := 0;
  for iAusgabe := List[iAusgabe].iAnzahl to List[List.Count - 1].iAnzahl do
    Memo2.Lines.Add(IntToStr(List[iAusgabe].iAnzahl) + 'x ' + List[iAusgabe].sWort2);
Nehmen wir an, du hast dort 3 Einträge und der erste Eintrag beinhaltet in iAnzahl eine 5, dann versuchst du auf das 5. Element der Liste zuzugreifen, was es logischerweise gar nicht gibt ... sehr seltsam

StepByStep 13. Nov 2014 06:59

AW: String in TObjectList suchen
 
Guten Morgen,

@Sir Rufo: Wenn ich den Rückgabewert der Funktion wegnehme, dann meckert er, dass er einen ":" erwartet.
Zu folgenden Zeilen:

Delphi-Quellcode:
  iAusgabe    := 0;
  for iAusgabe := List[iAusgabe].iAnzahl to List[List.Count - 1].iAnzahl do
    Memo2.Lines.Add(IntToStr(List[iAusgabe].iAnzahl) + 'x ' + List[iAusgabe].sWort2);
iAusgabe ist quasi mein Index. Dieser soll vom niedrigsten bis zum höchsten Wert durchlaufen und entsprechend für jeden Indexwert die dort enthaltene Anzahl und das Wort in das Memofeld schreiben. Kann es vielleicht sein, dass ich TObjectLists falsch verstanden habe?

Für mich ist das eine Liste von 0 bis n. Da ich Integer- und Stringwerte habe, gibt es zwei Spalten, die nebeneinander sind. Und ich kann doch über einen Indexwert darauf zugreifen oder etwa nicht?

Zoot 13. Nov 2014 07:08

AW: String in TObjectList suchen
 
hast du also eigentlich folgendes im Sinn?


Delphi-Quellcode:
 
  for i := 0 to List.Count - 1 do
    Memo2.Lines.Add(IntToStr(List[i].iAnzahl) + 'x ' + List[i].sWort2);

Sir Rufo 13. Nov 2014 07:10

AW: String in TObjectList suchen
 
Das mit ohne dem Rückgabewert war falsch (ist im Beitrag korrigiert).

Nehmen wir an, du hast folgende Liste
IndexsWortiAnzahl
0hallo2
1du5
2da7
dann ergibt sich daraus, dass
Delphi-Quellcode:
iAusgabe
von
Delphi-Quellcode:
2..7
läuft.

Zeige mir doch mal in der Liste die Zeilen mit dem Index
Delphi-Quellcode:
3..7
die sind nicht da!

Verstehen könnte ich
Delphi-Quellcode:
for iAusgabe := 0 to List.Count -1 do
, weil dann läuft
Delphi-Quellcode:
iAusgabe
von
Delphi-Quellcode:
0..2
und das sind gültige Index-Werte.

PS So ein Debugger leistet tolle Arbeit, wenn man den benutzt und sich einfach während des Ablaufs die Variablenwerte anschaut.

StepByStep 13. Nov 2014 07:30

AW: String in TObjectList suchen
 
Ich bedanke mich für eure Hilfe, die Erklärung zu dem Index der TObjectList hat mir gerade sehr geholfen. Ich lese richtig aus und zähle auch richtig. Danke nochmals. :)

Gruß
Jan


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.
Seite 4 von 4   « Erste     234   

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