Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Pfadinhalte eine Ebene aufwärts kopieren (https://www.delphipraxis.net/197911-pfadinhalte-eine-ebene-aufwaerts-kopieren.html)

Sherlock 20. Sep 2018 08:11

AW: Pfadinhalte eine Ebene aufwärts kopieren
 
Ist jetzt nicht böse gemeint, aber warum kommt das erst jetzt?

Sherlock

Schokohase 20. Sep 2018 08:41

AW: Pfadinhalte eine Ebene aufwärts kopieren
 
Zitat:

Zitat von old7 (Beitrag 1413683)
Jupp, und auf die Idee mit AnsiReplaceText für den Ü-Ordner wäre ich nicht gekommen (hätte die Backslashes von hinten geparst) :thumb:

Was passiert wohl bei diesem Pfad:
Code:
C:\temp\alt\ein\alt\dir\datei.txt
Deswegen bist du darauf nicht gekommen, weil das mit dem
Delphi-Quellcode:
AnsiReplaceText
sehr fehleranfällig ist

Delphi.Narium 20. Sep 2018 09:10

AW: Pfadinhalte eine Ebene aufwärts kopieren
 
Zitat:

Zitat von Schokohase (Beitrag 1413702)
Zitat:

Zitat von old7 (Beitrag 1413683)
Jupp, und auf die Idee mit AnsiReplaceText für den Ü-Ordner wäre ich nicht gekommen (hätte die Backslashes von hinten geparst) :thumb:

Was passiert wohl bei diesem Pfad:
Code:
C:\temp\alt\ein\alt\dir\datei.txt
Deswegen bist du darauf nicht gekommen, weil das mit dem
Delphi-Quellcode:
AnsiReplaceText
sehr fehleranfällig ist

Das stimmt natürlich, kommt halt auf die Aufgabenstellung an. Allgemeingültig ist meine Lösung sicherlich nicht.

Aber Dein Beispiel entspricht nicht der Aufgabenstellung. Es soll nur der letzte Teil aus dem Pfad entfernt werden. ;-)

Lieber eher sowas?
Delphi-Quellcode:
function GetNewFileName(sFilename : String) : String;
begin
  Result := ExtractFilePath(sFilename);
  Result := ExcludeTrailingPathDelimiter(Result);
  Result := ReverseString(Result);
  Result := Copy(Result,1,Pos(SysUtils.PathDelim,Result) - 1);
  Result := ReverseString(Result);
  Result := IncludeTrailingPathDelimiter(Result);
  Result := Result + ExtractFilename(sFilename);
end;

...
if not SysUtils.RenameFile(sFilename,GetNewFileName(sFilename)) then begin
  FehlermeldungMachen;
end;
(ungetestet hingedaddelt)

Schokohase 20. Sep 2018 09:45

AW: Pfadinhalte eine Ebene aufwärts kopieren
 
Ich hätte jetzt eher an so etwas gedacht
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils,
  System.IOUtils;

procedure MoveDirectoryContentOneUp( const ASource: string );
var
  srcPath, dstPath:  string;
  srcEntry, dstEntry: string;
begin
  srcPath := IncludeTrailingPathDelimiter( TPath.GetFullPath( ASource ) );
  dstPath := IncludeTrailingPathDelimiter( ExpandFileName( TPath.Combine( srcPath, '..' ) ) );

  for srcEntry in TDirectory.GetDirectories( srcPath ) do
    begin
      dstEntry := TPath.Combine( dstPath, ExtractRelativePath( srcPath, srcEntry ) );
      TDirectory.Move( srcEntry, dstEntry );
    end;

  for srcEntry in TDirectory.GetFiles( srcPath ) do
    begin
      dstEntry := TPath.Combine( dstPath, ExtractRelativePath( srcPath, srcEntry ) );
      TFile.Move( srcEntry, dstEntry );
    end;
end;

begin
  try
    MoveDirectoryContentOneUp( 'C:\tmp\alt' );
  except
    on E: Exception do
      Writeln( E.ClassName, ': ', E.Message );
  end;

end.
Wenn man mit den Pfadangeben herumspielen möchte, dann sollte man auch die entsprechenden Funktionen zum Herumspielen verwenden.

p80286 20. Sep 2018 10:05

AW: Pfadinhalte eine Ebene aufwärts kopieren
 
Zitat:

Zitat von Sherlock (Beitrag 1413699)
Ist jetzt nicht böse gemeint, aber warum kommt das erst jetzt?

Sherlock

Meinst Du "richtig zippen" und das Problem existiert nicht mehr?

Gruß
K-H

old7 20. Sep 2018 12:10

AW: Pfadinhalte eine Ebene aufwärts kopieren
 
@Schokohase:
Zitat:

Wenn man mit den Pfadangeben herumspielen möchte, dann sollte man auch die entsprechenden Funktionen zum Herumspielen verwenden.
Man (Delphi.Narium vielleicht, aber ich auf jeden Fall) benutzt noch Delphi 7. Daher auch "old7" :wink:

Delphi CE ist mir noch zu unübersichtlich.

zeras 20. Sep 2018 18:28

AW: Pfadinhalte eine Ebene aufwärts kopieren
 
Zitat:

Zitat von p80286 (Beitrag 1413707)
Zitat:

Zitat von Sherlock (Beitrag 1413699)
Ist jetzt nicht böse gemeint, aber warum kommt das erst jetzt?

Sherlock

Meinst Du "richtig zippen" und das Problem existiert nicht mehr?

Gruß
K-H

Anders zippen geht nicht, weil die Zipdatei noch für andere Zwecke genutzt wird und da ist die Struktur OK.

KodeZwerg 20. Sep 2018 18:47

AW: Pfadinhalte eine Ebene aufwärts kopieren
 
Funktioniert mein Vorschlag für Dich nicht? Der bewegt Inhalt plus Unterordner in ein neues Root-Dir.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.
Seite 4 von 4   « Erste     234   

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