AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ordner verschieben mit TSHFileOpStruct...
Thema durchsuchen
Ansicht
Themen-Optionen

Ordner verschieben mit TSHFileOpStruct...

Ein Thema von bingo72 · begonnen am 29. Jan 2007 · letzter Beitrag vom 30. Jan 2007
Antwort Antwort
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#1

Ordner verschieben mit TSHFileOpStruct...

  Alt 29. Jan 2007, 17:44
Hallo!!

Ich habe hier des öfteren gelesen das man mit TSHFileOpStruct u.a. auch Ordner verschieben kann...

Delphi-Quellcode:
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);
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??
Kann mir da jemand Licht ins Dunkel bringen??
Und wie kann ich tatsächlich den Ordner als ganzes Verschieben??

LG
Thomas
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Ordner verschieben mit TSHFileOpStruct...

  Alt 29. Jan 2007, 21:54
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).
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
29. Jan 2007, 21:55
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
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#4

Re: Ordner verschieben mit TSHFileOpStruct...

  Alt 30. Jan 2007, 07:35
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
  Mit Zitat antworten Zitat
bingo72

Registriert seit: 18. Aug 2006
Ort: Österreich
180 Beiträge
 
Delphi 5 Professional
 
#5

Re: Ordner verschieben mit TSHFileOpStruct...

  Alt 30. Jan 2007, 10:40
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...

LG
Thomas
  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 12:43 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