Hallo allerseits, Ich hab da ein Problem bei dem ich nicht so recht verstehe warum es so ist wie es ist.
Ich hab einen Ordner in dem einige hundert Files liegen die ich gerne durchsuchen möchte. Die Files sind Logs von einer Maschine mit einem, ich sag mal, relativ kryptischen Code, however. Ich lasse den User mittels SelectFolder der Ordner auswählen und öffne dann nach und nach jede Datei. Dabei lese ich erstmal eine Datei komplett ein, formatiere mir dann den Text um mittels Split-Funktion und dann suche ich mittels InStr() nach meinem gewünschten Suchtext, der in einem Editfield steht. Hab ich den ganzen Text durchsucht wird die Datei geschlossen und die nächste wird aufgemacht. Gefundene Treffer werden in ein Multiline-Editfield geschrieben. Unter MacOS X funktioniert das alles prima, unter Windows jedoch funktioniert das nur prima, wenn es relativ wenig Treffer gibt, bei vielen Treffern (mehr als 1000, ein genauen Wert weiß ich nicht) führt dazu, dass sich das Programm weghängt. Ich schreibe das Program unter MacOS, kann unter Windows lediglich Testen ob und wie toll das Programm funktioniert. Warum das Programm allerdings so harkt weis ich nicht. Unter Windows fällt auch auf, dass er scheinbar ständig das Fenster komplett neu zeichnet...warum auch immer. Ich dachte erst, es läge am App.DoEvents. Wenn ich aber das raus mache dann ändert sich am Verhalten nix großartig, die Progressbar und so wird halt nicht aktualisiert, man sieht halt nicht wie weit er schon ist, der Rest bleibt aber, vor allem dass er sich bei vielen Treffern weghängt. Vielleicht fällt hier jemanden auf, wo der Wurm sich versteckt. Ich hab jetzt schon einige Tage nix mehr mit RB gemacht und im Moment steh ich ziemlich auf dem Schlauch. Hier der "Problem"-Code: Dim folder, file As FolderItem Dim text As TextInputStream Dim i, j, match, files As Integer Dim result(-1) As String Dim delimiter, lastfile As String files=0 delimiter = " " StaticText1(2).Text="0" EditField1(1).Text="" folder=GetFolderItem(StaticText1(0).Text) If folder <> NIL Then ProgressBar1.Maximum=folder.Count-1 For i=1 to folder.Count-1 ProgressBar1.Value=i file=folder.Item(i) text=file.OpenAsTextFile If text <> NIL Then Do result=Split(text.ReadLine(Encodings.WindowsANSI), "8 x leer ") For j = 0 To UBound(result) If InStr(result(j), EditField1(0).Text)>0 Then EditField1(1).StyledText.Text=EditField1(1).Text+Mid(folder.Item(i).Name,0,7 )+" "+Mid(result(j),0,InStr(result(j), " "))+EndOfLine If StrComp(Mid(folder.Item(i).Name,0,7),lastfile,0)<>0 Then files=files+1 End If match=match+1 lastfile=Mid(folder.Item(i).Name,0,7) If files <> 1 then StaticText1(2).Text=Str(match)+" in "+ Str(files)+" Files." Else StaticText1(2).Text=Str(match)+" in "+ Str(files)+" File." End If End If Next Redim result(-1) Loop Until text.EOF text.close App.DoEvents 1 End If Next End If PS: Ich verwende RB 5.5.3 und hab auch RB 2009 R4. Bei beiden das gleiche Problem. Grüße Michael