AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Pfadinhalte eine Ebene aufwärts kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pfadinhalte eine Ebene aufwärts kopieren

Ein Thema von zeras · begonnen am 18. Sep 2018 · letzter Beitrag vom 20. Sep 2018
Antwort Antwort
Seite 3 von 4     123 4      
old7
(Gast)

n/a Beiträge
 
#21

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 18. Sep 2018, 20:09
Für den übergeordneten Ordner sollte doch ein Rename (statt Kopieren+Löschen) reichen, für den verbleibenden Rest dann Rolfs Prozeduren, oder?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 18. Sep 2018, 20:18
Delphi-Quellcode:
function MoveDir(SrcDir, DstDir: string): Boolean;
var
  FOS: TSHFileOpStruct;
begin
  ZeroMemory(@FOS, SizeOf(FOS));
  with FOS do
  begin
    wFunc := FO_MOVE; // FO_COPY;
    fFlags := FOF_ALLOWUNDO or FOF_SIMPLEPROGRESS;
    pFrom := PChar(IncludeTrailingPathDelimiter(SrcDir) + '*.*'#0);
    pTo := PChar(DstDir + #0);
  end;
  Result := (SHFileOperation(FOS) = 0);
end;
Versuche das mal.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
old7
(Gast)

n/a Beiträge
 
#23

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 18. Sep 2018, 20:28
Danke, aber ich hatte das Problem noch nicht. War nur eine theoretische Überlegung von mir, da Umbenennen bei großen Dateien platten-/SSDschonender ist (und vermutlich auch schneller).
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 18. Sep 2018, 20:43
Danke, aber ich hatte das Problem noch nicht. War nur eine theoretische Überlegung von mir, da Umbenennen bei großen Dateien platten-/SSDschonender ist (und vermutlich auch schneller).
Hallo old7, Verzeihung ein Missverständnis, meine Antwort galt dem TE und nicht Deiner Frage.
Also die Variante die ich zeigte ist dieselbe die Windows einsetzt.
Um auf Dich einzugehen, Ja ein "Move/Bewegen" ist schonender und schneller wenns das gleiche Laufwerk/Partition betrifft, ansonsten ist es egal.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 19. Sep 2018, 13:08
Danke an Allen.

Ich wollte in neuen Projekten auch einmal die neuen Klassen verwenden (TFILE, TPAH, etc.). Aber anscheinend läßt sich mein Problem nur mittels der Funktionen von Rolf lösen.
Danke Rolf.
Ich habe verschiedene Ansätze von euch probiert, aber immer kommt die Meldung, dass ein Pfad schon vorhanden sei. Ist er ja auch. Aber warum sollte man nicht alle Verzeichnisse und Dateien eine Ebene aufwärts verschieben können. Möglicherweise noch ein Denkfehler von Emba oder MS.
Man könnte meine Routinen mit gewissen Einschränkungen, die mit IOUtils nicht umsetzbar sind, auf die System.IOUtils Klassen anpassen, wenn man Multiplattformkonform sein möchte. Für mich ist das aber kein Thema und deshalb nutze ich diese Routinen schon seit Jahren so. Ausserdem läuft der Code auf allen Delphiversion und bietet noch viel mehr Möglichkeiten, als das etwas zu einfach umgesetzte TDriectory.Move.

@old7
Er möchte den übergeordneten Order nicht "löschen/umbennen" sondern nur den Inhalt des Untervezeichnisses in den bestehenden Überorder verschieben. Der Inhalt im übergeordneten Order soll dabei nicht verändert werden, also alles was schon besteht soll auch nach dem Move noch vorhanden sein. Zumindest habe ich das so verstanden.

Geändert von Rolf Frei (19. Sep 2018 um 13:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 19. Sep 2018, 13:24
Ich dachte, es ginge ihm erst mal darum den übergeordneten Ordner raus zu bekommen. Wie er dann seine Dateien dahin bekommt, wäre dann ein anderes Problem. Man könnte dann ja auch mit einem Zwischenschritt über einen temporären Ordner gehen. Liegt der in der selben Partition wird ja eh nur der Eintrag im FAT geändert und sie werden nicht physisch verschoben. Was dann auch recht schnell sein sollte.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
old7
(Gast)

n/a Beiträge
 
#27

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 19. Sep 2018, 17:12
@Rolf
Um die Datei
C:\ueber\unter\riesig.mp4 nach
C:\ueber\riesig.mp4
zu verschieben, sollte ein Umbenennen der Datei riesig.mp4 reichen, falls sie noch nicht in C:\ueber vorhanden ist, das meinte ich.

Das hat nichts mit dem "löschen/umbenennen" des übergeordneten Ordners zu tun, da habe ich den TE schon richtig verstanden, siehe Luckie, der übergeordnete Ordner liegt ja immer in der selben Partition, also wird nur der Eintrag in der FAT umbenannt, falls möglich. In diesem Fall kann man sich das Kopieren+Löschen von riesig.mp4 sparen.

Da hast du mein "umbenennen" wohl falsch verstanden
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#28

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 19. Sep 2018, 18:57
ungefähr sowas?
Delphi-Quellcode:
sAlt := 'c:\temp\alt\irgendeine.mp3';
sWegdamit := '\alt\';
sNeu := AnsiReplaceText(sAlt,sWegDamit,'\');
if not SysUtils.RenameFile(sAlt,sNeu) then ShowMessage(Format('Fehler beim Umbenennen: %s',[sAlt,sNeu]));
In kurz (ohne Fehlerbehandlung ...):
SysUtils.RenameFile(sDateiname,AnsiReplaceText(sDateiname,'\alt\','\'));
  Mit Zitat antworten Zitat
old7
(Gast)

n/a Beiträge
 
#29

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 19. Sep 2018, 19:21
Jupp, und auf die Idee mit AnsiReplaceText für den Ü-Ordner wäre ich nicht gekommen (hätte die Backslashes von hinten geparst)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#30

AW: Pfadinhalte eine Ebene aufwärts kopieren

  Alt 19. Sep 2018, 19:22
Danke euch allen.
Ich hätte nie gedacht, dass es so viele verschiedene Ansätze gibt.
Mein eigentliches Problem ist, dass ich delphizip verwende und aus größeren ZIPfiles nur einige Dateien bzw. Verzeichnisse benötige. Diese sind so eingepackt, dass die Dateien, die ich entpacken will, in einem Unterverzeichnis stehen, beim Auspacken dieser Unterpfad aber stört, so ungefähr
im Zipfile
unnötiger Pfad\datei(en)
unnötiger Pfad\nötiger Pfad\datei(en)
unnötiger Pfad\nötiger Pfad\nötiger Pfad\datei(en)

ausgepackt soll dann so sein
datei(en)
nötiger Pfad\datei(en)
nötiger Pfad\nötiger Pfad\datei(en)

Ich habe bisher keine Möglichkeit im Delphizip gefunden, diesen Pfad schon beim Auspacken zu eliminieren.
Von Delphizip möchte ich aber auch nicht wechseln, da ich das in verschiedenen Projekten benutze.
Wenn man ein Basisverzeichnis für das Zipfile hätte, vom dem dann alles entzipt werden könnte, wäre das super.

Ich hoffe, dass erklärt noch einmal allen, was ich genau machen will.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 02:45 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