Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan > Anregungen & Bugreports

Anregungen & Bugreports Für Vorschläge an den Autor Roland und neue XProfan-Versionen

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Dateien lassen sich nicht...
Aufrufe: 8, Antworten: 1
Gehe zum ersten neuen Beitrag Suche Programm um Werbung zu...
Aufrufe: 39, Antworten: 2
Gehe zum ersten neuen Beitrag McAfee AVERT Stinger...
Aufrufe: 2, Antworten: 0
Gehe zum ersten neuen Beitrag Sticky Password 6.0.2...
Aufrufe: 3, Antworten: 0
Gehe zum ersten neuen Beitrag Sicher Löschen 3.19 (Windows)
Aufrufe: 2, Antworten: 0
Gehe zum ersten neuen Beitrag Cleaning Suite 2.1 (Windows)
Aufrufe: 2, Antworten: 0
Gehe zum ersten neuen Beitrag GoodSync 9.2.0.0 (Windows,...
Aufrufe: 2, Antworten: 0
Gehe zum ersten neuen Beitrag GoodSync 9.2.0.0 (Windows)
Aufrufe: 2, Antworten: 0
Gehe zum ersten neuen Beitrag Trillian 1.3.0 (37) (Mac OS X)
Aufrufe: 2, Antworten: 0
Gehe zum ersten neuen Beitrag Maxthon Browser 2.6.5...
Aufrufe: 2, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16.01.2010, 22:22   #1 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.089
Standard Doppelte Einträge entfernen

Für Listboxen, Choiceboxen & Co sollte es eine schnelle Möglichkeit geben, doppelte Einträge zu entfernen. Hierbei sollte man wählen können, ob die Klein/Großschreibung beachtet werden soll oder nicht, und ob der Suchtext einem ganzen Eintrag entsprechen soll, oder nur einem Teil davon.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.

Geändert von Frabbing (17.01.2010 um 00:15 Uhr)
Frabbing ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 17.01.2010, 10:15   #2 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.875
Lächeln

@Frank
So wäre mein Anfang - wenn ich wieder Zeit habe, mache ich weiter
Zitat:
DECLARE list1&
DECLARE anz%,I%
DECLARE txt$,txt1$

PROC DATEN01 'anstelle dieser Daten kann alles andere eingeladen werden
CLEARLIST
ADDSTRING(list1&,"1. Zeile")
ADDSTRING(list1&,"2. Zeile")
ADDSTRING(list1&,"3. Zeile")
ADDSTRING(list1&,"4. Zeile")
ADDSTRING(list1&,"5. Zeile")
ADDSTRING(list1&,"5. Zeile") 'die Zeile ist doppelt
ADDSTRING(list1&,"6. Zeile")
ADDSTRING(list1&,"7. Zeile")
ADDSTRING(list1&,"8. Zeile")
ADDSTRING(list1&,"9. Zeile")
ADDSTRING(list1&,"0. Zeile")
ENDPROC

CLS
list1&=CREATE("LISTBOX",%HWnd,"",100,20,200,300)
DATEN01
anz%=GETCOUNT(list1&)
WHILENOT I% = anz%
txt$=GETSTRING$(list1&,I%)
txt1$=GETSTRING$(list1&,(I%-1))
CASE txt1$=txt$: DELETESTRING(list1&,I%)
INC I%
ENDWHILE
WAITINPUT
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Alt 17.01.2010, 11:23   #3 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Das klappt aber nur bei sortierten Listen!
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 17.01.2010, 11:24   #4 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Du hast den Code nicht getestet! Ich auch nicht, aber probier ihn mal aus. Er müsste einen Fehler erzeugen, weil anz% größer ist als die Anzahl der Einträge, wenn ein Eintrag gelöscht wird. :P
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 17.01.2010, 11:51   #5 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.875
Lächeln

@Jac
Selber testen macht schlau !
Zitat:
So wäre mein Anfang - wenn ich wieder Zeit habe, mache ich weiter
Ich habe getestet und in diesem Codesplitter entsteht kein Fehler. Es ist ein Startcode - andere können auch mal an der Idee von Frank mitmachen.
Wenn möglich, nicht soviel API !
Es geht auch mit XProfan -
wie gesagt, habe keine Zeit im Moment
Aber ich werde "dem Schwein schon schlachten "
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 17.01.2010, 12:51   #6 (Direktlink)
Super-Moderator
 
Benutzerbild von Jac de Lad
 
Registriert seit: 06.02.2009
Ort: Coswig
Alter: 27
Beiträge: 1.159
Standard

Wenn man es aber mal lögisch überdenkt kann die Schleife nicht bis zu Ende geführt werden, wenn Eintrgeäge gelöscht werden, da GetCount(list&) dann weniger ist. Besser wäre:

Code:
DECLARE list1&
DECLARE anz%,I%
DECLARE txt$,txt1$

PROC DATEN01 'anstelle dieser Daten kann alles andere eingeladen werden
CLEARLIST
ADDSTRING(list1&,"1. Zeile")
ADDSTRING(list1&,"2. Zeile")
ADDSTRING(list1&,"3. Zeile")
ADDSTRING(list1&,"4. Zeile")
ADDSTRING(list1&,"5. Zeile")
ADDSTRING(list1&,"5. Zeile") 'die Zeile ist doppelt
ADDSTRING(list1&,"6. Zeile")
ADDSTRING(list1&,"7. Zeile")
ADDSTRING(list1&,"8. Zeile")
ADDSTRING(list1&,"9. Zeile")
ADDSTRING(list1&,"0. Zeile")
ENDPROC

CLS
list1&=CREATE("LISTBOX",%HWnd,"",100,20,200,300)
DATEN01
'anz%=GETCOUNT(list1&)
'WHILENOT I% = anz%
        whileloop Getcount(list1&)-2,0,-1
txt$=GETSTRING$(list1&,&Loop)
        txt1$=GETSTRING$(list1&,(&Loop+1))
CASE txt1$=txt$: DELETESTRING(list1&,&Loop)       
ENDWHILE
WAITINPUT
Ungetestet!

Jac
__________________
XProfan-Profi (XProfan X2+XPIA)
http://jacdelad.bplaced.net
http://jacdelad.square7.ch
Jac de Lad ist offline   Mit Zitat antworten
Alt 17.01.2010, 14:07   #7 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.776
Standard

Mmmh...
Code:
'#####################################################################################
'#########                          Code von AHT                             #########
'#########      Gepostet für http://www.paules-pc-forum.de                   #########
'#####################################################################################
declare ListBox&
 
WindowStyle 31 + 512
WindowTitle "Doppelte Listboxeinträge löschen"
Window 0, 0 - 640, 440
UserMessages $10
 
ListBox&=Create("ListBox", %HWND, "", 20, 20, 580, 330)
 
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 2")
Addstring(ListBox&, "Test 3")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 4")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 5")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 2")
Addstring(ListBox&, "Test 3")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 4")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 11")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 5")
Addstring(ListBox&, "Test 1")
Addstring(ListBox&, "Test 1")
 
Sleep 2000
 
Delete_Listox_Doubles(ListBox&)
 
While %Umessage <> $10
 Waitinput
wend
 
Proc Delete_Listox_Doubles
 Parameters LBox&
 Declare LBOXCounter&, LBOXString$, FoundLB&
 clear LBOXCounter&
 While LBOXCounter& < (GetCount(LBox&) - 1)
  LBOXString$=GetString$(LBox&, LBOXCounter&)
  FoundLB& = SendMessage(LBox&, $18F, LBOXCounter&, addr(LBOXString$))
  While FoundLB& <> LBOXCounter&
   IF (LBOXString$ = GetString$(LBox&, FoundLB&)) and (LBOXCounter& <> FoundLB&)
    DeleteString(LBox&,FoundLB&)
    FoundLB& = SendMessage(LBox&, $18F, int(FoundLB& - 1), addr(LBOXString$))
   else 
    FoundLB& = SendMessage(LBox&, $18F, FoundLB&, addr(LBOXString$))
   endif
  EndWhile
  LBOXCounter& = LBOXCounter& + 1
 EndWhile
 Return
endproc
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 17.01.2010, 14:14   #8 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Wie wäre es denn wenn man gar nicht erst einträgt was schon da ist, dann muss man es auch nicht mehr austragen

Code:
DECLARE list1&

Proc AddStringListe
Parameters Liste&,S$
If SendMessage(Liste&,$01A2,-1,Addr(S$)) = -1' LB_FINDSTRINGEXACT 
ADDSTRING(Liste&,S$)
Endif
Endproc

PROC DATEN01 'anstelle dieser Daten kann alles andere eingeladen werden
CLEARLIST
ADDSTRINGListe(list1&,"1. Zeile")
ADDSTRINGListe(list1&,"2. Zeile")
ADDSTRINGListe(list1&,"3. Zeile")
ADDSTRINGListe(list1&,"4. Zeile")
ADDSTRINGListe(list1&,"5. Zeile")
ADDSTRINGListe(list1&,"5. Zeile") 'die Zeile ist doppelt
ADDSTRINGListe(list1&,"6. Zeile")
ADDSTRINGListe(list1&,"6. Zeile") ' diese auch
ADDSTRINGListe(list1&,"7. Zeile")
ADDSTRINGListe(list1&,"8. Zeile")
ADDSTRINGListe(list1&,"9. Zeile")
ADDSTRINGListe(list1&,"0. Zeile")
ENDPROC


CLS
list1&=CREATE("LISTBOX",%HWnd,"",100,20,200,300)
DATEN01
WAITINPUT
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher
Andreas Miethe ist offline   Mit Zitat antworten
Alt 17.01.2010, 14:32   #9 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.776
Standard

...gemein, du hast dich nicht an die Fragestellung gehalten .
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 17.01.2010, 14:35   #10 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Zitat:
Zitat von AHT Beitrag anzeigen
...gemein, du hast dich nicht an die Fragestellung gehalten .


Stimmt.
Und so geht es mit genauerer Prüfung

Code:
DECLARE list1&

Proc AddStringListe
Parameters Liste&,S$,Zeile&,Comp$
Zeile& = SendMessage(Liste&,$01A2,-1,Addr(S$))' LB_FINDSTRINGEXACT 
If Zeile& = -1
ADDSTRING(Liste&,S$)
else
Comp$ = GetString$(Liste&,Zeile&)
If External("kernel32.dll","lstrcmp",Addr(Comp$),Addr(S$)) <> 0
ADDSTRING(Liste&,S$)
Endif
Endif
Endproc

PROC DATEN01 'anstelle dieser Daten kann alles andere eingeladen werden
CLEARLIST
ADDSTRINGListe(list1&,"1. Zeile")
ADDSTRINGListe(list1&,"2. Zeile")
ADDSTRINGListe(list1&,"3. Zeile")
ADDSTRINGListe(list1&,"4. Zeile")
ADDSTRINGListe(list1&,"5. Zeile")
ADDSTRINGListe(list1&,"5. Zeile") 'die Zeile ist doppelt
ADDSTRINGListe(list1&,"6. Zeile")
ADDSTRINGListe(list1&,"6. zeile") ' diese nicht !
ADDSTRINGListe(list1&,"7. Zeile")
ADDSTRINGListe(list1&,"8. Zeile")
ADDSTRINGListe(list1&,"9. Zeile")
ADDSTRINGListe(list1&,"0. Zeile")
ENDPROC


CLS
list1&=CREATE("LISTBOX",%HWnd,"",100,20,200,300)
DATEN01
WAITINPUT
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher
Andreas Miethe ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 17.01.2010, 14:41   #11 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.776
Standard

Warum musst du das genauer prüfen?
Ich glaube, deine erste Prozedur war schon so in Ordnung...
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT

Geändert von AHT (17.01.2010 um 14:47 Uhr)
AHT ist offline   Mit Zitat antworten
Alt 17.01.2010, 14:50   #12 (Direktlink)
Stammuser
 
Benutzerbild von Andreas Miethe
 
Registriert seit: 08.02.2009
Ort: Bielefeld
Alter: 53
Beiträge: 428
Standard

Nein, da wurde nicht auf Gross- Kleinschreibung geprüft.
__________________
Gruss
Andreas

______________________
http://www.ampsoft.eu

Profan 3.3 - XProfanX2
Windows 95,98,ME,2000,XP
Vista - Windows 7 32 / 64 Bit

ASUS X93S - Intel Core I7 - NVIDIA GForce GT540M - 8GB Arbeitsspeicher
Andreas Miethe ist offline   Mit Zitat antworten
Alt 17.01.2010, 15:16   #13 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Bangkok
 
Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
Standard

Also soviel ich weiß ist die Groß und Kleinschreibung bei LB_FINDSTRINGEXACT egal.
The search is not case sensitive, so this string can contain *** combination of uppercase and lowercase letters.

Aber um bei der Fragestellung zu bleiben denke ich der Code von Andreas etwas abgewandelt dürfte die schnellste Methode sein.
Code:
DECLARE list1&

Proc AddStringListe
Parameters Liste&,S$
If SendMessage(Liste&,$01A2,-1,Addr(S$)) = -1' LB_FINDSTRINGEXACT 
ADDSTRING(Liste&,S$)
Endif
Endproc

PROC DATEN01 'anstelle dieser Daten kann alles andere eingeladen werden
CLEARLIST
ADDSTRING(list1&,"1. Zeile")
ADDSTRING(list1&,"2. Zeile")
ADDSTRING(list1&,"3. Zeile")
ADDSTRING(list1&,"4. Zeile")
ADDSTRING(list1&,"5. Zeile")
ADDSTRING(list1&,"5. Zeile") 'die Zeile ist doppelt
ADDSTRING(list1&,"6. Zeile")
ADDSTRING(list1&,"6. Zeile") ' diese auch
ADDSTRING(list1&,"7. Zeile")
ADDSTRING(list1&,"8. Zeile")
ADDSTRING(list1&,"9. Zeile")
ADDSTRING(list1&,"0. Zeile")
ENDPROC


CLS
list1&=CREATE("LISTBOX",%HWnd,"",100,20,200,300)
DATEN01()
Print "Taste für Start"
waitinput
clearlist
movehandletolist(list1&)
clearlist list1&
whileloop 0,%getcount
AddStringListe(list1&,listboxitem$(&loop))
endwhile
WAITINPUT
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai.
http://dieterzornow.gmxhome.de
Bangkok ist offline   Mit Zitat antworten
Alt 17.01.2010, 15:17   #14 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.776
Standard

Ahhh - ist mir nicht aufgefallen, danke!
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT
AHT ist offline   Mit Zitat antworten
Alt 17.01.2010, 15:18   #15 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.089
Standard

Klar, meine Lösung ist ja ähnlich. Nur eben dauern diese Schleifen von der Ausführung her lange (bei vielen Einträgen), sodass eine native Lösung wünschenswert wäre. Ein DeleteDouble$(...) für Listbox/GridBox/Choicebox/Edit wäre doch klasse.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan > Anregungen & Bugreports

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
suche programm möglichst freeware, um doppelte MP3 entfernen DonChilla Software - Allgemein 8 29.05.2007 21:21
Doppelte Einträge im Kontextmenü Christian Bommers Windows 95/98/ME/2000/NT 3 17.06.2005 22:47
doppelte Dateien entfernen Jupp Software - Allgemein 8 28.03.2005 01:21
Software-einträge entfernen!? Bond Allgemein 2 11.01.2005 13:26
Aufräumen doppelte Dateien finden und entfernen Claudia. Software - Allgemein 2 07.12.2004 13:40



Alle Zeitangaben in WEZ +2. Es ist jetzt 21:58 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2