FileOps : Unabhängiges API-Dateicontrol
Parameter...
1 : $ Pfad Quelldatei
2 : $ Pfad Zieldatei
3 : % Dateioperation
1 = Kopieren $1 -> $2
2 = Verschieben/Umbenennen $1 -> $2
3 = Löschen $1
4 : % Schutzfunktionen
Für Datei Verschieben/Kopieren
0 = nicht überschreiben wenn Zieldatei bereits existiert
1 = Zieldatei überschreiben wenn existiert
2 = Fragen ob Zieldatei überschrieben werden soll
Für Datei Löschen
0 = Keine Sichheitsafrage
1 = Sicherheitsabfrage
5 : % Datei Schreibschutz
0 = Datei nicht bearbeiten wenn Schreibgeschützt
1 = Schreibschutz entfernen wenn Schreibgeschützt
2 = Fragen ob Schreibschutz entfernt werden soll
6 : % Voreingestellter Fehlercode zum testen der eigenen Auswertung.
MUSS 0 sein um die eigentliche Dateioperation auszuführen, sonst passiert nix !
*** Benötigte APIs
DEF CopyFile(3) !"Kernel32","CopyFileA"
DEF MoveFile(2) !"Kernel32","MoveFileA"
DEF DeleteFile(1) !"Kernel32","DeleteFileA"
DEF SetFileAtt(2) !"Kernel32","SetFileAttributesA"
DEF GetFileAtt(1) !"Kernel32","GetFileAttributesA"
proc FileOps
parameters fo_fp1$,fo_fp2$,fo_fop%,fo_fex%,fo_fsm%,fo_fmsg%
case fo_fmsg%=0:fo_fmsg%=if(len(findfirst$(fo_fp1$))=0,6,if(and(trim$(fo_fp2$)="",fo_fop%<3),8,if(and(lower$(fo_fp1$)=lower$(fo_fp2$),fo_fop%<3),7,0)))
if and(fo_fmsg%=0,and(fo_fop%<3,len(findfirst$(fo_fp2$))>0))
fo_fex%=if(fo_fex%=2,messagebox(fo_fp2$+"
Die Datei existiert bereits !
Soll sie überschrieben werden ?","Frage:",35),if(fo_fex%=0,7,1))
fo_fmsg%=if(fo_fex%=2,4,if(fo_fex%=7,1,0))
elseif fo_fmsg%=0
fo_fex%=if(fo_fop%=3,if(fo_fex%,messagebox(fo_fp1$+"
Soll die Datei wirklich gelöscht werden ?","Frage:",36),1),0)
fo_fmsg%=if(fo_fex%=7,2,0)
endif
if fo_fmsg%=0
case and(and(getfileatt(addr(fo_fp1$)),1),fo_fop%>1):fo_fmsg%=if(fo_fsm%=2,messagebox(fo_fp1$+"
Die Datei ist schreibgeschützt.
Soll der Schreibschutz entfernt werden ?","Frage:",35),if(fo_fsm%=0,7,6))
case fo_fmsg%:fo_fmsg%=if(fo_fmsg%=2,5,if(fo_fmsg%=7,3,if(setfileatt(addr(fo_fp1$),getfileatt(addr(fo_fp1$))-1)=1,0,9)))
if and(fo_fmsg%=0,and(fo_fop%<3,len(findfirst$(fo_fp2$))>0))
fo_fmsg%=if(and(getfileatt(addr(fo_fp2$)),1),if(fo_fsm%=2,messagebox(fo_fp2$+"
Die Datei ist schreibgeschützt.
Soll der Schreibschutz entfernt werden ?","Frage:",35),if(fo_fsm%=0,7,6)),0)
case fo_fmsg%:fo_fmsg%=if(fo_fmsg%=2,5,if(fo_fmsg%=7,3,if(setfileatt(addr(fo_fp2$),getfileatt(addr(fo_fp2$))-$01)=1,0,10)))
endif
endif
if fo_fmsg%=0
case fo_fex%:fo_fmsg%=if(deletefile(if(fo_fop%=3,addr(fo_fp1$),addr(fo_fp2$)))=1,0,if(fo_fop%=3,11,12))
case and(fo_fop%=1,fo_fmsg%=0):fo_fmsg%=if(copyfile(addr(fo_fp1$),addr(fo_fp2$),0)=1,0,13)
case and(fo_fop%=2,fo_fmsg%=0):fo_fmsg%=if(movefile(addr(fo_fp1$),addr(fo_fp2$))=1,0,14)
endif
return fo_fmsg%
endproc
Rückgabewerte...
0 : Erfolg
1 : Datei existiert bereits -> nicht überschreiben gewählt (vom Anwender oder per Schutzfunktion automatisch)
2 : Datei löschen -> nicht löschen gewählt
3 : Datei schreibgeschützt -> nicht bearbeiten gewählt (vom Anwender oder per Schutzfunktion automatisch)
4 : Datei existiert -> Abgebrochen gewählt
5 : Datei schreibgeschützt -> Abgebrochen gewählt
6 : Quelldatei existiert nicht
7 : Quelldatei = Zieldatei (daher Unsinn) (bei Datei löschen egal)
8 : Kein Zielpfad angegeben (bei Datei löschen egal)
9 : Schreibschutz der Quelldatei konnte nicht entfernt werden
10 : Schreibschutz der Zieldatei konnte nicht entfernt werden
11 : Quelldatei konnte nicht gelöscht werden
12 : Zieldatei konnte nicht gelöscht werden
13 : Datei konnte nicht kopiert werden
14 : Datei konnte nicht movido voluntad