AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Exaktes Filecopy für Windows und Android
Thema durchsuchen
Ansicht
Themen-Optionen

Exaktes Filecopy für Windows und Android

Ein Thema von skoschke · begonnen am 30. Nov 2018 · letzter Beitrag vom 2. Dez 2018
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#11

AW: Exaktes Filecopy für Windows und Android

  Alt 30. Nov 2018, 14:01
Die zweiten Codeteile von mir nutzen nur IOUtils. Klappt da was nicht auf non-Windows?
Die Routinen aus IOUtils sollten auf allen Plattformen funktionieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Exaktes Filecopy für Windows und Android

  Alt 30. Nov 2018, 14:12
Genau diesen Eindruck hatte ich auch, aber ich kann es halt nicht nachmachen.

Danke für Aufklärung!


Ps: Mir fehlen da auch Grundlagenkenntnisse für non-Windows und was da für Attribute/Datumstempel tatsächlich existieren/berücksichtigt werden müssen, an TE bitte vorher informieren, meine Basics zeigen nur Windows Möglichkeiten um was so genau wie möglich dem original nachzuempfinden.

PPs: Dieses Thema gehört nicht nach WinApi :-]
Gruß vom KodeZwerg

Geändert von KodeZwerg (30. Nov 2018 um 14:26 Uhr)
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Exaktes Filecopy für Windows und Android

  Alt 30. Nov 2018, 14:27
Inzwischen war Post #5 entstanden, klingt hervorragend!

Erst kopieren und dann per

Delphi-Quellcode:
...
  sor := 'c:\tmp\Neu.txt';
  des := 'c:\tmp\Neu_2.txt';
  TFile.Copy(sor, des, true);
  dt := TFile.GetCreationTime(sor);
  TFile.SetCreationTime(des, dt);
  dt := TFile.GetCreationTime(des);
  TFile.SetCreationTimeUtc(des, dt);
  dt := TFile.GetLastAccessTime(sor);
  TFile.SetLastAccessTime(des, dt);
  dt := TFile.GetLastWriteTime(sor);
  TFile.SetLastAccessTimeUtc(des, dt);
  dt :=TFile.GetLastWriteTime(sor);
  TFile.SetLastWriteTime(des,dt);
  dt:=TFile.GetLastWriteTimeUtc(sor);
  tfile.SetLastWriteTimeUtc(des,dt);
die gewünschten Angaben anpassen, würde auch unter Android compilierbar sein, aber:

Ich erstelle die Datei Neu.txt im Explorer, deren Anderungsdatum ist heute 14:22 (stimmt), das Erstelldatum aber heute 14:14 ????
Die kopierte Datei hat das Änderungsdatum wie die Originaldatei, als Erstelldatum aber 15:14 (in der Zukunft!)

Ich krieg die Krise!
Warum das denn nun?

Ciao
Stefan
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Exaktes Filecopy für Windows und Android

  Alt 30. Nov 2018, 14:32
Delphi-Quellcode:
  dt := TFile.GetCreationTime(sor);
  TFile.SetCreationTime(des, dt);
  dt := TFile.GetCreationTimeUtc(des);
  TFile.SetCreationTimeUtc(des, dt);

  dt := TFile.GetLastAccessTime(sor);
  TFile.SetLastAccessTime(des, dt);
  dt := TFile.GetLastAccessTimeUtc(sor);
  TFile.SetLastAccessTimeUtc(des, dt);

  dt := TFile.GetLastAccessTime(sor);
  TFile.SetLastAccessTime(des, dt);
  dt := TFile.GetLastAccessTimeUtc(sor);
  TFile.SetLastAccessTimeUtc(des, dt);

  dt :=TFile.GetLastWriteTime(sor);
  TFile.SetLastWriteTime(des,dt);
  dt:=TFile.GetLastWriteTimeUtc(sor);
  tfile.SetLastWriteTimeUtc(des,dt);
im vorigen posting war ein Vertipper per copy/paste, die Datumsangaben sind nun identisch für beide Dateien, unklar ist aber warum die Datei 8 Minuten vor ihrer Erzeugung erstellt wurde!

Ciao
Stefan
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#15

AW: Exaktes Filecopy für Windows und Android

  Alt 30. Nov 2018, 14:34
Schreib dir am besten einen Wrapper für all das oder so. Auf die Existenz der Quelldatei muss geprüft werden sonst kracht es.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Exaktes Filecopy für Windows und Android

  Alt 30. Nov 2018, 14:36
Lass mal unter Windows das ganze UTC gedöns raus. Bei mir klappt es.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
30. Nov 2018, 18:56
Dieses Thema wurde am "30. Nov 2018, 18:56 Uhr" von "Luckie" aus dem Forum "Win32/Win64 API (native code)" in das Forum "Cross-Platform-Entwicklung" verschoben.
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#18

AW: Exaktes Filecopy für Windows und Android

  Alt 30. Nov 2018, 19:15
Android ist Linux. Da würde ich mir erst gar keine Mühe für machen. Das ganze Rechtesystem bei Android/Linux ist viel zu kompliziert als dass man da groß Zeit für investieren sollte finde ich.
Ein Besitzer, eine Gruppe. Besitzer, Gruppe und Alle haben Rechte (oder nicht) zu Lesen, Schreiben, Ausführen.

Im Gegensatz dazu besitzt Windows beliebig komplexe ACLs. Jede Datei kann theoretisch dutzende verschiedene Rechte haben, jeweils mit anderen Nutzern oder Gruppen, namentlich oder per Konstante, mit oder ohne Vererbung von übergeordneten Rechte.

Jetzt wundert mich auch nicht mehr, warum Du so gegen Lazarus mobbst
Ich weiß leider nicht, wie das unter Delphi geht, aber unter FreePascal ist das simpel:
https://www.freepascal.org/docs-html...x/fpchown.html
https://www.freepascal.org/docs-html...x/fpchmod.html
Und schon wären die Berechtigungen kopiert. Mit Windows & ACLs dagegen kann man das exakte Kopieren von Rechten nicht einmal nur auf die Datei bezogen definieren (was auch Vorteile hat).
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#19

AW: Exaktes Filecopy für Windows und Android

  Alt 30. Nov 2018, 19:16
Ne, gegen Lazurus mobbe ich nur, weil die IDE nicht zeitgemäß ist und das schon lange nicht mehr.
Bei Lazurus habe ich den Eindruck Wo viele Hände dran arbeiten, entsteht viel Chaos

Vielleicht gibt es in einem Jahr oder so ja endlich den Android Compiler für die Community-Edition. Das wäre ein Traum.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Exaktes Filecopy für Windows und Android

  Alt 30. Nov 2018, 20:19
Delphi-Quellcode:

if ( TFile.Exists( Sor ) and TFile.Exists( Des ) ) then
begin
{$IFDEF WINDOWS}
  TFile.SetCreationTime( Des, TFile.GetCreationTime( Sor ) );
  TFile.SetLastAccessTime( Des, TFile.GetLastAccessTime( Sor ) );
  TFile.SetLastWriteTime( Des, TFile.GetLastWriteTime( Sor ) );
{$ELSE WINDOWS}
  TFile.SetCreationTimeUtc( Des, TFile.GetCreationTimeUtc( Sor ) );
  TFile.SetLastAccessTimeUtc( Des, TFile.GetLastAccessTimeUtc( Sor ) );
  TFile.SetLastWriteTimeUtc( Des, TFile.GetLastWriteTimeUtc( Sor ) );
{$ENDIF WINDOWS}
  TFile.SetAttributes( Des, TFile.GetAttributes( Sor ) );
end;
So hier könnte es richtig sein.
Gruß vom KodeZwerg

Geändert von KodeZwerg (30. Nov 2018 um 20:30 Uhr) Grund: bugfixing
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 21:55 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