ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
3909
3909
EMPFEHLEN
-
Servus,
Habe ein ListView das mir die installierte Software des PCs ausgibt.
Hin und wieder treten doppelte Einträge auf. Wie kann ich diese löschen bzw. ignorieren in meinem Fall
Ein Ansatz von mir in rot:
Private Sub Form_Load()
Dim SO As SearchOptions
Dim Gefunden() As String
Dim i As Integer
Dim Daten() As String
Dim DisplayName As String
Dim RegKey As String
Dim Folder As String
Dim itemX As ListItem
' Registry in der die deinstallierbare Software aufzufinden ist
RegKey = "Software\Microsoft\Windows\CurrentVersion\Uninstall\"
With ListView1
.ListItems.Clear
.Sorted = True
.SortKey = 0
.SortOrder = lvwAscending
' Alle Einträge im Schlüssel
' Software\Microsoft\Windows\CurrentVersion\Uninstall ermitteln
With SO
.HowToSearch = StringExists
.SearchMainKey = HKEY_LOCAL_MACHINE
.SearchString = "DisplayName"
.StartSearchPath = RegKey
.SearchSubfolders = True
.FindKeys = True
.FindValueNames = True
.FindValues = True
End With
' Suche starten
FindString SO, Gefunden
On Error Resume Next
For i = 0 To UBound(Gefunden)
Daten = Split(Gefunden(i), vbCrLf)
' SubKey definieren
Folder = Mid$(Daten(0), InStrRev(Daten(0), "\") + 1)
DisplayName = Get_ValueString(HKEY_LOCAL_MACHINE, _
RegKey & Folder, "DisplayName")
If DisplayName = "" Then DisplayName = Folder
' ListView1 Daten in ein .txt schreiben
Dim Filenum As Integer
Dim j As Integer
' Doppelte Einträge ignorieren
Dim neuerEintrag As String
Dim doppelt As Boolean
Dim d As Long
neuerEintrag = "Eintrag"
doppelt = False
For d = 0 To ListView1.ListItems.Count
If ListView1.ListItems(d) = neuerEintrag Then doppelt = True
Next d
If doppelt = False Then ListView1.ListItems.Add (neuerEintrag)
' Ausgelesene Daten in ein .txt File schreiben
Filenum = FreeFile
Open "C:\" & GetDomain & "_software.txt" For Output As #Filenum
For j = 0 To ListView1.ListItems.Count
Print #Filenum, ListView1.ListItems(j).Text
Next j
Close #Filenum
Set itemX = .ListItems.Add(, Daten(0), DisplayName)
itemX.SubItems(1) = Daten(2)
Next i
End With
End Sub
DANKE für jede Hilfe!
Gruß alex
-
Der Startindex bei den Items des ListView-Control liegt bei 1 und nicht bei Null.
Probier es mal so:Code :1 2 3 4 5 6 7 8 9 10 11
Dim strNeuerEintrag As String strNeuerEintrag = "Mein neuer Eintrag" Dim blnDoppelt As Boolean Dim lngZähler As Long For lngZähler = 1 To ListView1.ListItems.Count If Me.ListView1.ListItems(lngZähler).Text = strNeuerEintrag Then blnDoppelt = True Exit For End If Next If Not blnDoppelt Then ListView1.ListItems.Add , , strNeuerEintrag
Geändert von Shakie (19.02.05 um 10:15 Uhr)
hihi = -h²
-
Habe deinen Code wie oben angegeben eingefügt, jedoch leider keine Wirkung.
Was ist mit "Mein neuer Eintrag gemeint" ... muss ich statt dem etwas einfügen oder wat
DANKE.
cya
-
Du musst logischerweise in die Variable "strNeuerEintrag" den Text des zu erstellenden Eintrags reinschreiben. Ich weiß ja nicht wie der Eintrag bei dir heißt, deswegen habe ich einfach "Mein neuer Eintrag" verwendet.
hihi = -h²
-
Hallo,
"mein neuer Eintrag" ist der String, den Du neu eintragen willst, also der Softwareeintrag, von dem Du nicht weißt, ob er doppelt ist.
Shakie: Wie kirege ich die tollen Code-Frames in meine Antworten?
Gruß
Fingers
-
@Fingers: Mit [Code] und [/Code ] (ohne Leerzeichen), kannst du auch alles hier nachlesen: http://www.tutorials.de/misc.php?do=bbcode
hihi = -h²
-
Wenn ich mich nicht irre, müsst ihr hierbei bedenken daß nach dem Löschen eines ListItems das Steuerelement modifiziert wurde und damit die Schleife
Code :1
For i = 1 To frmSonstWas.lvSonstWas.ListItems.Count
einen geänderten Wert hat. Sonst kommt es zu Fehlermeldungen (berechtigterweise).__________________
Look busy. Jesus is coming.
Ähnliche Themen
-
ANT: Doppelte Einträge in Datei löschen?
Von rantanohneplan im Forum JavaAntworten: 1Letzter Beitrag: 01.07.08, 13:53 -
doppelte Einträge löschen
Von piti66 im Forum PHPAntworten: 3Letzter Beitrag: 03.01.06, 15:29 -
doppelte Einträge löschen
Von piti66 im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 29.12.05, 11:43 -
doppelte Einträge löschen
Von piti66 im Forum PHPAntworten: 1Letzter Beitrag: 29.12.05, 11:18 -
doppelte einträge in db löschen
Von starter/or_not im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 30.12.01, 14:29





Zitieren
Login




