Seite 1 von 1

Ordner löschen mit Sicherheitsabfrage

Verfasst: 26.01.2020 16:33
von Zerosurf
Kann es sein, daß ich das etwas zu umständlich geschrieben habe? :|

Code: Alles auswählen

If FileSize("Delete-Folder.ini") > 0
  If ReadFile(0, "Delete-Folder.ini")
    Path$ =  Trim(ReadString(0))
    CloseFile(0)
    Result = MessageRequester("Delete this folder?", Path$, #PB_MessageRequester_YesNo)
    If Result = #PB_MessageRequester_Yes
      ;DeleteDirectory(Path$, "", #PB_FileSystem_Recursive)
      MessageRequester("Information", Path$  + #LF$ + #LF$ + "Folder deleted!", #PB_MessageRequester_Ok)
    Else
      Result = MessageRequester("Delete other folder?", "", #PB_MessageRequester_YesNo)
      If Result = #PB_MessageRequester_Yes
        Path$ = PathRequester("Locate folder to delete:", "")
        If Path$
          If CreateFile(0, "Delete-Folder.ini")
            WriteString(0, Path$)
            CloseFile(0)
          Else
            MessageRequester("Error:", "Can't write the file", 0)
          EndIf
          Result = MessageRequester("Delete this folder?", Path$, #PB_MessageRequester_YesNo)
          If Result = #PB_MessageRequester_Yes
            ;DeleteDirectory(Path$, "", #PB_FileSystem_Recursive)
            MessageRequester("Information", Path$  + #LF$ + #LF$ + "Folder deleted!", #PB_MessageRequester_Ok)
          EndIf
        EndIf
      EndIf
    EndIf
  EndIf
Else
  Path$ = PathRequester("Locate folder to delete:", "")
  If Path$
    If CreateFile(0, "Delete-Folder.ini")
      WriteString(0, Path$)
      CloseFile(0)
    Else
      MessageRequester("Error:", "Can't write the file", 0)
    EndIf
    Result = MessageRequester("Delete this folder?", Path$, #PB_MessageRequester_YesNo)
    If Result = #PB_MessageRequester_Yes
      ;DeleteDirectory(Path$, "", #PB_FileSystem_Recursive)
      MessageRequester("Information", Path$  + #LF$ + #LF$ + "Folder deleted!", #PB_MessageRequester_Ok)
    EndIf
  EndIf
EndIf
End

Re: Ordner löschen mit Sicherheitsabfrage

Verfasst: 26.01.2020 17:42
von NicTheQuick
Ja, wenn du z.B. Gebrauch von Procedures machst, könntest du die Redundanz im letzten Else-Zweig vermeiden.

Es geht aber auch ganz ohne Procedures die Redundanz zu vermeiden. Vielleicht mit einer Variable mehr.

Re: Ordner löschen mit Sicherheitsabfrage

Verfasst: 26.01.2020 20:12
von Zerosurf
Ist der Code mit Procedures kleiner bzw. "schöner" bzw. übersichtlicher oder der ohne Procedures mit einer Variable mehr?

Re: Ordner löschen mit Sicherheitsabfrage

Verfasst: 26.01.2020 21:16
von NicTheQuick
Dafür gibt es keine absolute Metrik. Natürlich wird er kleiner, aber schön sind vermutlich beide Versionen. Da hat ja aber jeder Programmierer seine eigenen Vorstellungen. Hässlich finde ich hauptsächlich Redundanz, denn die ist meistens vermeidbar und macht es definitiv schöner.

Re: Ordner löschen mit Sicherheitsabfrage

Verfasst: 04.02.2020 18:47
von Zerosurf
Was ist genau eine Redundanz (im letzten Else-Zweig)?

Re: Ordner löschen mit Sicherheitsabfrage

Verfasst: 04.02.2020 19:21
von NicTheQuick
Den komplette Code, der im letzten Else-Zweig steht, gibt es auch schon vorher, das heißt du hast da eine Code-Dopplung. Am besten vermeidet man doppelten Code, indem man ihn in Prozeduren auslagert oder ihn anders strukturiert.

Das könntest du zum Beispiel so umgehen:

Code: Alles auswählen

Define deleteOtherFolder.i = #False

If FileSize("Delete-Folder.ini") > 0
	If ReadFile(0, "Delete-Folder.ini")
		Path$ =  Trim(ReadString(0))
		CloseFile(0)
		Result = MessageRequester("Delete this folder?", Path$, #PB_MessageRequester_YesNo)
		If Result = #PB_MessageRequester_Yes
			;DeleteDirectory(Path$, "", #PB_FileSystem_Recursive)
			MessageRequester("Information", Path$  + #LF$ + #LF$ + "Folder deleted!", #PB_MessageRequester_Ok)
		Else
			Result = MessageRequester("Delete other folder?", "", #PB_MessageRequester_YesNo)
			deleteOtherFolder = Bool(Result = #PB_MessageRequester_Yes)
		EndIf
	EndIf
Else
	deleteOtherFolder = #True
EndIf

If deleteOtherFolder
	Path$ = PathRequester("Locate folder to delete:", "")
	If Path$
		If CreateFile(0, "Delete-Folder.ini")
			WriteString(0, Path$)
			CloseFile(0)
		Else
			MessageRequester("Error:", "Can't write the file", 0)
		EndIf
		Result = MessageRequester("Delete this folder?", Path$, #PB_MessageRequester_YesNo)
		If Result = #PB_MessageRequester_Yes
			;DeleteDirectory(Path$, "", #PB_FileSystem_Recursive)
			MessageRequester("Information", Path$  + #LF$ + #LF$ + "Folder deleted!", #PB_MessageRequester_Ok)
		EndIf
	EndIf
EndIf
End