AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TStringList - Anzahl der Wörter zählen
Thema durchsuchen
Ansicht
Themen-Optionen

TStringList - Anzahl der Wörter zählen

Ein Thema von Go2EITS · begonnen am 27. Aug 2006 · letzter Beitrag vom 3. Okt 2006
 
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#5

Re: TStringList - Anzahl der Wörter zählen

  Alt 27. Aug 2006, 14:30
Hi,
ich weiß zwar nicht genau warum OOP nicht dein Ding ist, aber da du nicht etwas generelles gegen Klassen hast (du verwendest ja eine TStringList) solltest du doch die Variante von Jens vorziehen.
An sich ist es natürlich sauberer ein Integer in einem Wrapper auch wirklich als Objekt zu übergeben. Klar, hier eine Referenz eh ein Integer, aber wenn Delphi mal etwas typsicherer wird...

Jedenfalls zeigt dir Jens Lösung, dass du mit einer Liste auskommst. Du hast eine Art Dictonary. Hier wird ein Tupel (Schlüssel, Wert) abgespeichert. Anhand von Schlüssel kannst du dir den gespeicherten Wert zurückgeben lassen. Wird die Liste z.B. sortiert, bleibt diese Zuordnung automatisch erhalten.
Wenn du hier noch ein THashedStringList verwendest (ein Nachfahre der TStringList) dürfte sich auch dir Perfomance noch einmal ordentlich verbessern.
Als einfaches Beispiel:

Delphi-Quellcode:
type
  TIntegerWrapper = class(TObject)
    private
      FValue : Integer;
    public
      Value : Integer read FValue write FValue;
  end;

...

procedure toList(const s : String; const List : TStringList);
var buffer : TIntegerWrapper;
begin
  if assigned(List) then
  begin
    if List.indexOf(s) > -1 then
    begin
      buffer := TIntegerWrapper(List.Objects[List.indexOf(s)]);
      buffer.Value := buffer.Value + 1;
    end

    else
    begin
      buffer := TIntegerWrapper.Create;
      buffer.Value := 1;
     
      List.AddObject(s, buffer);
    end;
  end;
end; // procedure toList(const s : String; const List : TStringList);
Hier siehst du, dass du mit einer Liste auskommst. Es ist jetzt egal was du mit der Liste machst, die Zuordnung String -> Anzahl würde immer erhalten bleiben (beim Einfügen, Löschen, Sortieren, ...). Mittels AddObject legst du einfach an der Stelle des Strings einen Verweis auf ein Objekt ab. Dieser Verweis bleibt immer erhalten. Wie man damit arbeitet hat dir Jens eigentlich schon gezeigt, hier ist einfach nur ein Wrapper zu gegekommen.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
 


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 17:27 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