Mam 2 pliki txt(słowniki) i w nich wyrazy ustawione jeden pod drugim od A-Z
Jeden koło 3 mln, a drugi 200 tys.
W małym pliku znajdują się wyrazy, które też są w dużym.
Chciałbym z tego dużego usunąć wszystkie wyrazy, które znajdują się również w małym pliku.
Napisałem skrypt VBS, który potrzebuje na wykonanie zadania 5-6 godzin.
Dim Dostep
Dim Text1(3000000), Text2(200000), aa, bb, cc, nn, nr, Path
Set Dostep = CreateObject(“Scripting.FileSystemObject”)
Path = “B:\pl-ANSI.akp” 'ok 3 mln wyrazów
Set MyFile = Dostep.OpenTextFile(Path, 1) 'ForReading
Do While MyFile.AtEndOfStream <> True
nr = nr + 1
Text1(nr) = MyFile.ReadLine
Loop
MyFile.Close
Path = “B:\xxx.akp” 'ok 200 tys. wyrazów
Set MyFile = Dostep.OpenTextFile(Path, 1) 'ForReading
Do While MyFile.AtEndOfStream <> True
nn = nn + 1
Text2(nn) = MyFile.ReadLine
Loop
MyFile.Close
Path = “B:\pl-ANSI-AE.akp”
Set MyFile = dostep.OpenTextFile(Path, 2, True) 'ForWriting
For aa = 1 To nr
For bb = 1 + cc To nr
If Text2(bb) > Text1(aa) Then
MyFile.WriteLine Text1(aa)
Exit For
ElseIf Text2(bb) = “” Then
MyFile.WriteLine Text1(aa)
Exit For
ElseIf Text1(aa) = Text2(bb) Then
cc = cc + 1
Exit For
End If
Next
Next
MyFile.Close
Szybciej komputery przeliczają trajektorię rakiety na księżyc.
Co napisałem źle, że to taka porażka.
Błąd gdzieś tkwi w tych dwóch pętlach For.