Veröffentlicht 11. Februar 201114 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.