![]() |
Ordner verschieben mit TSHFileOpStruct...
Hallo!!
Ich habe hier des öfteren gelesen das man mit TSHFileOpStruct u.a. auch Ordner verschieben kann...
Delphi-Quellcode:
Nur wenn ich es ausprobiere, funktioniert es nur wenn ich mit '*.*' jede beliebige Datei in diesem Ordner auswähle. Ansonsten kommt eine Fehlermeldung, daß er die Quelldatei nicht öffnen kann, was auch klar ist, da er ja einen Ordner und keine Datei vor sich hat!! Ist es daher nicht doch eher ein verschieben von Dateien in einem Ordner ist, aber nicht das Verschieben des Ordner selbst oder??
ZeroMemory(@lOS, SizeOf(lOS));
lDrivePath := GetDrivePath; lSubFolder := ExtractRelativePath(lDrivePath, aFromDir); lFromDir := IncludeTrailingBackslash(aFromDir) + '*.*'; lToDir := IncludeTrailingBackslash(aToDir) + lSubFolder; with lOS do begin wFunc := FO_MOVE; fFlags := FOF_NOCONFIRMMKDIR; pFrom := PChar(lFromDir + #0); pTo := PChar(lToDir) end; ShFileOperation(lOS); Kann mir da jemand Licht ins Dunkel bringen?? :roll: Und wie kann ich tatsächlich den Ordner als ganzes Verschieben?? LG Thomas |
Re: Ordner verschieben mit TSHFileOpStruct...
Moin Thomas,
doch geht, Du musst nur berücksichtigen, was ein Verzeichnis ist. Z.B. Dies ist, im Sinne von SHFileOperation, kein Verzeichnis: C:\temp\unterverzeichnis aber dies hier: C:\temp\unterverzeichnis\. Du musst bei pFrom also immer \. mit angeben, wenn Du ein Verzeichnis ansprechen willst. der . dürfte auch aus FindFirst bekannt sein. Er steht für das Verzeichnis (.. steht für das übergeordnete Verzeichnis). |
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Sonstige Fragen zu Delphi" nach "Windows API / MS.NET Framework API" verschoben.
Das ist eher ein Windows-API-Problem |
Re: Ordner verschieben mit TSHFileOpStruct...
Morgen Chris,
um bei Deinem Beispiel zu bleiben: Nehmen wir an ich habe folgende Ordner-Struktur: C:\temp\unterverzeichnis1 C:\temp\unterverzeichnis2 C:\temp\unterverzeichnis3 ..usw. In jedem Unterverzeichnis sind ein paar Daten...jetzt möchte ich aber nur unterverzeichnis1 verschieben....die restlichen Unterverzeichnisse sollen bleiben....wie arbeite ich dann mit SHFileOperation?? Denn wenn ich C:\temp\unterverzeichnis1\. bei pFrom angebe schreibt er mir nach wie vor eine Fehlermeldung 'Quelldatei kann nicht gelesen werden' hin, obwohl sowohl Ordner + Files vorhanden sind, welche auch sicher nicht gerade in Verwendung sind. MfG Thomas |
Re: Ordner verschieben mit TSHFileOpStruct...
Problem gelöst!!
Quell-Ordner müssen ohne \. angegeben werden....genauso verfahren bei Zielordner...!! Als ich das gemacht hatte....motzte das System daß er den Quell-Ordner nicht löschen konnte...na gut da wußte ich zumindest, daß ich auf dem rchtigen Weg war...immrhin fand er jetzt zumindest den Quell-Ordner!! Schließlih fand ich den Grund: Ich hatte ein FindClose von TSearchRec nicht angegeben hatte --> dadurch war dieses nach wie vor auf meinen Quell-Ordner gerichtet --> kein Zugriff auf Ordner beim Verschieben möglich und von daher auch die Fehlermeldungen... Vielleicht hilft es ja wen... :stupid: LG Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz