Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi kurioser Fehler beim auflisten der Dateien (?!) (https://www.delphipraxis.net/58436-kurioser-fehler-beim-auflisten-der-dateien.html)

MCQ 7. Dez 2005 04:33


kurioser Fehler beim auflisten der Dateien (?!)
 
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?

sh17 7. Dez 2005 07:28

Re: kurioser Fehler beim auflisten der Dateien (?!)
 
Nur ein Versuch

Mach mal aus


Delphi-Quellcode:
[/pre:1:8e5e25cdae]while hSuche<>INVALID_HANDLE_VALUE do
begin
Delphi-Quellcode:
[/pre:1:8e5e25cdae]
while hSuche<>INVALID_HANDLE_VALUE do
begin

jim_raynor 7. Dez 2005 07:30

Re: kurioser Fehler beim auflisten der Dateien (?!)
 
Es fehlt dir auch noch ein subdirs.Free. So hinterlässt du schöne Speicherlecks.

sh17 7. Dez 2005 08:08

Re: kurioser Fehler beim auflisten der Dateien (?!)
 
also bei mit gehts

was genau macht eigentlich

[delphi][pre:1:8e5e25cdae]...[delphi]

?

MCQ 7. Dez 2005 08:58

Re: kurioser Fehler beim auflisten der Dateien (?!)
 
Zitat:

Zitat von sh17
also bei mit gehts

was genau macht eigentlich

[delphi][pre:1:8e5e25cdae]...[delphi]

?

Also ich würd mal sagen phpBB-Code ... eingefügt hab ich den eigendlich nicht ... nun steht er aber drin, werds gleich mal editieren.

// edit, so jetzt ist der Code wieder so wie er unsprünlich sein sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 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