![]() |
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:
Kann sein, dass dieser Code ziemlich unprofessionell zu euch scheint; ich bin immer offen für neues :wink:
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; Danke MfG LkZ |
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. |
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
Dieses Thema wurde von "Daniel" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Object-Pascal / Delphi-Language" verschoben.
|
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...
|
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 08:20 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