Einzelnen Beitrag anzeigen

Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#1

[XE] Bug in TDirectory.Copy, gibts schon einen QC eintrag?

  Alt 4. Sep 2014, 16:31
Moin,
Habe einen Bug in TDirectory.Copy festgestellt. Habe nachgeguckt ob es bereits einen QC-Eintrag gibt, schien aber nicht so(vllt hab ich auch falsch gesucht, kann das jemand bestätigen?).
Könntet ihr vllt einmal nachgucken, ob der Bug in einer der Folgeversionen (xe2-xe7, jenachdem was ihr habt) gefixxt wurde?

Der Bug:
Normalerweise kopiert TDirectory.Copy die Ordnerstruktur von Source nach Destination, undzwar rekursiv.
Wenn ich folgenden pfad habe:
C:\Foo\FooB\File.txt

kann ich folgendes machen um alles zu kopieren:

TDirectory.Copy('C:\Foo', 'D:\Target') Bei folgendem geht es aber nicht, der Ordner FooB ist dann nämlich leer:

TDirectory.Copy('C:\Foo\', 'D:\Target') Kaputt geht es nur, weil am Ende ein Backslash angefügt wurde. In der Methode gibt es einen aufruf zu StuffString, dort möchte man den SourcePfad vom kompletten Pfad am Anfang abschneiden(also praktisch soetwas wie ExtractRelativePath)

Die Länge des SourceDir-Strings wird allerdings falsch berechnet, nämlich so:

Length(SourceDir) + Length('\') Es wird also immer ein Backslash dazugerechnet, hat der Pfad also bereits eines, geht der erste Buchstabe des relativen Pfades verloren. TFile.Copy schlägt dann fehl(was auch nicht zurückgegeben wird). Wahrscheinlich wäre

Length(IncludeTrailingPathDelimiter(SourceDir)) besser gewesen.

Jedenfalls: Gibts diesen Bug in den folgeversionen noch oder vllt schon einen QC Eintrag, den ich nur übersehen habe?

MFG
Memnarch
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden

Geändert von Memnarch ( 4. Sep 2014 um 16:34 Uhr)
  Mit Zitat antworten Zitat