AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi File mit SHFileOperation in Papierkorb versch. geht nicht

File mit SHFileOperation in Papierkorb versch. geht nicht

Ein Thema von Lefko · begonnen am 14. Jul 2004 · letzter Beitrag vom 23. Okt 2015
Thema geschlossen
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#1

File mit SHFileOperation in Papierkorb versch. geht nicht

  Alt 14. Jul 2004, 21:54
Hi,
Ich hab des Katers (in manchen Kreisen auch als "Sakura" o.Ä bekannt) function "DoFileWork" aus der CodeLibrary verwendet, jedoch hab ich da mal ne Frage zu den Parametern FOF_ALLOWUNDO etc.

Ich will mit folgendem Code ein paar Dateien, die in einer Listbox stehen, in den Papierkorb verschieben (so, dass man sie notfalls noch wiederherstellen kann):

sakuras function:
Delphi-Quellcode:
function DoFileWork(aOperation: FILEOP_FLAGS; aFrom, aTo: AnsiString;
                    Flags: FILEOP_FLAGS): Integer;
var FromPath, ToPath: AnsiString;
    SHFileOpStruct: TSHFileOpStruct;
begin
FromPath := aFrom + #0#0;
ToPath := aTo + #0#0;
with SHFileOpStruct do
 begin
  Wnd := Application.Handle;
  wFunc := aOperation;
  pFrom := PAnsiChar(FromPath);
  if ToPath <> ''
    then pTo := PAnsiChar(ToPath)
    else pTo := nil;
  fFlags := Flags;
 end;
Result := SHFileOperationA(SHFileOpStruct);
end;
Meine Verwendung:
Delphi-Quellcode:
procedure TForm3.Dateilschen1Click(Sender: TObject); //Dateilschen1 ist ein PopUp-MenuItem
var a : integer;
    s : string;
begin
if MessageDlg('Datei(en) wirklich endgültig löschen?', mtConfirmation, [mbYes, mbNo], 0) = idYes
  then
   begin
    //#0 immer dazwischensetzen
    s := '';
    if LbFiles.SelCount > 1
      then
       begin
        for a := 0 to LbFiles.SelCount-1 do
         s := s + LbFiles.Items[LbFiles.itemindex-(LbFiles.SelCount-1)+a] + #0;
        s := copy(s, 0, length(s)-1); //<--- letztes #0 entfernen
       end
      else s := LbFiles.Items[LbFiles.ItemIndex];

    DoFileWork(FO_DELETE, s, '', FOF_NOCONFIRMATION); //Das geht nicht!!
    LbFiles.DeleteSelected;
   end;
end;

Problem dabei: Die Dateien sind zwar weg, aber er hat sie nicht in den Papierkorb verschoben, der ist leer
Wenn ich statt FOF_NOCONFIRMATION aber FOF_ALLOWUNDO nehme, dann sind die Dateien drin, wie sie sollen, nur will ich nicht immer bestätigen müssen!

Woran liegt das?
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
 
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: File mit SHFileOperation in Papierkorb versch. geht nich

  Alt 14. Jul 2004, 22:04
FOF_NONCONFIRMATION or FOF_ALLOWUNDO
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: File mit SHFileOperation in Papierkorb versch. geht nich

  Alt 14. Jul 2004, 23:21
ah, alles klar, eigentlich seeeehr naheliegend...
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
 
Lefko

Registriert seit: 31. Jul 2003
359 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: File mit SHFileOperation in Papierkorb versch. geht nich

  Alt 14. Jul 2004, 23:25
da fällt mir noch ein:

Manchmal funktioniert die Dateioperation ja nicht, weil z.B. die Datei geöffnet ist und deshalb nicht verschoben werden kann. Kann man (etwa mit GetLastError) herausfinden, WESHALB der Fehler aufgetreten ist? Also damit ich in das Prog noch reinschreiben kann "Datei xyz konnte nicht verschoben werden, weil die Datei geöffnet ist" oder so?

Ich hab mal probiert, mir GetLastError anzeigen zu lassen, es war aber immer 0, auch wenn solch ein Fehler aufgetreten ist!
Johannes
-=[Nennst du meinen Namen, bin ich schon nicht mehr da]=-
 
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#5

AW: File mit SHFileOperation in Papierkorb versch. geht nicht

  Alt 22. Okt 2015, 13:56
Ich ziehe mal dieses Thema wieder hoch, da sich meine Frage auf genau dieses Thema auch bezieht.

Bekannt ist ja, dass eine Datei, die auf einem Netzlaufwerk (und somit meistens auch auf einem anderen Rechner) beim Löschen eben NICHT in den Papierkorb wandert, auch wenn man das so angibt.

Nun hätte ich das aber gerne.

Meine Frage, gibt es dazu eine Möglichkeit das gleich über die Api machen zu lassen, oder muss man halt sie halt selber dort hin kopieren und sie dann halt löschen?
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: File mit SHFileOperation in Papierkorb versch. geht nicht

  Alt 22. Okt 2015, 15:05
Einmal da schauen http://www.jff2k.de/index-news.php?s...435473&ucat=3&
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
 
Alt 22. Okt 2015, 16:39     Erstellt von hathor
Dieser Beitrag wurde von Daniel gelöscht. - Grund: OT-Diskussion entfernt.
Alt 22. Okt 2015, 19:24     Erstellt von null33
Dieser Beitrag wurde von Daniel gelöscht. - Grund: OT-Diskussion entfernt.
Alt 22. Okt 2015, 20:02     Erstellt von Captnemo
Dieser Beitrag wurde von Daniel gelöscht. - Grund: OT-Diskussion entfernt.
Alt 23. Okt 2015, 08:59     Erstellt von TiGü
Dieser Beitrag wurde von Daniel gelöscht. - Grund: OT-Diskussion entfernt.
Alt 23. Okt 2015, 10:37     Erstellt von p80286
Dieser Beitrag wurde von Daniel gelöscht. - Grund: OT-Diskussion entfernt.
Alt 23. Okt 2015, 11:25     Erstellt von TiGü
Dieser Beitrag wurde von Daniel gelöscht. - Grund: OT-Diskussion entfernt.
Alt 23. Okt 2015, 12:03     Erstellt von frankyboy1974
Dieser Beitrag wurde von Daniel gelöscht. - Grund: OT-Diskussion entfernt.
Alt 23. Okt 2015, 19:48     Erstellt von hathor
Dieser Beitrag wurde von Daniel gelöscht. - Grund: OT-Diskussion entfernt.
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.828 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: File mit SHFileOperation in Papierkorb versch. geht nicht

  Alt 23. Okt 2015, 20:09
Da das Problem ja schon gelöst ist, mache ich hier mal besser dicht.
Markus Kinzler
 
Daniel
(Administrator)

Registriert seit: 30. Mai 2002
Ort: Hamburg
15.523 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: File mit SHFileOperation in Papierkorb versch. geht nicht

  Alt 23. Okt 2015, 20:25
Danke dafür.
Ich habe derweil den Avatar entfernt. Ein gekreuzigter Torso gehört hier einfach nicht her. Ganz einfach.
Daniel R. Wolf
Admin Delphi-PRAXiS
mit Grüßen aus Hamburg
 
Thema geschlossen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf