AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SHFileOp FO_DELETE fehlerhaft

Ein Thema von teekay · begonnen am 20. Okt 2004 · letzter Beitrag vom 21. Okt 2004
Antwort Antwort
teekay

Registriert seit: 3. Jun 2004
23 Beiträge
 
Delphi 7 Enterprise
 
#1

SHFileOp FO_DELETE fehlerhaft

  Alt 20. Okt 2004, 14:05
Hallo

ich habe folgendes Problemchen - was für mich nicht ganz nachvollziehbar ist:

Ich lösche per ShellApi einzeln Dateien
folgenden code verwende ich momentan:

Delphi-Quellcode:
procedure DeleteFileToRecycle(dateien: string);
var SHFileOP: TSHFileOpStruct;
begin
  with SHFileOp do begin
    Wnd := Application.Handle;
    wFunc := FO_DELETE; // zum löschen
    fFlags := FOF_ALLOWUNDO; // Ermöglicht eine Umkehrung der letzten Operation
    pFrom := PChar(dateien + #0);
  end;
  SHFileOperation(SHFileOp);
end;
...

Aufruf :

DeleteFileToRecycle('D:\Delphi\Lizenz-Switch\Testdaten\Lizenz.e15' + #0);
Die Datei existiert, und ist nicht geschützt oder in Benutzung...

bei 3 von 4 Versuchen bekomme ich die angehängte Fehlermeldung, d.h. manchmal geht es meistens nicht
es ist aber auch kein muster erkennbar um das ganze nachzustellen

gemäß der code libary habe ich schon andere kombinationen versucht (speziell die Flags) > gleiches ergebnis
http://www.delphipraxis.net/viewtopic.php?t=1451

mein ziel ist es lediglich eine Datei in den Papierkorb zu verschieben um es ggf. wiederherzustellen (es werden nie mehrere oder geöffnete dateien gelöscht)
es gibt auch keine Rechteprobleme da alles lokal ausgeführt wird und Hauptbenutzerrechte vorliegen

ich hoffe ihr könnt mir helfen

mfG TeeKay
Miniaturansicht angehängter Grafiken
recycle.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: SHFileOp FO_DELETE fehlerhaft

  Alt 20. Okt 2004, 18:30
Hi,

versuch mal beim Aufruf das #0 zu entfernen. Sonst hättest Du ja 2 von den #0 ...

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#3

Re: SHFileOp FO_DELETE fehlerhaft

  Alt 20. Okt 2004, 18:36
  FillChar(SHFileOP, SizeOf(TSHFileOpStruct), 0); APIs mögen keine uninitialisierten Strukturen.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SHFileOp FO_DELETE fehlerhaft

  Alt 20. Okt 2004, 18:52
Moin Mirage,

da der Parameter auch mehrere, jeweils mit #00 getrennte, Dateien/Pfade verarbeiten kann, muss er mit #00#00 abgeschlossen werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#5

Re: SHFileOp FO_DELETE fehlerhaft

  Alt 20. Okt 2004, 18:57
Zitat von Christian Seehase:
Moin Mirage,

da der Parameter auch mehrere, jeweils mit #00 getrennte, Dateien/Pfade verarbeiten kann, muss er mit #00#00 abgeschlossen werden.
Ups, hast recht! War wohl etwas zu voreilig...

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: SHFileOp FO_DELETE fehlerhaft

  Alt 20. Okt 2004, 19:17
warum eigentlich "#00" und nicht einfach "#0"? Gibts da nen Unterschied den ich noch nicht kenne? Ansonsten wäre es ja nur zusätzlicher Schreibaufwand.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#7

Re: SHFileOp FO_DELETE fehlerhaft

  Alt 20. Okt 2004, 19:19
Durch einfache #0 werden mehrere Dateien getrennt (wenn man mehrere Dateien übergibt). Das #0#0 signalisiert, dass die Liste nun zu Ende ist

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: SHFileOp FO_DELETE fehlerhaft

  Alt 20. Okt 2004, 20:42
Moin SirThornberry,

das mit dem #00 ist eine "dumme" Angewohnheit von mir.
Eigentlich benutze ich diese Schreibweise nur für die Zeichen <= 32, so dass ich mit zwei Stellen auskomme, auch wenn drei möglich wären, und damit die Breite immer gleich bleibt nehme ich immer zwei Zeichen, ggf. dann eben mit führender Null. Z.B. #09 für Tabulator.
Dem Compiler ist es egal, und für mich ist es besser lesbar
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
teekay

Registriert seit: 3. Jun 2004
23 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: SHFileOp FO_DELETE fehlerhaft

  Alt 21. Okt 2004, 07:26
Zitat von NicoDE:
  FillChar(SHFileOP, SizeOf(TSHFileOpStruct), 0); APIs mögen keine uninitialisierten Strukturen.
ich glaub ich war mal wieder zu faul - speziell beim Initialisieren muss ich meine Gewohnheiten verbessern so funktioniert es:

Delphi-Quellcode:
procedure DeleteFileToRecycle(dateien: string);
var SHFileOP: TSHFileOpStruct;
begin
  FillChar(SHFileOP, SizeOf(TSHFileOpStruct), 0);
  with SHFileOp do begin
    Wnd := Application.Handle;
    wFunc := FO_DELETE;
    fFlags := FOF_ALLOWUNDO;
    pFrom := PChar(dateien + #0);
  end;
  SHFileOperation(SHFileOp);
end;
danke für eure Hilfe

mfG TeeKay
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz