tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von TequillaSun
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
2571
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    TequillaSun TequillaSun ist offline Mitglied
    Registriert seit
    Dec 2003
    Ort
    Köln
    Beiträge
    14
    Hallo liebe Gemeinde,
    verzeiht mir wenn ich eine schon so oft gestellte Frage nochmals stelle, doch mir stellt sich folgendes Problem:

    Ich habe zwei Textdateien | Inhalt.txt und Entfernen.txt.
    Aus diesen beiden Textdateien sollen jeweils alle Zeilen gelesen werden und bei ungleichheit in eine dritte Datei geschrieben werden. Ich hoffe, es ist bis hier hin verständlich was ich machen möchte.

    Nehmen wir an Inhalt.txt enthält zunächst zwei Zeilen mit folgendem Schema:

    Code :
    1
    2
    3
    4
    5
    
    Hallo
    Test
    ist
    gelöscht
    worden

    Und in der Entfernen.txt befindet sich dann die Zeile:
    Code :
    1
    2
    
    Hallo
    Test

    So soll in der dritten Textdatei Ausgabe.txt einfach nur:

    Code :
    1
    2
    3
    
    ist
    gelöscht
    worden
    stehen.

    Bisher löse ich es mit zwei Arrays die alle Zeilen einer Textdatei enthalten:


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    Const ForReading=1, ForWriting=2, ForAppending=8
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    set objInhalt = objFSO.OpenTextFile(C:\Inhalt.txt,1)
     
     
    strInhalt= objDuplicateFree.readAll
    aInhalt = Split(strInhalt,vbCrLf)
    .....
     
    'selbiges auch mit der Entfernen.txt
    .....
     
     
    For each Inhalt in aInhalt
      For Each Eintrag in aEntfernen
            If Inhalt <> Eintrag Then
              set objZiel=objFSO.OpenTextFile("C:\Ziel.txt", ForAppending, true)
              objZiel.WriteLine Inhalt
              objZiel.Close
            End If
      Next
    Next

    Erstes Problem:
    Die Zeilen in der Zieldatei sehen so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    Hallo
    Test
    ist
    ist
    gelöscht
    gelöscht
    worden
    worden

    Zweites Problem:
    Man sieht, dass die Zeilen noch immer vorhanden, also nicht wie gewünscht entfernt worden sind.
    -------------------------------------------------

    Ich hoffe ich konnte mein Problem gut Schildern. Wie im Titel genannt, handelt sich es um ein VBScript. Falls noch Fragen offen sind: Bitte stellen, ich versche sie zu beantworten.

    Grüße
    Patrick
     
    Darf dat dat ?
    Dat darf dat !
    Dat dat dat darf !?

  2. #2
    ronaldh ronaldh ist offline Mitglied Brillant
    Registriert seit
    Apr 2007
    Ort
    Hannover
    Beiträge
    912
    Du musst wohl nur die Logik Deiner verschachtelten Schleifen umstellen. Dazu setzt Du vorher eine Variable auf False, und dann, wenn Du einen passenden Eintrag findest auf True, und schreibst erst nach Beendigung der inneren Schleife den Satz weg, abhängig davon, ob Deine Variable nur True oder False ist.

    Grüsse
    ronaldh
     

  3. #3
    TequillaSun TequillaSun ist offline Mitglied
    Registriert seit
    Dec 2003
    Ort
    Köln
    Beiträge
    14
    Danke ronaldh für deine Antwort. Dein Tipp scheint einleuchtend zu sein, habe es ausprobiert:

    Quasi so:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    vorhanden=0
    For each Inhalt in aInhalt
      For Each Eintrag in aEntfernen
            If Inhalt = Eintrag Then
            vorhanden=1
            End If
      Next
    If vorhanden=0 then
              set objZiel=objFSO.OpenTextFile("C:\Ziel.txt", ForAppending, true)
              objZiel.WriteLine Inhalt
              objZiel.Close
    End If
    Next

    Richtig?

    Jedoch gibt mir dann der Debugger einen Fehler aus:
    Unexpected Next in Line 169, also das letzte Next für die äußere Schleife.

    Ich steh irgendwie auf dem Schlauch...
    Geändert von TequillaSun (17.11.08 um 11:16 Uhr)
     
    Darf dat dat ?
    Dat darf dat !
    Dat dat dat darf !?

  4. #4
    ronaldh ronaldh ist offline Mitglied Brillant
    Registriert seit
    Apr 2007
    Ort
    Hannover
    Beiträge
    912
    Ist das der ganze Code? Eigentlich sieht das soweit richtig aus (was die jeweiligen Schleifen anbetrifft), jedoch muss natürlich vorhanden bei jedem Durchlauf der Hauptschleife auf 0 gesetzt werden, sonst kann es ja nicht funktionieren.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    For each Inhalt in aInhalt
         vorhanden=0
         For Each Eintrag in aEntfernen
               If Inhalt = Eintrag Then
                     vorhanden=1
                     Exit For
               End If
        Next
        If vorhanden=0 then
              set objZiel=objFSO.OpenTextFile("C:\Ziel.txt", ForAppending, true)
              objZiel.WriteLine Inhalt
              objZiel.Close
        End If
    Next

    Oder gibt es noch Abfragen außerhalb der Schleifen?
     

  5. #5
    ronaldh ronaldh ist offline Mitglied Brillant
    Registriert seit
    Apr 2007
    Ort
    Hannover
    Beiträge
    912
    Ok, ich sehe gerade anhand der Mail, dass die Schleife zuerst unvollständig war, das hast Du inzwischen ja offensichtlich geändert (in meiner Mail sah die Schleife noch wie folgt aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    For each duplicate in aDuplicateFree
      For Each entry in aEntries
                     If duplicate = entry Then
                     vorhanden=1
                     End If
      Next
      If vorhanden=0 Then
             set objZiel= objFSO.OpenTextFile("C:\temp\output\Ziel.txt", 8, true)
             objZiel.WriteLine duplicate
             objZiel.Close
    Next
    Und da fehlt natürlich ein End If. Wäre schön, wenn Du den Fehler bereits gefunden hast, dann nicht nur den Code im Post zu ändern, sondern auch den Text, denn so wie die Schleife nun in Deinem Post ist, kann der Fehler ja eigentlich nicht mehr auftreten...
     

  6. #6
    TequillaSun TequillaSun ist offline Mitglied
    Registriert seit
    Dec 2003
    Ort
    Köln
    Beiträge
    14
    Ei der Daus Tut mir leid wenn vorhin ein solches hin und her war. Du hast mir ein ganzes Stück weiter geholfen. Danke noch einmal.

    Grüße
    Patrick
    ronaldh bedankt sich. 
    Darf dat dat ?
    Dat darf dat !
    Dat dat dat darf !?

  7. #7
    Vladimir6892 Vladimir6892 ist offline Grünschnabel
    Registriert seit
    Jun 2010
    Beiträge
    1
    Hi zusammen ich bin ebenfalls VBScript Anfänger und habe die Aufgabe bekommen ebenfalls zwei Listen zu vergleichen und das Resultat in eine neu erstellte dritte liste auszugeben.
    Bsp:
    Liste 1:
    Name1;Vorname1;Anmeldename1
    Name2;Vorname2;Anmeldename2

    Liste 2:
    Name1;Vorname1;E-Mail1
    Name3;Vorname3;Email3

    Liste 3 Ziel, würden dann so aussehen)
    Name;Vorname;Anmeldename;E-Mail
    Name2;Vorname2;Anmeldename2,; Noch einmal Anmeldename2, da keine E-Mail vorhanden
    Name3;Vorname3;Email3; noch einmal e-mail, da kein Anmeldename vorhanden

    Wie Ihr seht gibt es 3 Status
    -In Liste 1 und 2 vorhanden
    -Nur in Liste 1 vorhanden
    -Nur in Liste 2 vorhanden

    Die Listen können Textfiles sein und können bis zu mehreren Tausend Einträgen haben.
    Hauptsache ist die zwei Listen zu Readen und zu einer zu fusionieren(Writen)

    Ich hoffe Ihr könnt mir helfen.

    Freundliche Grüsse Vladimir
     

Ähnliche Themen

  1. Vergleich zweier Grafikkarten
    Von thomson1308 im Forum Hardware
    Antworten: 0
    Letzter Beitrag: 30.07.10, 13:43
  2. SQL Vergleich zweier Tabellen
    Von LordDarkness im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 11.07.10, 12:39
  3. Vergleich zweier Dateien
    Von RaketenPeter im Forum Java
    Antworten: 10
    Letzter Beitrag: 16.05.08, 16:22
  4. [C] Vergleich zweier SQL-Tabellen
    Von Buba235 im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 12.07.06, 12:02
  5. Vergleich zweier Quellen
    Von M-GT im Forum PHP
    Antworten: 4
    Letzter Beitrag: 10.04.06, 16:12