Shanos Geschrieben 11. Februar 2011 Geschrieben 11. Februar 2011 Hey Ich wollte ein Programm schreiben, welches die Blockadressen von einer Datei aus einer Diskette ausgibt. Was ich mir für das Programm gedacht hatte: - Dateiname möchte ich als Benutzer eingeben - diese soll im Root Directory (Stammverzeichnis) gesucht werden (also Sektor 19 -32, das sind dann insgesamt 14 Sektoren die man durchsuchen muss) //wenn die datei nicht existiert soll eine Fehlermeldung kommen - nun schaut man im ersten FAT - Eintrag nach (beginnend bei 2, weil 0 und 1 schon für MS-DOS reserviert waren) - in dem FAT-Eintrag steht die Nummer des Clusters der die jeweils nächsten Daten der Datei enthält - dies soll solange gemacht werden bis die Blockadresse 0xFF7 - 0xFFF (ende) ist Bsp: 1. suche Datei Text.txt im RootDir 2. Datei wird gefunden 3. im RootDir-Eintrag nachschauen bei welchen Cluster die Datei beginnt 4. in unserem Beispiel wäre das Cluster 2 5. dann also FAT-Tabellen Eintrag 3 (man fängt von 0 an zu zählen) 6. Eintrag durchsuchen 7. Wenn =Wert 0x0FFF ist = letzter Sektor den man einlesen muss =Wert 0x0FF7 ist = Datenträger ist an dieser Stelle defekt =Wert 0x0000 ist = Cluster ist noch frei Jeder andere Wert (niedriger als 0x0FFF) ist die Nummer des Clusters, der die nächsten Daten der Datei enthält 8. angenommen in dem Eintrag der FAT-Tabelle von Cluster 2 steht 0x003 (daran erkennt man das man Cluster 3 einlesen müssen) 9. dort steht angenommen der Wert 0x010 (d.h Datei hat einen 3ten Cluster, 0x010 = 16dez, also Cluster 16) 10.Cluster 16 einlesen 11.FAT-Tabelle nachschauen was in Cluster 16 steht 12.Dort steht angenommen der Wert 0x0FFF (letzter Cluster der Datei) (in meinem Beispiel war der erste Cluster der Datei Cluster 2, da wir aber die ersten beiden FAT-Einträge nicht benutzten dürfen, deshalb aber keine 2 Cluster unbenutzt lassen wollen, müssen wir nur die Zahl 2 von der Clusternummer suptrahieren um die Clusternummer des Datenclusters zu erhalten, die wir einlesen müssen) So hoffe ihr könnt das Nachvollziehen Ich hab jetzt bloß keine Ahnung wie ich das ganze Ding umsetzen kann. Möchte das per Konsolenanwendung von Borland B. v2006 realisieren! Danke für alle Antworten. Mit freundlichen Grüßen Shanos Zitieren
Shanos Geschrieben 18. Februar 2011 Autor Geschrieben 18. Februar 2011 hab eine mögliche lösung gefunden aber trotzdem danke Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.