Thema: Delphi Festplattenzugriffe

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#49

Re: Festplattenzugriffe

  Alt 4. Sep 2006, 23:14
Moin Mackhack,

ich glaube ich habe den Fehler gefunden:

Ein SetLength steht an der falschen Stelle

Delphi-Quellcode:
          // Falsch
          if iLen = 0 then begin
            FsResult := 'ERROR';
          end else begin
            FsResult := FsPath + '\' + FsResult;
            SetLength(FsResult,iLen);
          end;


          // Richtig
          if iLen = 0 then begin
            FsResult := 'ERROR';
          end else begin
            SetLength(FsResult,iLen);
            FsResult := FsPath + '\' + FsResult;
          end;
So 'was Blödes

Ausserdem habe ich noch etwas gefunden:

Da der Dateiname in der Struktur FILE_NOTIFY_INFORMATION (wFilename) ja vom Typ WChar ist, kann die Längenangabe verkleinert werden:

Delphi-Quellcode:
  FILE_NOTIFY_INFORMATION = packed record
    dwNextEntryOffset : DWORD;
    dwAction : DWORD;
    dwFileNameLength : DWORD;
    wFilename : array [1.._iFilenameLength shr 1] of WCHAR; // shr 1 ist neu
  end;

[EDIT]
Korrgierte Demo hochgeladen
BUG: SetLength in der falschen Zeile
BUG: Länge von wFilename in FILE_NOTIFY_INFORMATION
[/EDIT]

[EDIT2]
Demo erneut korriert
BUG: Man sollte auch den Buffer für das Ergebnis (FNI) initialisieren
BUG: Länge von wFilename in FILE_NOTIFY_INFORMATION. Wenn ich durch 2 teilen will sollte ich wohl besser nicht shr 2 nehmen
[/EDIT2]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat