Hallo Clemens,
Und wie geht das jetzt mit den anderen Buchstaben? Da wirds
ein wenig komplizierter, nicht wahr?
jain, je klarer die Regel desto einfacher.
Einfach bedeutet, ersetze alle LL durch ll.
Ich habe mit nur der Punkte-Korrektur begonnen, nicht wegen evtl. komplizierten anderen Umwandlungen sondern damit du den Umgang mit den Codes „drin“ hast.
Scheinbar klappt das mit dir sehr gut, hab da schon anderes erlebt.
In der für dich wichtigen Hauptprozedur „Umwandeln“ siehst du dieses:
>b> Dim Inh As String, Datei(0) As String, D As Integer, appNB
Datei(0) = „c:\test\the sopranos s04e05.srt“
Du sagtest was von 10 Dateien o.ä. Dafür ist der Code schon vorbereitet.
Du brauchst nur diese zwei Zeilen abzuändern wenn du mehr Dateien hast.
Was gar nicht schlecht ist wenn du alle mal durch den Code jagst und dann in Notebook anschaust ob es überall gut lief.
Dazu mußt du nur, da wo Datei(0) steht, dies ersetzen durch Datei(Anzahl-1)
D.h. bei 5 Dateien muß da stehen Datei(4), also eins weniger.
Anstatt der zweiten Zeile machst du soviele Zeilen wie dateien da sind und gibst jeder einen höheren Index, beginnend bei 0, also so:
Datei(0) = „c:\test\the sopranos s04e05.srt“
Datei(1) = „c:\test\bla bla.srt“
Datei(2) = „c:\Meine Musik\Tina Turner.srt“
Datei(3) = „f:\andrerOrdner\wichtig\Ina Deter.srt“
Von meinem Blickwinkel aus ist das leicht zu verstehen, frag nach wenn ich das falsch sehe.
Ich habe jetzt miteingebaut daß LL in ll gewandelt wird und „–“ in " -", teste es und kontrolliere es bitte.
Kontrollieren bedeutet, darauf achten ob vielleicht „LLL“ mal vorkommt oder „—“, wenn ja muß ich das mit berücksichtigen, wenn nein müßte es so okay sein.
Gruß
Reinhard
Option Explicit
'
Sub Umwandeln()
Dim Inh As String, Datei(0) As String, D As Integer, appNB
Datei(0) = "c:\test\the sopranos s04e05.srt"
For D = LBound(Datei) To UBound(Datei)
Inh = Einlesen(Datei(0))
Inh = Punkte(Inh)
Inh = Ersetzen(Inh)
Call Schreiben(Inh, Replace(Datei(0), ".srt", "a.srt"))
appNB = Shell("notepad.exe " & Replace(Datei(0), ".srt", "a.srt"))
Next D
End Sub
'
Function Einlesen(Datei) As String
Dim FF As Long
FF = FreeFile
Einlesen = Space(FileLen(Datei))
Open Datei For Binary As #FF
Get #FF, , Einlesen
Close #FF
End Function
'
Sub Schreiben(ByVal Inh As String, ByVal Datei As String)
Dim FF As Integer
FF = FreeFile
Open Datei For Binary As #FF
Put #FF, , Inh
Close #FF
End Sub
'
Function Punkte(ByVal Inh As String) As String
While InStr(Inh, ". .") \> 0
Inh = Replace(Inh, ". .", "..")
Wend
While InStr(Inh, "....") \> 0
Inh = Replace(Inh, "....", "...")
Wend
Punkte = Inh
End Function
'
Function Ersetzen(ByVal Inh As String) As String
Ersetzen = Replace(Inh, "LL", "ll")
Ersetzen = Replace(Ersetzen, "--", " -")
End Function