Es ist oft schwierig einen Rahmen wieder zu finden, auch wenn man die Bezeichnung kennt. Einfacher wäre es, wenn die Rahmen alphanumerisch sortiert wären. Genau dieses leistet das folgende VB-Skript.
Das Skript wird wie üblich eingebunden:
- Mit F11 den FFSkript-Editor öffnen
- Den Code einfügen
- VBScript aktivieren
- Speichern (Name z.B. MFDL_Sort)
- Automatisch Konfigurieren
- FF schließen und wieder starten
- Bei den Skripten findet man jetzt unter Rahmen 'MFDL-Rahmen sortieren'
Es wird empfohlen vor Anwendung von der Rahmendatei MFDL.cfg im Skriptverzeichnis vom FF-Programmverzeichnis eine Sicherheitskopie anzulegen.
Man kann jetzt auch dafür sorgen, dass die persönlichen Favoriten immer am Anfang der Liste angezeigt werden. Man braucht einen Rahmen nur nochmals abzuspeichern und dem Namen z.B. -A- vor zu setzen, dem nächsten Rahmen -B- u.s.w.. Nach einem Sortiervorgang stehen die Favoriten am Anfang. Nicht vergessen die doppelten Rahmen zu löschen.
Man kann natürlich auch die Datei MFDL.cfg direkt editieren und dann sortieren.
--------------------------------------------------------------------------------
Am 30.10.06 leicht modifizierte Version 1.04 eingebracht.
Update von 1.03 ist nicht unbedingt nötig.
--------------------------------------------------------------------------------
Am 26.01.2007 neue Version 1.05 eingebracht.
Leerzeilen in der Rahmenliste werden sicher gelöscht
und Ä, Ö, Ü, ä, ö, ü als Anfangsbuchstabe werden sortiert wie Ae,Oe,Ue,ae,oe,ue
--------------------------------------------------------------------------------
Am 06.04.2007 neue Version 1.06
Berücksichtigung des neuen Einstellpfads ab V2.84 B86
--------------------------------------------------------------------------------
Code:
'FFSubmenu=Rahmen
'FFName=MFDL-Rahmen sortieren
'*************************************************************************
'*** Script MFDLsort.vbs zum Sortieren der FF-Rahmendatei MFDL.cfg ***
'*** Version 1.06 / 06.04.2007 - Pfadanpasuung für Version 2.84 ab B86 ***
'*** Version 1.05 / 12.12.2006 - Leerzeilen werden gelöscht ***
'*** Copyright (C) Harald Maeckler, Düsseldorf ***
'*************************************************************************
'*** Parameter *****************************************************************************
Const KleinGross = True '= True bedeutet Klein- werden wie Großbuchstaben behandelt *
' '= False heißt Sortierung erst nach A-Z und dann nach a-z *
Const UmlautVerm = True '= True bedeutet Ä, Ö, Ü, ä, ö, ü als Anf.Buchst. werden sortiert *
' wie Ae,Oe,Ue,ae,oe,ue *
' '= False bedeutet, dass der Anfangsbuchstabe unverändert bleibt und *
' Rahmen mit Umlauten beginnend nach hinten sortiert werden *
'********************************************************************************************
'Definitionen
Dim Quelldatei 'Rahmendatei
Dim Ziel_Datei 'temporäre Zieldatei
Dim objFS 'Filesystem-Objekt
Dim Antwort 'Antwort auf Anfrage
Dim SortText 'TextDatei
Dim x, Y 'Zählvariable
Dim ZB 'Zufallsbuchstabe
Dim Feld() 'Array
Dim tmpString 'Temporärer String
Dim VString 'Vergleichsstring
Dim Eingetragen 'True or False - Rahmen wurde eingetragen
Dim AB 'Anfangsbuchstabe
Dim ABn 'Anfangsbuchstabe neu
Dim Pos 'Position
Dim Anzahl
'Konstanten
Const ForReading = 1, ForWriting = 2
'Festlegungen
Quelldatei = FF_GetScriptPath() & "\MFDL.cfg"
'msgbox Quelldatei
Ziel_Datei = FF_GetScriptPath() & "\MFDL.tmp"
'*************************************************************************
Set objFS = CreateObject("Scripting.FileSystemObject") 'FileSytemObject
'Prüfen ob Rahmendatei MFDL.cfg vorhanden ist
If not (objFS.FileExists(Quelldatei)) Then
MsgBox "Die Rahmendatei" & vbCr & Quelldatei & vbCr & "wurde nicht gefunden!" _
& vbCr & "Der Vorgang wird abgebrochen!"
else
'Abfragen ob Sortiervorgang gestartet werden soll
Antwort = MsgBox ("Es wird dringend empfohlen vor dem Sortieren eine Sicherheitskopie der Datei" _
& vbCr & Quelldatei & " anzulegen." & vbCr & vbCr _
& "Soll jetzt der Sortiervorgang gestartet werden?", vbYesNo , "Sicherheitsabfrage")
if Antwort = vbYes then
Call FeldFuellung
Call QuickSort(LBound(Feld), UBound(Feld))
Call RahmenSort_Datei
Call Umbenennung
Erase Feld
MsgBox "Der Sortiervorgang ist abgeschlossen!" _
& vbCr & "Es wurden " & Anzahl & " Rahmen sortiert.", vbOK, "Mitteilung"
end if
end if
'*************************************************************************
Sub FeldFuellung()
'Füllung des Arrays mit Zeilen aus TextDatei
Set SortText = objFS.OpenTextFile(Quelldatei, ForReading)
x = 0
Do
tmpString = SortText.ReadLine
if instr(tmpString,"#") = 1 then
x = x + 1
end if
Loop Until SortText.AtEndOfStream
SortText.Close
Redim Feld(x)
Set SortText = objFS.OpenTextFile(Quelldatei, ForReading)
y = 0
Do
tmpString = SortText.ReadLine
if instr(tmpString,"#") = 1 then
if UmlautVerm then 'Umlautvermeidung?
AB = mid(tmpString,2,1)
if instr("Ö-Ä-Ü-ö-ä-ü",AB) then
select case AB
case "Ä" ABn = "Ae"
case "Ö" ABn = "Oe"
case "Ü" ABn = "Ue"
case "ä" ABn = "ae"
case "ö" ABn = "oe"
case "ü" ABn = "ue"
case else
end select
tmpString = "#" & ABn & mid(tmpString,3) & "\" & AB
'msgbox tmpString
end if
end if
If KleinGross then Feld(y) = Ucase(tmpString) else Feld(y) = tmpString 'mit Ucase?
y = y + 1
end if
Loop Until SortText.AtEndOfStream
SortText.Close
End Sub
'*************************************************************************
Sub QuickSort(ByVal LB, ByVal UB)
'Sortieren des Arrays 'Feld'
Dim P1, P2, Ref, TEMP
P1 = LB
P2 = UB
Ref = Feld((P1 + P2) / 2)
Do
Do While Feld(P1) < Ref
P1 = P1 + 1
Loop
Do While Feld(P2) > Ref
P2 = P2 - 1
Loop
If P1 <= P2 Then
TEMP = Feld(P1)
Feld(P1) = Feld(P2)
Feld(P2) = TEMP
P1 = P1 + 1
P2 = P2 - 1
End If
Loop Until P1 > P2
If LB < P2 Then Call QuickSort(LB, P2)
If P1 < UB Then Call QuickSort(P1, UB)
End Sub
'*************************************************************************
Sub RahmenSort_Datei()
'Erzeugung der sortierten Rahmendatei
Set SortText = objFS.OpenTextFile(Quelldatei, ForReading)
Set ZielText = objFS.CreateTextFile(Ziel_Datei, True)
For y = 0 to x
if instr(Feld(y),"#") = 1 then
Anzahl = Anzahl +1
Pos = instr(Feld(y),"\")
if Pos > 0 then 'Korrektur bei Umlauten
AB = right(Feld(y),1)
Feld(y) = "#" & AB & mid(Feld(y),4,Pos-4)
'msgbox Feld(y)
end if
Set SortText = objFS.OpenTextFile(Quelldatei, ForReading)
Do
tmpString = SortText.ReadLine
if KleinGross then VString = Ucase(tmpString) else VString = tmpString 'mit Ucase?
if VString = Feld(Y) then
ZielText.WriteLine tmpString
Do
tmpString = SortText.ReadLine
if left(tmpString,1) <> " " and left(tmpString,1) <> vbCr then 'korrigiert am 7.4.07
'if len(tmpString) > 0 then 'wegen Leerzeilen
if instr(tmpString,"#") = 1 then
Eingetragen = True
exit do
end if
ZielText.WriteLine tmpString
end if
Loop Until SortText.AtEndOfStream
end if
if Eingetragen then
Eingetragen = False
exit do
end if
Loop Until SortText.AtEndOfStream
SortText.Close
End if
Next
ZielText.Close
End Sub
'*************************************************************************
Sub Umbenennung ()
'Kopieren der sortierten Datei auf die Ursprungsdatei
objFS.CopyFile Ziel_Datei, Quelldatei, True
objFS.DeleteFile (Ziel_Datei)
End Sub
'*************************************************************************
- Mit F11 den FFSkript-Editor öffnen
- Den Code einfügen
- VBScript aktivieren
- Speichern (Name z.B. MFDL_Sort)
- Automatisch Konfigurieren
- FF schließen und wieder starten
- Bei den Skripten findet man jetzt unter Rahmen 'MFDL-Rahmen sortieren'
Es wird empfohlen vor Anwendung von der Rahmendatei MFDL.cfg im Skriptverzeichnis vom FF-Programmverzeichnis eine Sicherheitskopie anzulegen.
Man kann jetzt auch dafür sorgen, dass die persönlichen Favoriten immer am Anfang der Liste angezeigt werden. Man braucht einen Rahmen nur nochmals abzuspeichern und dem Namen z.B. -A- vor zu setzen, dem nächsten Rahmen -B- u.s.w.. Nach einem Sortiervorgang stehen die Favoriten am Anfang. Nicht vergessen die doppelten Rahmen zu löschen.
Man kann natürlich auch die Datei MFDL.cfg direkt editieren und dann sortieren.
--------------------------------------------------------------------------------
Am 30.10.06 leicht modifizierte Version 1.04 eingebracht.
Update von 1.03 ist nicht unbedingt nötig.
--------------------------------------------------------------------------------
Am 26.01.2007 neue Version 1.05 eingebracht.
Leerzeilen in der Rahmenliste werden sicher gelöscht
und Ä, Ö, Ü, ä, ö, ü als Anfangsbuchstabe werden sortiert wie Ae,Oe,Ue,ae,oe,ue
--------------------------------------------------------------------------------
Am 06.04.2007 neue Version 1.06
Berücksichtigung des neuen Einstellpfads ab V2.84 B86
--------------------------------------------------------------------------------
Zuletzt bearbeitet: