Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Recently used strings (https://www.delphipraxis.net/22958-recently-used-strings.html)

LkZ 26. Mai 2004 20:50


Recently used strings
 
Hi! ich hab eine funktion geschrieben(funktioniern tut sie noch nicht), die die "zuelezt verwendeten strings" in einer Liste anzeigt. Die strings, die in die Lisre eingefügt werden, haben alle einen "Counter",d.h. die strings bekommen eine interne Zahl mitgegeben, wenn sie ausgewählt werden. Dieser interne/unsichtbare Counter dient dazu dar, dass man später die Items in der Liste nach "meist verwendete strings" sortieren kann.
Hier der Code:

Delphi-Quellcode:
function Recent(s:string):string;
var Vorhanden:boolean;
    k:Integer;
    c:array[0..103] of Integer; {insgesamt/max. 103 strings, die in die Liste eingefägt werden können}
begin
  vorhanden:=false;
    for k:=0 to Detail2.ListBox1.Items.Count-1 do {Liste durchgehen}
     begin
      if s=Detail2.ListBox1.Items.Strings[k] then
      begin
       vorhanden :=true;                         {ist schon in der Liste vorhanden}
       c[k]:=c[k]+1;                             {den Counter eins erhöhen,}
       exit;                                     {nicht in die Liste einfügen}
     end;                                        {und raus}
     end;
   if vorhanden=false then                       {nicht vorhanden}
   begin
    c[i]:=1;                                     {hier weiss ich nicht mehr weiter}
    inc(i);                                      {nächstes Feld und DANN soll das nächste Feld auf 1 gesetzt werden}
   end;
 Detail2.ListBox1.Items.Add(s);                  {neu in die Liste einfügen}
 Result:=s;
end;
Kann sein, dass dieser Code ziemlich unprofessionell zu euch scheint; ich bin immer offen für neues :wink:

Danke MfG LkZ

nailor 26. Mai 2004 21:00

Re: Recently used strings
 
aaalso: der entscheidendste fehler bei der sache, warum das nie nie nie klappen kann, ist, dass die variable zum zählen lokal ist. die musst du global oder von der form abhängig machen!

dann (nicht unbedingt nötig): schau die mal records und dynamische arrays an

dann musst du an der "problemstelle" rausfinden, was der höchste index bisher war, eins mehr nehmen, und dann an der stelle deinen wert im array um eins erhöhen. dazu könnte man eventuell eine weitere globale variable anlegen, oder einfach sagen, wo '' (leerstring) steht, ist der höchste index, oder bei dynamischen arrays könnte man mit "length" arbeiten.

Pr0g 26. Mai 2004 21:01

Re: Recently used strings
 
Deine Beschreibung ist etwas zweideutig. Liefert die Funktion die zuletzt verwendeten, oder die am meisten verwendeten Strings?

MfG Pr0g

DP-Maintenance 26. Mai 2004 21:09

DP-Maintenance
 
Dieses Thema wurde von "Daniel" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Object-Pascal / Delphi-Language" verschoben.

SirThornberry 26. Mai 2004 21:12

Re: Recently used strings
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich würde das ganze über TList machen. Hab mir vor ner weile auch so nen Counterobject gebastelt. Hab das für Statistik gebraucht So füge ich dem Counterobject zum Beispiel die Postleitzahl aller Händler hinzu und sehe dann am ende von wo die meisten händer kamen. Das ganze noch für bestellungen etc. Habs dann auch so gemacht das man ein Increment angeben kann so das man damit auch den umsatz pro händler zählen kann. So wird jede bestellung eines händlers hinzugefügt und als increment wird der Bestelltwert angegeben. Um schluss sehe ich dann wie groß der umsatz jedes händlers ist...

Christian Seehase 27. Mai 2004 15:56

Re: Recently used strings
 
Moin lkz,

Du könntest, bei Verwendung von TListBox, die Objekte benutzen, die zu jedem StringList Eintrag gehören.

Kleines Beispiel:

Delphi-Quellcode:
var
  iWork : integer;

begin
  iWork := integer(ListBox1.Items.Objects[ListBox1.ItemIndex]);
  inc(iWork);
  ListBox1.Items.Objects[ListBox1.ItemIndex] := TObject(iWork);
end;

Die Hilfsvariable dient nur der Übersicht. Man könnte auch direkt einsetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 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