Ich wollte grad eine
DLL schreiben die mir aus mehreren Dateien ein Arciv erstellt und aus diesem Archiv auch wieder diese Dateien erstellen kann. Nun komme ich aber bereits beim aulisten der Dateien zu einem kuriosen Fehler den ich mir nicht erklären kann. ier der bisherige Quelltext der Funktion:
Delphi-Quellcode:
procedure CreateHeader(path:PChar;var header:array of char; var HeaderSize:Cardinal; relpath:pchar; FirstFilePos:Cardinal=0);
var subdirs : TStrings;
hSuche : THandle;
finddata : _WIN32_FIND_DATA;
i : integer;
posval : cardinal;
begin
// erstellt den Achive-Header und schreibt ihn in die Variable "header"
subdirs:=TStringList.Create;
hSuche:=0;
hSuche:=FindFirstFile(PChar(path+'\*'),finddata);
memo.Lines.Add('');
memo.Lines.Add(path);
while hSuche<>INVALID_HANDLE_VALUE do
begin
if (string(finddata.cFileName[0])<>'.') and (string(finddata.cFileName[0])<>'..') then
begin
if DirectoryExists(path+'\'+finddata.cFileName) then
begin
subdirs.Add(finddata.cFileName);
memo.Lines.Add(finddata.cFileName+' <-- dir');
end
else
begin
memo.Lines.Add(finddata.cFileName+' <- file');
end;
end;
FindNextFile(hSuche,FindData);
if GetLastError=ERROR_NO_MORE_FILES then hSuche:=INVALID_HANDLE_VALUE;
end;
if subdirs.Count=0 then exit;
for i := 0 to subdirs.Count-1 do
CreateHeader(PChar(path+'\'+subdirs.strings[i]),header,headersize,PChar(relpath+'\'+subdirs.strings[i]),posval);
end;
In der MemoBox steht nach ausführung dieses Codes folgender Text:
Zitat:
D:\Projects\PHP\online-raub
inc.config.php <- file
init_vars.php <- file
Neuer Ordner <-- dir
site.dieb.php <- file
site.transfer.php <- file
site.userstat.php <- file
tresor.php <- file
_notes <-- dir
D:\Projects\PHP\online-raub\Neuer Ordner
Neu Textdokument.txt <- file
_notes <-- dir
D:\Projects\PHP\online-raub\Neuer Ordner\_notes
dwsync.xml <- file
Kopie von Neuer Ordner <-- dir
D:\Projects\PHP\online-raub\Neuer Ordner\_notes\Kopie von Neuer Ordner
_notes <-- dir
D:\Projects\PHP\online-raub\Neuer Ordner\_notes\Kopie von Neuer Ordner\_notes
dwsync.xml <- file
D:\Projects\PHP\online-raub\_notes
dwsync.xml <- file
Entferne ich nun nur diese beiden Zeilen im Quelltext:
Delphi-Quellcode:
memo.Lines.Add('');
memo.Lines.Add(path);
Sieht die ausgabe wie folgt aus:
Zitat:
inc.config.php <- file
init_vars.php <- file
Neuer Ordner <-- dir
site.dieb.php <- file
site.transfer.php <- file
site.userstat.php <- file
tresor.php <- file
_notes <-- dir
Die Dateien in den unterordnern (z.B. dwsync.xml und Neu Textdokument.txt) fehlen nun völlig, obwohl sie laaut Qulltext angezeigt werden müssten.
Kann mir jemannd dieses Phänomän erklären?