FindItem suchen nach 2ter spalte in CListCtrl (Hashkey)
-
Die Komplexität deiner Lösung in Abhängigkeit von der Listenlänge ist völlig uninteressant, wenn deine Listenlänge begrenzt ist.
Ja versteh ich. Ich wollte das mit der Komplexität nur allgemein geklärt haben jetzt nicht im Zusammenhang mit meinem Problem. Und das hat mir Martin auch benatwortet.
Ich versuche, dir zu helfen. Ich kann es auch lassen.
Bin für jede Hilfe dankbar. Aber mit deiner Aussage: "Code den du eh nicht verstehst" greifst du mich an statt zu helfen.
Deine Frage war, ob es eine andere Möglichkeit gibt. Die habe ich beantwortet. Vielleicht stellst du die falschen Fragen.
Das ist genauso wie die folgende Frage mit ja zu beantworten: "Könnten sie mir die Uhrzeit sagen". Klar wenn man den anderen Ärgern will sagt man einfach nur ja.
Also hier nochmals genauer für dich: Welche einfachere Lösung gibt es, als die mit dem Vector?
-
Du brauchst FindItem nicht, aber es ist einfacher und vermutlich schneller, als in einer Schleife GetItemData aufzurufen. Ich wusste nicht, dass man mit FindItem auch nach lParam suchen kann.
Ja also doch FindItem. Und dann doch die Liste durchgehen. Und vermutlich schneller.
Das ist ja das was ich gesagt habe.
-
y-vonne schrieb:
Bin für jede Hilfe dankbar. Aber mit deiner Aussage: "Code den du eh nicht verstehst" greifst du mich an statt zu helfen.
Das ist kein Angriff, sondern eine Feststellung. Eine Lösung, die ohne Suchen auskommt, würde es erfordern, dass du in den Code deines CodeProject-Steuerelements eingreifst. Da das ein Steuerelement mit vielen zusätzlichen Funktionen ist, ist der Code vermutlich recht lang und komplex und damit für jemanden mit deinem Kenntnisstand nicht so ohne weiteres zu durchschauen. Das ist alles.
Also hier nochmals genauer für dich: Welche einfachere Lösung gibt es, als die mit dem Vector?
Erweitere deine Map um einen Zähler, den du beim Einfügen hochzählst, und benutz den für das lParam.
-
Kurzfassung
y-vonne: schrieb:
Gibt es eine Möglichkeit ein Listcontrol mit zwei Spalten als Key mit FindItem zu durchsuchen. Beispielsweise ein weiterer Wert als key einfügen.
Martin Richter schrieb:
Macht keinen Sinn FindItem durchläuft das ganze ListControl egal ob ein vergleich oder mehrere. Kein Zeitvorteil.
y-vonne schrieb:
Andere Lösung?
Martin Richter und MFK:
Virtual ListControly-vonne: schrieb:
Geht nicht. Da Benutzerdefiniertes Listcontrol
MFK: schrieb:
Wert in LFITEM speichern.
y-vonne: schrieb:
Somit besteht immer noch das Problem mit FindItem das Martin Richter angesprochen hat.
MFK: schrieb:
Nein du kannst GetIemData verwenden.
y-vonne: schrieb:
Nein ich möchte mt dem item den Eintrag suchen.
MFK: schrieb:
Nimm FindItem das ist schneller.
-
y-vonne schrieb:
Kurzfassung
Ja, so kann es laufen, wenn man nur nach und nach mit den wichtigen Informationen rausrückt.
Bau da doch mal ein, wo du erwähnt hast, dass du nur 40 Einträge hast und ein Steuerelement benutzt, das du nicht selbst geschrieben hast.
-
Da das ein Steuerelement mit vielen zusätzlichen Funktionen ist, ist der Code vermutlich recht lang und komplex und damit für jemanden mit deinem Kenntnisstand nicht so ohne weiteres zu durchschauen. Das ist alles.
Du hast recht dass der Code sehr lang und auch komplex ist. Das heißt nicht, dass ich ihn nicht verstehe. Es macht aber aus meiner sicht keinen Sinn so ein komplexes Control anzufassen, zumal dass nur einen kleinen Teil meines ganzen Projekts ist.
Nur weil man nicht alles versteht in diesem komplizierten MFC, heißt das nicht dass man einen schlechten Kenntnisstand in der Informatik hat
-
Kann ich gerne einbauen
hier:
y-vonne: ich habe maximal 40 einträgevor diesen beiden ausssagen
y-vonne schrieb
Somit besteht immer noch das Problem mit FindItem das Martin Richter angesprochen hat.MFK schrieb:
Nein du kannst GetIemData verwenden.Ich sagte dass das Problem immer noch besteht immer noch, und du hast beauptet nein. Martin Richter hat darauf nicht geantwortet.
-
Wenn die Zeit und Energie, die du gerade darauf verwendest, Recht zu behalten, in dein Problem gesteckt hättest, wärst du fertig.
-
Und hier noch deine Aussage dazu:
MFK schrieb:
Das Problem besteht, solange du weiter darauf bestehst, dein Listcontrol linear zu durchsuchen.
Und ich sagte dass muss ich immer noch! Du hast behauptet nein. Und zum Schluss sind wir dann doch bei FindItem gelandet und der linearen Suche.
Also hatte ich recht!!!!
-
y-vonne schrieb:
Du hast recht dass der Code sehr lang und auch komplex ist. Das heißt nicht, dass ich ihn nicht verstehe.
Natürlich nicht. Deswegen schrieb ich "vermutlich" und "nicht so ohne weiteres"
y-vonne schrieb:
Nur weil man nicht alles versteht in diesem komplizierten MFC, heißt das nicht dass man einen schlechten Kenntnisstand in der Informatik hat
Natürlich nicht. Hat ja auch niemand was von schlecht gesagt. Ich bin der Meinung, dass bei deinem Kenntnisstand von Hashfunktionen, Listcontrols und Laufzeitkomplexität du diesen Code besser nicht anfasst. Und du offenbar auch.
y-vonne schrieb:
Und hier noch deine Aussage dazu:
MFK schrieb:
Das Problem besteht, solange du weiter darauf bestehst, dein Listcontrol linear zu durchsuchen.
Und ich sagte dass muss ich immer noch! Du hast behauptet nein. Und zum Schluss sind wir dann doch bei FindItem gelandet und der linearen Suche.
Es gibt eine Lösung, bei der du nicht suchen musst, aber für die würdest du länger brauchen, und der Geschwindigkeitsvorteil wäre bei deinen kleinen Datenmengen wohl nicht besonders groß.
y-vonne schrieb:
Also hatte ich recht!!!!
Kindergarten?
-
Mir ging es nicht ums Recht behalten.
Wir sind immer noch bei der linearen Suche. Und darauf habe ich dich hingewiesen. Du hast aber steif und fest behauptet nein. Wie soll ich denn dann eine andere Lösung finden.
-
Tut mir leid. Ich danke dir für deine Hilfe.
Aber Du hast das Problem auch nicht verstanden das Martin Richter angesprochen hat. Ich habe dich mehrmals darauf hingewiesen dass wir immer noch bei der
linearen Suche sind und du hast behauptet nein.Und hier geht es nicht um Kindergarten oder sonst was.
Deine Lösung hilft mir weiter, aber nur weil ich nur 40 Einträge habe. Aber wie gesagt, das Problem das Martin mit der linearen suche angesprochen hat wurde damit nicht gelöst. Darauf habe ich dich hingewiesen. Aber deine Sturrheit macht einem Angst.
-
Vieleicht noch eine versöhnliche Antwort:
Ich habe nun in lparam meinen Key eingefügt. Kann ich darauf nun mit diesen dann irgendwie mit SetItem oder GetItem direkt darauf zugreifen ohne FindItem. und dort direkt die Spalte 4 ändern.
-
Weißt du was? Du hast Recht und ich meine Ruhe.
Viel Erfolg noch.
-
y-vonne schrieb:
Ich habe nun in lparam meinen Key eingefügt. Kann ich darauf nun mit diesen dann irgendwie mit SetItem oder GetItem direkt darauf zugreifen ohne FindItem. und dort direkt die Spalte 4 ändern.
<Kopfschüttel>Ich frage mich gerade warum ich überhaupt etwas geschrieben habe... </Kopfschüttel>
-
Wieso was habe ich nun falsches gesagt.
MFK hat mich doch nun auf die Spur gebracht.
-
Nun ja freundlich ist man hier nun gerade nicht.
Wenn man mal was nicht verstanden hat muss man ja einen nicht gleich so abwerten.Schön dass ihr selber das ganze verstanden habt. Mag auch sein dass ihr gute MFC-Programmierer seit. Aber um Antworten in Foren zu geben seit ihr nicht gerade die Nummer 1.
Nun ja mich wundert es eh dass man bei so einer schlechten Rechtschreibung MVP werden konnte. Denke ein bischen Allgemeinbildung gehört auch dort hinzu.