Bestimmte Zeilen aus Textdatei löschen

olek

Mitglied
Servus an Alle!

Habe ein Progi das nun die Software ausliest und in ein txt File schreibt.
Dabei kommt u.a. folgendes raus:

InstallShield for Microsoft Visual C++ 6
JCreator Pro_is1
KB834707
KB867282
KB873333
KB873339
Macromedia Shockwave Player
Magic ISO Maker v4.6 (build 0120)
{05BB2EC5-6BEF-4DDC-9E75-BEE7B161157A}
{0BEDBD4E-2D34-47B5-9973-57E62B29307C}
{0D396571-7BBD-44CE-ABB3-518BF86B72F7}
{1526D87C-A955-4FAB-BF18-697BA457E352}

KB.... sind die Windows Updates und { ... } sind glaube ich Update Backups von Windows oder so.
Wie schafft man es das man die Software die KB .... und {..} ausgibt nicht mit in die Liste nimmt?
Man müsst also in der Schleife in der z.B. ausgegeben wird alle Werte die mit KB beginnen oder die Klammern {} enthalten ausschließen
Kann dann natürlich sein dass zufällig eine Software mit KB beginnt aber dies nehm ich gerne in Kauf da dies ohnehin sehr selten vorkommt.

Wie kann ich das nun in meinem Code realisieren sodass KB ... und {...} nicht mehr in das Textfile aufgenommen werden?

Mein vörläufiger Code:

Private Sub Form_Load()
' Liste der deinstallierbaren Software
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

RegKey = "Software\Microsoft\Windows\CurrentVersion\Uninstall"

With ListView1
.ListItems.Clear

'Durchsuchen der Registry wird benötigt! (siehe Module1)

' 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 = False
.FindValueNames = True
.FindValues = False
End With

' Suche starten
FindString SO, Gefunden
On Error Resume Next
For I = 0 To UBound(Gefunden)
Daten = Split(Gefunden(I), vbCrLf)

' SubKey
Folder = Mid$(Daten(0), InStrRev(Daten(0), "\") + 1)

' DisplayName ermitteln
DisplayName = Get_ValueString(HKEY_LOCAL_MACHINE, _
RegKey & "\" & Daten(1), "DisplayName")
If DisplayName = "" Then DisplayName = Folder

' ListView1 Daten in ein .txt schreiben
Dim Filenum As Integer
Dim j As Integer
Dim strLine As String

Filenum = FreeFile
Open "C:\software.txt" For Output As #Filenum
For j = 0 To ListView1.ListItems.Count - 1
Print #Filenum, ListView1.ListItems(j).Text
Next j
Close #Filenum


Set itemX = .ListItems.Add(, Daten(0), DisplayName)
'für 2. unnötige Spalte die mehr Informationen ausgeben würde
'itemX.SubItems(1) = Daten(2)
Next I
End With
End Sub


Eine bisherige Lösung war:
if not left(string,2) = "KB" then
'Schreibe Daten
end if

und

if left(string,1) <> "{" AND right(string,1) <> "}" then
'schreibe
end if

Es kommt jedoch ein Compile Error beim Beistrich: ( Expected
Wo muss ich diese Ausschlüsse in meinem Code eingeben damit es klappt?
Bzw. klappt des überhaupt mit der bisherigen Lösung?

DANKE für jede Hilfe im Voraus!

mfg
alex
 
Zurück