AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Windows error Codes + SHFileOperation
Thema durchsuchen
Ansicht
Themen-Optionen

Windows error Codes + SHFileOperation

Ein Thema von gmc616 · begonnen am 16. Okt 2006 · letzter Beitrag vom 17. Okt 2006
Antwort Antwort
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

Windows error Codes + SHFileOperation

  Alt 16. Okt 2006, 17:20
Hallo DPler,

ich versuche mit SHFileOperation ein Reihe von Verzeichnissen umzubenennen.
Bei einem Großteil der Verzeichnisse funktioniert das wunderbar, aber bei einigen Verzeichnissen (immer den gleichen) halt nicht.

SHFileOperation gibt mir dann einen ErrorCode 31 zurück.

Nun hab ich das MSDN duchsucht und bin auf System Error Codes gestoßen. Dort wird geschrieben das 31 = ERROR_GEN_FAILURE ist:
Zitat:
A device attached to the system is not functioning.
kann doch nicht sein.
Alle Verzeichnisse, die umbenannt werden sollen, liegen auf der gleichen Platte, die sehr wohl funktioniert.

Hab ich die richtigen Error Codes, oder was läuft da falsch?

Grüße
gmc
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Windows error Codes + SHFileOperation

  Alt 16. Okt 2006, 17:59
Moin gmc,

SHFileOperation liefert Dir keinen Errorcode zurück, sondern nur 0 (erfolgreich) oder ungleich 0 (Fehler).
Nur so als Idee:
Lass' Dir mal bei <> 0 den letzten Fehler anzeigen:

ShowMessage(SysErrorMessage(GetLastError)); Ob SHFileOperation LastError setzt, weiss ich allerdings nicht.

Du könntest die Funktion auch einfach mal so aufrufen, dass die Dialog nicht unterdrückt werden (Flags entsprechend setzen).
Dann müsste Dir eigentlich eine Fehlermeldung angezeigt 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
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Windows error Codes + SHFileOperation

  Alt 17. Okt 2006, 12:29
Danke Christian für den Tipp.

SHFileOperation scheint kein LastError zu setzen. "Der Vorgang wurde erfolgreich ausgeführt." ist ja wohl kein Fehler. Schöne wäre es, wenn der Vorgang erfolgreich gewesen wäre.

Aber das Weglassen des FOF_SILENT-Flags hat mir einen andere Fehlermeldung geliefert:
Zitat:
Datei kann icht umbenannt werden. Wählen Sie nur eine Datei, oder verwenden Sie MS-DOS-Platzhalter ...
Ich verwende SHFileOperation z.Z. so:
Delphi-Quellcode:
function fktRenameDir(psFrom, psTo: string) : boolean;
var
  shellinfo: TSHFileOpStruct;
  nErr : integer;
begin
  shellinfo.Wnd := 0;
  shellinfo.wFunc := FO_RENAME;
  shellinfo.pFrom := PChar(psFrom);
  shellinfo.pTo := PChar(psTo);
  shellinfo.fFlags := FOF_ALLOWUNDO or
                      // FOF_SILENT or
                      // FOF_FILESONLY or
                      FOF_NOCONFIRMATION;



  nErr := SHFileOperation(shellinfo);
  if nErr <> 0 then
  begin
    ShowMessage('Error: ' + inttostr(nErr) + ' '  + SysErrorMessage(GetLastError));
  end;

  result := (nErr = 0)
end;
Die Verzeichnisnamen in psFrom und psTo sind korrekt.
psFrom existiert und psTo existiert noch nicht.
Die Verzeichnisse (ich benenne ja mehrere Verzeichnisse in einer Schleife um) sind teilweise leer, teilweise nicht.
Das sollte aber mMn keinen Unterschied machen, da andere Verzeichnisse, egal ob leer oder nicht, korrekt umbenannt werden.

Die Rechte diese Verzeichnisse umzubenennen habe ich auch.

Irgendwie steh ich auf dem Schlauch.
Kann doch wieder nur eine Kleinigkeit sein, die ich einfach übersehe
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Windows error Codes + SHFileOperation

  Alt 17. Okt 2006, 12:38
Die Dateilisten werden mit einem doppelten #0 abgeschlossen, also #0#0. #0 dient als Trenner zwischen den Dateien, wenn es mehrere sind.

Sakura hat in der Code-Lib eine Unit dafür geschrieben: FileWorks oder so.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Windows error Codes + SHFileOperation

  Alt 17. Okt 2006, 12:52
Wow, Danke.

Habs grad auch im MSDN gelesen. Ich wußte, es ist nur ne Kleinigkeit!
War lesen kann ist klar im Vorteil!
  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 08:29 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