Ich wollte ein Programm schreiben das Daten sicher löschen kann. Also das es z.B. PC Inspector File Recovery nicht mehr wiedererstellen kann. Ich hab sowas schon zweimal erfolgreich programmiert. Allerdings konnte man bei den anderen Programmen nur eine Datei auf einmal löschen und ich wollte das mal mit einer Liste probieren, aber irgendwie funktioniert das nicht so wie ich das gerne hätte: Er löscht einfach nicht und wenn dann nur manchmal einen Teil der Liste. Es ist wirklich komisch. Ich hab schon selber nach dem Fehler gesucht aber ich find ihn nicht. Ich hoffe ihr könnt mir da weiterhelfen. Für den Code entschuldige ich mich schonmal, da ich schon ziemlich viel dran rumgemacht habe

Code: Alles auswählen
Global Eintrag = -1
Enumeration
#Window_0
EndEnumeration
Enumeration
#Explorer
#Frame3D_0
#List
#Aktu
#Frame3D_1
#Alles
#Frame3D_3
#Des
#Check
#Destruct
EndEnumeration
Global FontID7
FontID7 = LoadFont(7, "Franklin Gothic Demi Cond", 10)
Global FontID11
FontID11 = LoadFont(11, "Franklin Gothic Demi Cond", 14)
Procedure Open_Window_0()
If OpenWindow(#Window_0, 258, 10, 600, 512, "Destructer", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar )
ExplorerTreeGadget(#Explorer, 20, 20, 180, 260, "")
GadgetToolTip(#Explorer, "Ein Explorer zum auswählen der Dateien")
SetGadgetFont(#Explorer, FontID7)
Frame3DGadget(#Frame3D_0, 10, 0, 200, 290, "Datei auswählen")
SetGadgetFont(#Frame3D_0, FontID7)
ListIconGadget(#List, 220, 10, 370, 280, "Name", 150,#PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(#List, 1, "Pfad", 216)
GadgetToolTip(#List, "Liste der Ausgewählten Dateien")
SetGadgetFont(#List, FontID7)
ProgressBarGadget(#Aktu, 20, 380, 560, 20, 0, 10, #PB_ProgressBar_Smooth)
GadgetToolTip(#Aktu, "Fortschritt der aktuellen Datei")
Frame3DGadget(#Frame3D_1, 10, 300, 580, 50, "Insgesamt")
SetGadgetFont(#Frame3D_1, FontID7)
ProgressBarGadget(#Alles, 20, 320, 560, 20, 0, 10, #PB_ProgressBar_Smooth)
GadgetToolTip(#Alles, "Der Fortschritt aller Dateien")
Frame3DGadget(#Frame3D_3, 10, 360, 580, 50, "Aktuelle Datei")
SetGadgetFont(#Frame3D_3, FontID7)
ComboBoxGadget(#Des, 20, 420, 180, 30)
GadgetToolTip(#Des, "Art des Löschens")
SetGadgetFont(#Des, FontID7)
CheckBoxGadget(#Check, 370, 420, 150, 30, "Dateiname auch ändern")
GadgetToolTip(#Check, "Dateiname auch ändern")
SetGadgetFont(#Check, FontID7)
ButtonGadget(#Destruct, 20, 460, 560, 40, "Destruct", #PB_Button_Default)
GadgetToolTip(#Destruct, "Löscht alle Dateien unwiederbringlich")
SetGadgetFont(#Destruct, FontID11)
SetGadgetColor(#Aktu,#PB_Gadget_FrontColor,$000000)
SetGadgetColor(#Alles,#PB_Gadget_FrontColor,$000000)
AddGadgetItem(#Des,0,"Normal löschen")
AddGadgetItem(#des,1,"Zero (1X)")
AddGadgetItem(#des,2,"Einfach Random (1X Random)")
AddGadgetItem(#des,3,"5X Random (5X Random)")
AddGadgetItem(#des,4,"NATO-Standard (7X Random)")
AddGadgetItem(#des,5,"Sicher (50X Random)")
AddGadgetItem(#des,6,"Sicher ist Sicher (100x)")
AddGadgetItem(#des,7,"Destructer (100X Random)")
SetGadgetState(#des,4)
CreatePopupMenu(0)
MenuItem(0,"Entfernen")
SetGadgetAttribute(#aktu,#PB_ProgressBar_Maximum,100)
SetGadgetAttribute(#aktu,#PB_ProgressBar_Minimum,0)
EndIf
EndProcedure
Procedure.s Buchstabe()
Select Random(46)
Case 0
ret.s = "a"
Case 1
ret.s = "b"
Case 2
ret.s = "c"
Case 3
ret.s = "d"
Case 4
ret.s = "e"
Case 5
ret.s = "f"
Case 6
ret.s = "g"
Case 7
ret.s = "h"
Case 8
ret.s = "i"
Case 9
ret.s = "j"
Case 10
ret.s = "k"
Case 11
ret.s = "l"
Case 12
ret.s = "m"
Case 13
ret.s = "n"
Case 14
ret.s = "o"
Case 15
ret.s = "p"
Case 16
ret.s = "q"
Case 17
ret.s = "r"
Case 18
ret.s = "s"
Case 19
ret.s = "t"
Case 20
ret.s = "u"
Case 21
ret.s = "v"
Case 22
ret.s = "w"
Case 23
ret.s = "x"
Case 24
ret.s = "y"
Case 25
ret.s = "z"
Case 26
ret.s = "1"
Case 27
ret.s = "2"
Case 28
ret.s = "3"
Case 29
ret.s = "4"
Case 30
ret.s = "5"
Case 31
ret.s = "6"
Case 32
ret.s = "7"
Case 33
ret.s = "8"
Case 34
ret.s = "9"
Case 35
ret.s = "0"
Case 36
ret.s = "ß"
Case 37
ret.s = "´"
Case 38
ret.s = "+"
Case 39
ret.s = "#"
Case 40
ret.s = "-"
Case 42
ret.s = "."
Case 43
ret.s = ","
Case 44
ret.s = "<"
Case 45
ret.s = "^"
Case 46
ret.s = " "
EndSelect
If Random(1) = 1
ret = UCase(ret)
EndIf
ProcedureReturn ret
EndProcedure
Procedure Destruct(file.s,Modus)
SetGadgetState(#aktu,0)
If Modus = 0
If DeleteFile(file)
SetGadgetState(#aktu,100)
Else
MessageRequester("Destructer","Die Datei " + file + "konnte nicht gelöscht werden.")
EndIf
ElseIf Modus = 1
SetGadgetState(#aktu,0)
If OpenFile(0,file)
Repeat
string.s + ReadString(0)
Until Eof(0) <> 0
SetGadgetState(#aktu,30)
Len = Len(String)
Repeat
uber.s + "0"
Until Len(uber.s) > Len
SetGadgetState(#aktu,60)
CloseFile(0)
CreateFile(0,file)
WriteStringN(0,uber)
CloseFile(0)
DeleteFile(file)
SetGadgetState(#aktu,100)
Else
MessageRequester("Destructer","Die Datei " + file + "konnte nicht gelöscht werden.")
EndIf
ElseIf Modus = 2
SetGadgetState(#aktu,0)
If OpenFile(0,file)
Repeat
string.s + ReadString(0)
Until Eof(0) <> 0
SetGadgetState(#aktu,30)
Len = Len(string)
Repeat
uber + Buchstabe()
Until Len(uber) > len
SetGadgetState(#aktu,60)
CloseFile(0)
CreateFile(0,file)
WriteStringN(0,uber)
CloseFile(0)
DeleteFile(file)
SetGadgetState(#aktu,100)
Else
MessageRequester("Destructer","Die Datei " + file + "konnte nicht gelöscht werden.")
EndIf
ElseIf Modus = 3
SetGadgetState(#aktu,0)
e = 0
Repeat
e + 20
If OpenFile(0,file)
Repeat
string.s + ReadString(0)
Until Eof(0) <> 0
Len = Len(string)
Repeat
uber.s + Buchstabe()
Until Len(uber) > len
CloseFile(0)
CreateFile(0,file)
WriteStringN(0,uber)
CloseFile(0)
DeleteFile(file)
SetGadgetState(#aktu,e)
Else
error = 1
EndIf
Until e = 100
If error = 1
MessageRequester("Destructer","Die Datei " + file + "konnte nicht gelöscht werden.")
error = 0
EndIf
ElseIf Modus = 4
SetGadgetAttribute(#aktu,#PB_ProgressBar_Maximum,70)
SetGadgetState(#aktu,0)
e = 0
Repeat
e + 10
If OpenFile(0,file)
Repeat
string.s + ReadString(0)
Until Eof(0) <> 0
Len = Len(string)
Repeat
uber.s + Buchstabe()
Until Len(uber) > len
CloseFile(0)
CreateFile(0,file)
WriteStringN(0,uber)
CloseFile(0)
DeleteFile(file)
SetGadgetState(#aktu,e)
Else
error = 1
EndIf
Until e = 70
If error = 1
MessageRequester("Destructer","Die Datei " + file + "konnte nicht gelöscht werden.")
error = 0
EndIf
SetGadgetAttribute(#aktu,#PB_ProgressBar_Maximum,100)
SetGadgetState(#aktu,100)
EndIf
EndProcedure
open_window_0()
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
event = EventGadget()
If event = #Destruct
f = 0
Moment = -1
SetGadgetState(#aktu,0)
SetGadgetState(#Alles,0)
Repeat
SetGadgetAttribute(#Alles,#PB_ProgressBar_Maximum,Eintrag)
SetGadgetAttribute(#Alles,#PB_ProgressBar_Minimum,0)
If Moment <= Eintrag
Moment + 1
Else
f = 1
EndIf
SetGadgetItemState(#list,Moment,#PB_ListIcon_Selected)
file.s = GetGadgetItemText(#list,moment)
Debug file
Destruct(file.s,GetGadgetState(#Des))
SetGadgetState(#Alles,Moment)
Until f = 1
ElseIf event = #explorer
event = EventType()
If event = #PB_EventType_LeftDoubleClick
If #PB_Explorer_File = GetGadgetState(#Explorer)
n = 0
For k = 0 To Eintrag
If GetGadgetItemText(#list,k) = GetFilePart(GetGadgetText(#explorer))
n = 1
EndIf
Next
If n <> 1
eintrag + 1
AddGadgetItem(#List,Eintrag,GetGadgetText(#explorer))
EndIf
EndIf
EndIf
ElseIf event = #list
If #PB_EventType_RightClick = EventType()
DisplayPopupMenu(0,WindowID(0))
EndIf
EndIf
ElseIf event = #PB_Event_Menu
event = EventMenu()
If event = 0
If RemoveGadgetItem(#list,GetGadgetState(#list))
eintrag - 1
EndIf
EndIf
ElseIf event = #PB_Event_CloseWindow
End
EndIf
ForEver