Español
Foro

SearchText vieeeel a langsam

 
¡Hola Franco,

Yo hatte antes, en un meiner Programas una Windows Listbox por una Listview auszutauschen.
In una Testlauf voluntad ca. 20.000 Zeilen eingefügt wobei antes el Einfügen cada Línea geprüft se, si esta ya disponible es.
El Listbox-Versión war en knapp 4 Minuten por, el Listview Versión Yo después de 20 Minuten y 1/10 el Arbeit abgebrochen.

In el Listbox Cuestión Yo dies así de:
exist& = SendMessage(box&,$01A2,-1,addr(edit$))

Yo búsqueda después de el genauen Línea

En el Listview se ejecuta el así:
exist& = SearchText(box&,0, GetLines(box&),1,Addr(edit$),10,addr(exist2&))

Genauer String, Búsqueda sólo en el betreffenden Spalte. Schon en 2.000 Zeilen verdammt langsam.

-Gibt lo no Vergleichbare Windows Message, el entweder du uso kannst oder du me empfehlen kannst.

-¿Puede du el Aufbau el Función una vez más überdenken, Yo bin sicher, dass al todavía optimieren kann.

-Yo weiß no como va pero yo sería lo así hacer:
sólo después de el ersten Signo cada Línea Suchen, en übereinstimmung auch el zweite abfragen usw.

-Posesiones Soy un vorhandenen Befehl übersehen?

-Sinnvoll wäre una SearchText-Lite Variante, el darauf optimiert es sólo en uno Spalte a suchen y en ersten Fundstelle igual abbricht. Den Parámetro para Fundstellen-Spalte podría uno hierbei auch weglassen.

Wenn du lo schaffst, el Función doppelt así rápidamente a hacer kann Todavía nichts anfangen, sólo si zumindest halb así rápidamente como en el Listboxes es wäre lo akzeptabel. Meinst Si es usted el es machbar?

Saludo,
Sven
 
10.11.2004  
 



Posesiones folgendes en el Win32.hlp gefunden, podría lo sin embargo no erfolgreich en un Función oder Message umsetzen.

LVM_FINDITEM
wParam = (WPARAM) (int) iStart;
lParam = (LPARAM) (const LV_FINDINFO FAR *) plvfi;

// Corresponding macro
int ListView_FindItem(HWND hwnd, int iStart,
const LV_FINDINFO FAR* plvfi);

The LVM_FINDITEM mensaje searches for a list view item with the specified c
haracteristics. You can send this mensaje explicitly or by using the ListVi
ew_FindItem macro.

Parámetros

hwnd

Handle to the list view control.

iStart

Index of the item to begin the search with or -1 to start from the beginnin
g. The specified item is itself excluded from the search.

plvfi

Pointer to a LV_FINDINFO structure that contains information about what to
search for.
Volver Value

Returns the index of the item if successful or -1 otherwise.

Yo halte lo para unwahrscheinlich aber tal vez bremst auch el Befehl GetLines(box&) el todo Sache? Liest el Befehl sólo una Valor de oder muss él cada veces el Zeilen de 0 a Ende durchzählen?
 
10.11.2004  
 



¡Hola Sven,

me está nie aufgefallen, el el Befehl así langsam ser se...
Wahrscheinlich benötigt el Sistema länger, Daten de una Listview a lesen, como de Listboxen. Sombrero sí en el Regelfall auch mehrere Spalten.

Und el Listview strebt danach, beim löschen oder einfügen uno Eintrags el Listview a aktualisieren. Das kostet enorm Tiempo, kann aber ligeramente abgestellt voluntad

SendMessage(listview&,11,0,0) Neuaufbau des Listviews SendMessage(li
stview&,11,1,0) Wiederaufbau des Listviews (standart).[/CODE

Yo glaube auch, du versuchst dein Problema verkehrt a lösen.
Yo sería lo así hacer, el Yo el 20000 Zeilen einfügen sería y para Sch
luss sólo con DeleteDoubleItems() todos doppelten Einträge löschen sería. So
:

[CODE]SendMessage(listview&,11,0,0) Neuaufbau des Listviews verhinde
rn !

Whileloop GetColumns(listview&)
DeleteDoubleItems(listview&,(&loop-1))
EndWhile

SendMessage(listview&,11,1,0) Wiederaufbau des Listviews (standart).

Teste veces...
Saludo, Franco
 
10.11.2004  
 



Nochmal...

¡Hola Sven,

me está nie aufgefallen, el el Befehl así langsam ser se...
Wahrscheinlich benötigt el Sistema länger, Daten de una Listview a lesen, como de Listboxen. Sombrero sí en el Regelfall auch mehrere Spalten.

Und el Listview strebt danach, beim löschen oder einfügen uno Eintrags el Listview a aktualisieren. Das kostet enorm Tiempo, kann aber ligeramente abgestellt voluntad

SendMessage(listview&,11,0,0) Neuaufbau des Listviews
SendMessage(listview&,11,1,0) Wiederaufbau des Listviews (standart).

Yo glaube auch, du versuchst dein Problema verkehrt a lösen.
Yo sería lo así hacer, el Yo el 20000 Zeilen einfügen sería y para Sch
luss sólo con DeleteDoubleItems() todos doppelten Einträge löschen sería. So:

SendMessage(listview&,11,0,0) Neuaufbau des Listviews verhindern !

Whileloop GetColumns(listview&)
DeleteDoubleItems(listview&,(&loop-1))
EndWhile

SendMessage(listview&,11,1,0) Wiederaufbau des Listviews (standart).

Teste veces...
Saludo, Franco
 
10.11.2004  
 



¡Hola Franco, danke para el rasche Antwort.

Sombrero hay algo a sagen, dass DeleteDoubleItems() en el Ayuda no dokumentiert es? Beim Löschen doppeler Einträge se sólo una Column berücksichtigt voluntad. Tauchen en Spalte 1 Doppelte Einträge en así debería Sie gelöscht voluntad, igual qué en el otro Spalten es.

Como encima längere Tiempo veces mehr y veces weniger Zeilen eingefügt voluntad, se el Aktualisierung eigentlich siempre inmediatamente stattfinden y doppelte Zeilen a keiner Tiempo en el Liste ser. Es auch no el Aktualsierung, el largo braucht pero sólo el SearchText() Notfalls muss Yo eben doch al Ende encima una Double Befehl hacer, y mich con el doppelten Zeilen a dahin abfinden. Falls el Befehl auch spaltenweise funktioniert - hast du dazu una Concepto?

Sven
 
10.11.2004  
 



Hi,

> ¡Hola Franco, danke para el rasche Antwort.
>
> Sombrero hay algo a sagen, dass DeleteDoubleItems() en el Ayuda no dokumentiert es?

Hmm, en meiner Ayuda Es el Función erklärt...
Hast du veces una Actualización gemacht ?

> Beim Löschen doppeler Einträge se
> sólo una Column berücksichtigt voluntad. Tauchen en Spalte 1 Doppelte Einträge en así debería Sie gelöscht voluntad, igual qué
> en el otro Spalten es.

Noch einfacher, entonces kannst du el Whileloop-Bucle sí weglassen.

>
> Como encima längere Tiempo veces mehr y veces weniger Zeilen eingefügt voluntad, se el Aktualisierung eigentlich siempre inmediatamente stattfinden
> y doppelte Zeilen a keiner Tiempo en el Liste ser.

Dann baust du DeleteDoubleItems eben häufiger una. Anstatt a prüfen, si el Eintrag doppelt es, benutzt du DeleteDoubleItems.

> Es auch no el Aktualsierung, el largo braucht pero sólo
> el SearchText() Notfalls muss Yo eben doch al Ende encima una Double Befehl hacer, y mich con el doppelten Zeilen
> a dahin abfinden.

Como ya he dicho, kontinuierlich einbauen...

> Falls el Befehl auch spaltenweise funktioniert - hast du dazu una Concepto?

Hab Yo sí ya dijo.
Hier Es el Syntax:

DeleteDoubleItems(H,S)

Löscht todos doppelt oder mehrfach vorkommen Itemtexte en uno Spalte uno Listviews.

H : Largo - Handle uno con CreateListview() erstellten Listview Controls
S : Largo - Index el Spalte de H, deren mehrfach vorkommende Itemtexte gelöscht voluntad debería (nullbasierend)

Un schnelle y bequeme Método, doppelte, o. mehrfache Einträge a löschen.
Um una komplettes Listview así a bearbeiten, necesario todos Spalten durchlaufen voluntad, z.B. así:

SendMessage(listview&,11,0,0) Neuaufbau des Listviews verhindern !

Whileloop GetColumns(listview&)
DeleteDoubleItems(listview&,(&loop-1))
EndWhile

SendMessage(listview&,11,1,0) Wiederaufbau des Listviews (standart).

Saludo, Franco
 
10.11.2004  
 



¡Hola Franco,
Yo denke Yo habs kapiert. Yo mache lo sin SearchText y bin esta todavía 3veces más rápido como con el Listbox Versión.

Listbox inmediatamente en doppelte Prüfen: 3:30 Minuten
Listbox sin Prüfung: < 1 Minute

ListView inmediatamente en doppelte Prüfen: > 20 Minuten
Listbox sin Prüfung: ca. 1 Minute

Damit kann Yo leben!

Nur desafortunadamente gibts el DeleteDouble Befehl en el aktuellen Paket no. Yo bin auch bastante verwirrt lo que el Versión y Ayuda Archivos angeht.

Aktueller Descargar:

Versión 1.5
Letzter Stand: 25.Nov.2003
Función unbekannt: DeleteDoubleItems

Ayuda en el Web:

Versión 1.6
Letzter Stand: 25.Nov.2003
DeleteDoubleItems() en Ayuda aufgeführt

Jetzt bin Yo aber verwirrt! Wo bekomme Yo el Versión 1.6,
qué es salvo el DeleteDoubleItems todavía dazu gekommen y
por qué es el Entwicklungsstand auch 25.Nov.2003 como en
el 1.5.

Saludo,
Sven
 
10.11.2004  
 



Hi,

ah, como tener Yo wohl Mist gebaut.
Yo werd dir el neue Dll-Versión veces así zuschicken, por Mail.
Das Actualización kommt entonces, si todavía algunos Características dazgekommen son.

Saludo, Franco
 
10.11.2004  
 



Wo hay porque el Versión 1.6 ?
Auf el Website finde Yo sólo el 1.5

Gruss Dirk
 
10.11.2004  
 



Hi,

sí, 1.5 es el letzte Actualización.
1.6 Beta es el Arbeitstitel meiner Dll-Versión, a el Yo actualmente sporadisch arbeite. Bisher Yo lo así mantenido, el una neues Actualización es, sobald algunos neue Características dazugekommen son. Und así lo auch weiterhin bleiben.
Wann genau el 1.6 Actualización ahora erscheint, blanco Todavía no, sicherlich aber todavía dieses Jahr.

Saludo, Franco
 
10.11.2004  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

5.125 Views

Untitledvor 0 min.

Themeninformationen

Dieses Thema ha 1 subscriber:

unbekannt (10x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie