Schöne Ordner

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Schöne Ordner

Beitrag 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:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Was bewirkt das?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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 :)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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:
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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? :?
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Vor allem kann man die Funktion stark optimieren :freak:.
Bild
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Das frage ihn am besten selber, ich weiß das auch nicht <)
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten