Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Verzeichnisinhalt kopieren OHNE Ordner (https://www.delphipraxis.net/155879-verzeichnisinhalt-kopieren-ohne-ordner.html)

Ascuriah 11. Nov 2010 13:02

Verzeichnisinhalt kopieren OHNE Ordner
 
Hi DP´ler

Zum kopieren von Verzeichnisinhalten gibt es ja folgende Funktion:

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 := 0;
    wFunc := aOperation;
    pFrom := PAnsiChar(FromPath);
    if ToPath <> '' then
    begin
      pTo := PAnsiChar(ToPath)
    end else begin // target available
      pTo := nil;
    end; // target not available
    fFlags := Flags;
  end; // structure
  Result := SHFileOperationA(SHFileOpStruct);
end;
Die Problematik ist nun das ich in meinem Zielverzeichnis NUR die Daten des Quellverzeichnisses möchte, ohne den letzten Ordner des Pfades. Heist im klartext:
Wenn ich so ausführe
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DoFileWork(FO_COPY, 'C:\Olap\Daten\Leer', 'C:\OLAP', FOF_FILESONLY);
end;
Erstellt er in C:\OLAP immer den Ordner Leer in dem dann die gewünschten Dateien liegen. Ich möchte es aber das die Dateien direkt im Ordner OLAP landen. Das FLAG hinten mit FOF_FILESONLY zu setzen bringt leider garnix(zumindest is das ergebnis das selbe ob es gesetz ist oder nicht).

Wäre super wenn jemand nen Tipp hätte

mfg

Ascu

DeddyH 11. Nov 2010 13:05

AW: Verzeichnisinhalt kopieren OHNE Ordner
 
Wie ist es so?
Delphi-Quellcode:
DoFileWork(FO_COPY, 'C:\Olap\Daten\Leer\*', 'C:\OLAP', FOF_FILESONLY);

Ascuriah 11. Nov 2010 13:10

AW: Verzeichnisinhalt kopieren OHNE Ordner
 
^^ War ja zu erwarten das das (mal wieder :D) stimmt. Kurz zur Erläuterung, * steht einfach nur dafür das alles was in diesem Ordner liegt kopiert wird oder seh ich das falsch? Ach ja und kann es sein das das FOF_FILESONLY Flag so garnich geht weil das ändert nämlich nüscht.

DeddyH 11. Nov 2010 13:14

AW: Verzeichnisinhalt kopieren OHNE Ordner
 
Gerade noch einmal nachgelesen:
Zitat:

FOF_FILESONLY

Perform the operation only on files (not on folders) if a wildcard file name (*.*) is specified.
Also musst Du die Wildcard von * in *.* ändern, dann sollte es hoffentlich klappen.

Ascuriah 11. Nov 2010 13:18

AW: Verzeichnisinhalt kopieren OHNE Ordner
 
Hm leider immer noch das selbe ob * oder *.* das FOF_FILESONLY bewirkt nichts. Naja funktionieren tuts ja schon ma^^

DeddyH 11. Nov 2010 13:24

AW: Verzeichnisinhalt kopieren OHNE Ordner
 
Nächster Vorschlag:
Zitat:

FOF_NORECURSION

Only perform the operation in the local directory. Do not operate recursively into subdirectories, which is the default behavior.

Ascuriah 11. Nov 2010 13:39

AW: Verzeichnisinhalt kopieren OHNE Ordner
 
FOF_NORECURSION

kentn er gleich garnich ( undefinierter Bezeichner ) ansich deckt die ShellAPI doch aber alles ab

DeddyH 11. Nov 2010 13:44

AW: Verzeichnisinhalt kopieren OHNE Ordner
 
Delphi-Quellcode:
const FOF_NORECURSION = $1000;
Aber ich habe gerade diesen Beitrag gefunden, damit sollte das doch einfacher gehen.

himitsu 11. Nov 2010 13:45

AW: Verzeichnisinhalt kopieren OHNE Ordner
 
Dann deklarier es doch selber?

Ich weiß ja nicht wie alt dein Delphi ist, aber es ist nunmal so, daß nicht alle APIs, Typen und Konstanten von Windows integriert sind.

Irgendwann mußte ja man diese API nach Delphi/Pascal übersetzt werden ... da kann schonmal was fehlen.

Tipp: Lad' dir von Microsoft ein aktuelles PSDK runter ... darin findet man alles Wichtige für sein Windows.

Ascuriah 11. Nov 2010 13:51

AW: Verzeichnisinhalt kopieren OHNE Ordner
 
JO danke werd ich direkt mal machen aber Fakt ist das die Funktion mit * hinten im Pfad tadellos funktioniert -> sehr zu frieden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:21 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