Seite 1 von 2

Schöne Ordner

Verfasst: 08.11.2005 16:41
von Batze

Code: Alles auswählen

OpenWindow(0, 0, 0, 200,  0, #PB_Window_MinimizeGadget, "Anzahl = ") 
string.s = InputRequester("Gib einen Text ein!", "Gib ein:", "")
Name.s = "C:"
For i=0 To Len(string)
  string = ReplaceString(string,      " ", "_")
  string = ReplaceString(string,      "\", "_")
  string = ReplaceString(string,      "/", "_")
  string = ReplaceString(string,      ":", ".")
  string = ReplaceString(string,      "*", "x")
  string = ReplaceString(string,      "?", "!")
  string = ReplaceString(string, Chr('"'), "''")
  string = ReplaceString(string,      "<", "-")
  string = ReplaceString(string,      ">", "-")
  string = ReplaceString(string,      "|", "-")
Next
i=0
Repeat
  i+1
  Name + "\" + Mid(string, i, 1)
  CreateDirectory(Name)
  SetWindowTitle(0, "Anzahl = " + Str(i))
Until WindowEvent() = #PB_Event_CloseWindow Or i >= Len(string)
RunProgram("", Name, Name)
Ist zwar für die Praxis ziemlich unnütz, aber hübsch. :allright:

Verfasst: 08.11.2005 17:22
von AND51
Was bewirkt das?

Verfasst: 08.11.2005 18:09
von freedimension
Mir ist der Sinn von der For-Schleife noch nicht so ganz klar :freak:
Ist aber auch schon spät und nach neun Stunden Arbeiten übersieht man ja gerne mal eine Kleinigkeit :)

Verfasst: 08.11.2005 19:54
von Laurin
Der Code ersetzt die ganzen unerlaubten Zeichen einer Datei durch erlaubte Zeichen.
ZB das:ist>cool.txt wird zu das.ist_cool.txt

Kapiert? :wink:

Verfasst: 08.11.2005 19:58
von freedimension
Laurin hat geschrieben:Der Code ersetzt die ganzen unerlaubten Zeichen einer Datei durch erlaubte Zeichen.
ZB das:ist>cool.txt wird zu das.ist_cool.txt

Kapiert? :wink:
/:-> Schon kapiert, aber warum macht er das so oft wie Zeichen im String drinnen sind? :?

Verfasst: 08.11.2005 20:02
von MVXA
Vor allem kann man die Funktion stark optimieren :freak:.

Verfasst: 08.11.2005 20:03
von Laurin
Das frage ihn am besten selber, ich weiß das auch nicht <)

Verfasst: 08.11.2005 20:04
von ts-soft
>> Schon kapiert, aber warum macht er das so oft wie Zeichen im String drinnen sind?
Viel schlimmer finde ich, das er bei einem nicht vorhandenem Anfängt, bei 0 :mrgreen:

Eine ähnliche Funktion entstand mal in Zusammenarbeit mit Franky und MVXA. Die kürzt einen String auf eine gültige PB Variable.

Code: Alles auswählen

Procedure.s MakePBVariable(p_string.s)
  *wert.BYTE = @p_string
  p_string2.s = Space(Len(p_string))
  *wert2.BYTE = @p_string2
  p = *wert2
  Repeat
    If *wert\b = 95 Or (*wert\b > 64 And *wert\b < 91) Or (*wert\b > 96 And *wert\b < 123)
      *wert2\b = *wert\b
      *wert2 + 1
    EndIf
    *wert + 1
  Until p <> *wert2 Or *wert\b = 0
  While *wert\b <> 0
    If *wert\b = 95  Or (*wert\b > 47 And *wert\b< 58) Or (*wert\b > 64 And *wert\b < 91) Or (*wert\b > 96 And *wert\b < 123)
      *wert2\b = *wert\b
      *wert2 + 1
    EndIf
    *wert + 1
  Wend
  ProcedureReturn Trim(p_string2)
EndProcedure
Bissel ändern ist aber noch erforderlich :mrgreen:

Verfasst: 08.11.2005 22:02
von Kiffi

Code: Alles auswählen

Procedure.s ReplaceInvalidCharsFromFilename(sFilename.s)
  sInvalidChars.s = "\/:*?<>|" + Chr(34)
  For lCounter = 1 To Len(sInvalidChars)
    sFilename = ReplaceString(sFilename, Mid(sInvalidChars,lCounter,1), "_")
  Next ; lCounter
  ProcedureReturn sFilename
EndProcedure
Grüße ... Kiffi

Verfasst: 08.11.2005 22:21
von ts-soft
Da werden ja nur 8 Zeichen berücksichtigt, wenn man alle ungültigen ASCII Zeichen berücksichten will, dauert das zu lange auf diese Weise.