1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Dateisystem mit Pascal erkennen???!!!

Discussion in 'Programmieren' started by Bond, Feb 25, 2002.

Thread Status:
Not open for further replies.
  1. Bond

    Bond Halbes Megabyte

    Hi Pascal Fans!
    Kann mir mal jemand eine Funktion schreiben, mit der man erkennen kann, welches Dateisystem ein Laufwerk hat? [Bitte verständliche Deklaration, damit ich sie auch benutzen kann.] Also, FAT16, FAT32, NTFS sollte sie mindestens unterscheiden können.
    Oder ist das technisch nicht möglich?
    -Bond-
     
  2. kazhar

    kazhar Viertel Gigabyte

    Hallo Bond,

    Ich hab da eine Lösung für Dich; Allerdings funktioniert sie so wie sie dasteht nur bei Real-Mode-Programmen. (wegen dem Software-Interrupt)

    <TT>Type
    MIDRecord = Record
    Dummy: Word; {Füllstoff; Funktion unbekannt}
    SerialNum: LongInt; {Serien-Nummer der Partition}
    VolLabel: Array [1..11] of Char; {Name der Partition}
    FatType: Array [1..8] of Char; {Dateisystem}
    end;

    Function Label_Fat(Var Mid : MidRecord; Drive : Word) : Boolean;
    Var Regs : Registers;
    begin
    FillChar(Mid, SizeOf(Mid), 0); {Record komplett löschen}
    FillChar(Regs, SizeOf(Regs), 0); {dito}
    With Regs DO
    begin
    AX := $440D; {Interruptaufruf konfigurieren}
    BX := Drive;
    CX := $0866;
    DS := Seg(Mid);
    DX := Ofs(Mid);
    Intr($21, Regs); {SoftInterrupt#21-Aufruf = "MsDos"}
    Case AX of
    $01: Label_Fat:=False; {ein Fehler ist aufgetreten}
    $02: Label_Fat:=False;
    $05: Label_Fat:=False;
    else
    Label_Fat:=True; {alles OK}
    end;
    end;
    end;
    </TT>

    Der Parameter "Mid" liefert das Ergebnis zurück, mit "Drive" wird das Laufwerk übergeben (wobei wie üblich 1 für A:, 2 für B:, 3 für C: usw. steht). Liefert die Funktion TRUE zurück, dann wurde sie fehlerfrei ausgeführt (FALSE deutet z.B. auf eine nicht eingelegte Diskette oder einen nicht belegten Laufwerksbuchstaben hin)

    mfg Kazhar
     
Thread Status:
Not open for further replies.

Share This Page