Ordner löschen mit Sicherheitsabfrage

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Ordner löschen mit Sicherheitsabfrage

Beitrag 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
PureBasic 6.00 | Windows 10 pro (x64)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Ordner löschen mit Sicherheitsabfrage

Beitrag 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.
Bild
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Re: Ordner löschen mit Sicherheitsabfrage

Beitrag von Zerosurf »

Ist der Code mit Procedures kleiner bzw. "schöner" bzw. übersichtlicher oder der ohne Procedures mit einer Variable mehr?
PureBasic 6.00 | Windows 10 pro (x64)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Ordner löschen mit Sicherheitsabfrage

Beitrag 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.
Bild
Benutzeravatar
Zerosurf
Beiträge: 131
Registriert: 11.10.2005 15:46

Re: Ordner löschen mit Sicherheitsabfrage

Beitrag von Zerosurf »

Was ist genau eine Redundanz (im letzten Else-Zweig)?
PureBasic 6.00 | Windows 10 pro (x64)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Ordner löschen mit Sicherheitsabfrage

Beitrag 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
Bild
Antworten