Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Benmik,
12. Mai 2020
Da bringt mich ja schon mal gut weiter.
Die aufrufende Routine heißt function TFrmMFT.MFTEnumCallback(AUSN: PUSNRecord; Extra: Pointer): Boolean;, und sie ruft als Erstes USNRecFromPointer(AUSN); auf. Dazwischen geschieht nichts.
Bei einem Beispiel-Dateinamen werden 41 Zeichen übergeben, das letzte ist nicht #0; die FileNameLength ist 22 und der Dateiname 11 Zeichen lang.
EDIT:...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Benmik,
12. Mai 2020
Nein, mein Code erscheint mir als Gefrickel und ich denke, dass es eine bessere Lösung gibt.
Das Round ist notwendig, damit ein Integer rauskommt. Ich hätte auch Trunc() nehmen können.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Benmik,
12. Mai 2020
Ich dachte, ich hätte alles Wichtige an Code mitgeliefert. Was fehlt dir?
EDIT: Das sind Delphi-Funktionen.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Benmik,
12. Mai 2020
Ich parse die MFT mittels eines USN-Records:
USN_RECORD = record
...
FileNameLength: Word;
FileNameOffset: Word;
FileName: PWChar;
end;
Dort ist FileName als PWChar deklariert, was über MarshaledString ein PWideChar ist.
Die Zuweisung von FileName geschieht in function USNRecFromPointer(const P: Pointer): TUSNRecord; (P ist ein Pointer auf den Laufwerks-Char) mittels...