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