1. Diese Seite verwendet Cookies. Wenn Sie sich weiterhin auf dieser Seite aufhalten, akzeptieren Sie unseren Einsatz von Cookies. Weitere Informationen

Allgemein MFDL-Rahmen sortieren 3.01

Das Skript sortiert MFDL-Rahmen

  1. Mecki14

    Mecki14 Mitglied

    Dabei seit:
    15.03.06
    Beiträge:
    2.416
    Zustimmungen:
    10
    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.

    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
    
    '*************************************************************************
    
    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

    --------------------------------------------------------------------------------
     
    #1 Mecki14, 26.10.06
    Zuletzt bearbeitet: 07.04.07
  2. Irene

    Irene Mitglied

    Dabei seit:
    10.08.05
    Beiträge:
    1.609
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    genau dieses alphabetische Sortieren habe ich mir auch schon gewünscht.

    Da ich aber mit solchen Installationen etwas unsicher bin, warte ich jetzt einfach mal, bis von irgendwoher der Ruf kommt "klappt bestens" ;D

    Mit anderen Worten, ich hätte gerne "Vorkoster" ;)
     
  3. HeiM

    HeiM Mitglied

    Dabei seit:
    08.04.03
    Beiträge:
    5.350
    Zustimmungen:
    3
    AW: MFDL-Rahmen sortieren

    Feigling... (uuiii....und unter den Tisch):) :-*
     
  4. Irene

    Irene Mitglied

    Dabei seit:
    10.08.05
    Beiträge:
    1.609
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    ha ha ha, Heinz, du kennst mich doch inzwischen.
    Ich lasse mich gerne als Feigling bezeichnen ;D ;D ;D - damit habe ich kein Problem.
    Aber wenn ich nicht damit zurecht komme, dann bekommst du vielleicht wieder ein Problem, gelle ;)
     
  5. gope

    gope Mitglied

    Dabei seit:
    28.10.03
    Beiträge:
    883
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    Trau dich einfach, Irene.
    Ich habs grad gemacht. Die Sortierung funktioniert tadellos, d.h. alle Rahmen sind alphanumerisch geordnet worden.

    Peter
     
  6. Rodrigo

    Rodrigo Mitglied

    Dabei seit:
    25.05.03
    Beiträge:
    144
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    Hat geklappt. Danke!

    Grüße aus dem Markgräflerland

    Rüdiger
     
  7. cooper

    cooper Mitglied

    Dabei seit:
    07.09.06
    Beiträge:
    5
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    Hallo,
    habe gerade das neue Script auch einmal ausprobiert und denke das die Rahmen deren Name mit einem Kleinbuchstaben beginnt nicht alphabetisch einsortiert werden.

    Grüße Martin
     
  8. Mecki14

    Mecki14 Mitglied

    Dabei seit:
    15.03.06
    Beiträge:
    2.416
    Zustimmungen:
    10
    AW: MFDL-Rahmen sortieren

    Hallo Cooper,

    Ich habe es gerade ausprobiert und tatsächlich festgestellt, dass es mit den Kleinbuchstaben nicht funktioniert. Das Problem wird mich beschäftigen.

    Um die Favoriten nach vorne zu bekommen, ist es am besten, den Namen eine Nummerierung mit immer gleicher Stellenzahl voranzustellen, z.B. 001-, 002-, 003- usw..
     
  9. Mecki14

    Mecki14 Mitglied

    Dabei seit:
    15.03.06
    Beiträge:
    2.416
    Zustimmungen:
    10
    AW: MFDL-Rahmen sortieren

    Hallo Cooper,
    die Sortierung ist doch richtig.
    Sie erfolgt nach dem ASCII-Zeichensatz. Dort ist die Reihenfolge:
    - die Sonderzeichen [Leer],!,",#,$,%,&,',(,),*,+,,,-,/
    - die Ziffern 0 bis 9
    - die Sonderzeichen :,;,<,=,>,?,@
    - die Großbuchstaben A bis Z (ohne Ä,Ö,Ü)
    - die Sonderzeichen [,\,],^,_,`
    - die Kleinbuchstaben a bis z (ohne ä,ö,ü)
    - weitere Sonderzeichen
    - Ä, Ö, Ü
    - weitere Sonderzeichen
    - ä, ö, ü

    So ist es auch zu erklären, dass z.B. der Ölbildrahmen nach der Sortierung immer noch am Ende steht; es sei denn man versieht ihn mit einem entsprecheden Vorspann.
     
  10. cooper

    cooper Mitglied

    Dabei seit:
    07.09.06
    Beiträge:
    5
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    Ah, das erklärt die Reihenfolge natürlich. Ich werde einfach die Kleinbuchstaben zu Grossbuchstaben machen und Ö zu OE. Ich tue mich damit leichter da mein Gehirn nicht nach ASCII-Regeln denkt ;)
     
  11. Niels1938

    Niels1938 Mitglied

    Dabei seit:
    15.05.03
    Beiträge:
    1.662
    Zustimmungen:
    1
    AW: MFDL-Rahmen sortieren

    Hallo Mecki14,

    Ich glaube deine Erklärung über Sortierliste ist nicht ganz korrekt, ist es nicht so,
    dass es wie gewöhnlich in Windows wird nach ANSI sortiert, in den Reihenfolge du schreibst,
    und dass es nicht ganz das selbe ist wie in ASCII , die zB bei DOS verwendet wird ??

    Grüsse,
     
  12. Mecki14

    Mecki14 Mitglied

    Dabei seit:
    15.03.06
    Beiträge:
    2.416
    Zustimmungen:
    10
    AW: MFDL-Rahmen sortieren

    Version 1.03

    Da die Handhabung sicher einfacher ist, wenn Klein- und Großbuchstaben gleich behandelt werden, werden in der neuen Version Klein- wie Großbuchstaben behandelt. Setzt man den Parameter KleinGross = False gilt wieder die alte Sortierreihenfolge.
    Außerdem wird am Ende die Anzahl der sortierten Rahmen angezeigt.
    Alle Änderungen sind im Code ganz oben bereits berücksichtigt.

    Übrigens, Niels 1938,
    ich bin mir nicht sicher ob nach ANSI sortiert wird, da in den MICROSOFT-Erläuterungen zu WINDOWS-Skript nur die ASCII-Tabelle angezeigt wird. Für den normalen Anwender ist diese Diskussion aber sowieso nur akademisch.
     
    #12 Mecki14, 27.10.06
    Zuletzt bearbeitet: 27.10.06
  13. gope

    gope Mitglied

    Dabei seit:
    28.10.03
    Beiträge:
    883
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    Schön! Und wo ist die 1.03-Version nur zu finden. Im Zubehörbereich ist sie nicht.

    Peter
     
  14. woju

    woju Mitglied

    Dabei seit:
    26.03.04
    Beiträge:
    131
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    Hallo Peter

    siehe ganz oben

    mfg woju
     
    #14 woju, 27.10.06
    Zuletzt bearbeitet: 27.10.06
  15. gope

    gope Mitglied

    Dabei seit:
    28.10.03
    Beiträge:
    883
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    Das muss einem ja gesagt werden, dass das im ersten Post gezeigte Scipt jetzt durch ein neues ersetzt worden ist.
    Natürlich habe ich nicht auf dessen Versionsnummer geschaut - bin also selbst schuld.

    Peter
     
  16. Mecki14

    Mecki14 Mitglied

    Dabei seit:
    15.03.06
    Beiträge:
    2.416
    Zustimmungen:
    10
    AW: MFDL-Rahmen sortieren

    Hallo Irene,

    es interessiert mich brennend, ob Du Dich inzwischen getraut hast!
     
  17. vawil

    vawil Mitglied

    Dabei seit:
    04.09.04
    Beiträge:
    144
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    Ich habe meine Rahmen sortiert. So was habe ich schon lange gesucht.
    Danke

    Wilfried
     
  18. Irene

    Irene Mitglied

    Dabei seit:
    10.08.05
    Beiträge:
    1.609
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    @Mecki,
    falls du noch nicht darüber informiert wurdest - Rentner haben einfach keine Zeit ;D ;D

    Nein, ich habe es noch nicht probiert - ich brauche dazu etwas mehr Ruhe als ich sie gerade habe. Aber irgendwann mache ich mich dran ;) - es läuft mir ja gottlob nicht weg.
     
  19. Rabe

    Rabe Mitglied

    Dabei seit:
    11.11.03
    Beiträge:
    1.615
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    @Mecki,

    herzlichen Dank für das tolle Sortierskript. Es ist wirklich sehr viel schneller, seine Rahmen nach Sortierung zu finden.


    Harzliche Grüße


    (R)abe
     
    #19 Rabe, 31.10.06
    Zuletzt bearbeitet: 07.02.07
  20. Feldhas

    Feldhas Mitglied

    Dabei seit:
    18.09.05
    Beiträge:
    265
    Zustimmungen:
    0
    AW: MFDL-Rahmen sortieren

    Hallo Irene

    Gibt es dann Fotos von der Trauzeremonie?


    edy
     

Diese Seite empfehlen