Einzelnen Beitrag anzeigen

blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#1

CopyFile() plattformunabhängig

  Alt 25. Apr 2009, 00:43
Hallo.

Ich möchte meine Anwendung plattformunabhängig gestalten. Ich konnte bis jetzt fast alle Referenzen zu der Unit Windows.pas durch Äquivalente der RTL ersetzen. Doch bei CopyFile() hakt es. Ein Blick in die Hilfe brachte das Ergebnis, dass es in der RTL (zumindestens bei D7) keine Funktion gibt, sondern nur die WinAPI.

Da zum Einen bestimmt viele Leute dieses Problem haben und zum Anderen CopyFile() eine sehr wichtige Funktion ist, dachte ich mir, es müsste sicherlich einen einfachen MyCopyFile() Quellcode geben. Doch ich habe nichts gefunden!

Kennt jemand einen guten Code bzw. kann mir bei der Entwicklung einer äquivalenten Funktion helfen? Wie ist es in FreePascal, Kylix oder Lazarus, die ja allesamt auch für Linux compilieren können, gelöst worden? Ist dort eine derartige Funktion vorhanden oder hoffen sie, dass WinE o.ä. eine Art borland.Windows.so bereitstellt?

Teil 1 wäre das binäre Kopieren der Datei. Ich denke, das lässt sich mittels AssignFile() lösen - bisher habe ich das aber nur mit Textdateien gekannt. Wie ich sicher Binär kopiere, weiß ich noch nicht genau.

Der schwierigere Teil 2 wäre dann das Kopieren der Attribute (außer der Sicherheitsattribute) sowie der Zeitstempel. Schließlich soll die Kopie auch wirklich eine Kopie sein. Nur wie erledigt man das zuverlässig und auch noch plattformunabhängig?

Das Wichtigste ist, dass die Funktion möglichst genau so arbeitet wie das WinAPI-Pendant (ansonsten könnten Aufrufe mit z.B. falschen Erfolgswert schlimmstenfalls zum Datenverlust führen, wenn die Quelldatei dann z.B. aufgrund des laufwerksübergreifenden Verschiebens gelöscht wird). Dann könnte man auch eine Wrapper-Funktion mit Compilerflags realisieren.

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat