home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------------------------- *)
- (* DIRMTDTA.PAS *)
- (* (c) 1987 Michael Ceol & PASCAL INT. *)
- (* Eintrag aus DTA (MS-DOS und TOS) in das Format der Bibliothek bringen: *)
- PROCEDURE DTAtoDirEntry (VAR entry: Dir_Rec);
- VAR i: INTEGER; temp: Dir_Str;
- BEGIN
- WITH entry DO
- IF DirResult = DOSfnok THEN BEGIN
- (* Dateiname: CHAR-Array nach String, 0-Byte kennzeichnet das Ende *)
- temp := ''; i := 1;
- WHILE (i <= 13) AND (DirDTA^.name[i] <> Chr(0)) DO BEGIN
- temp := Concat(temp, DirDTA^.name[i]); i := Succ(i);
- END;
- (* wg. Sortierung Name und Art (Extension) trennen: *)
- i := Pos('.',temp); ext := '';
- IF i > 1 THEN ext := Copy(temp,Succ(i),Length(temp)-i) (* Ext. vorh. *)
- ELSE i := Succ(Length(temp)); (* keine Ext. oder 'Mama'-Verzeichnis *)
- name := Copy(temp,1,Pred(i));
- (* wiederum wg. Sortierung mit Leerzeichen auffuellen: *)
- FOR i := Succ(Length(name)) TO 8 DO name := Concat(name,' ');
- FOR i := Succ(Length(ext)) TO 3 DO ext := Concat(ext,' ');
-
- (* MS-DOS- und TOS-Format von Datum und Zeit:
- Datum - Bits: 0..4: Tag, 5..8: Monat, 9..15: Jahr-1980
- Zeit - Bits: 0..4: Sek. im 2-Sekunden-Intervall,
- 5..10: Minuten, 11..15: Stunden *)
-
- (* Uhrzeit der Dateierstellung nach Zeichenfolge (Std., Min., Sec.): *)
- IntStr(ShiftR(DirDTA^.time, 11), 2, temp);
- time := temp;
- IntStr(AndInt(ShiftR(DirDTA^.time, 5),63), 2, temp);
- time := Concat(time, temp);
- IntStr(AndInt(DirDTA^.time, 31)*2, 2, temp);
- time := Concat(time, temp);
- (* Datum der Dateierstellung nach Zeichenfolge (Jahr, Monat, Tag): *)
- IntStr(ShiftR(DirDTA^.date, 9) + 1980, 4, temp);
- date := temp;
- IntStr(AndInt(ShiftR(DirDTA^.date, 5), 15), 2, temp);
- date := Concat(date, temp);
- IntStr(AndInt(DirDTA^.date, 31), 2, temp);
- date := Concat(date, temp);
- (* schliesslich Dateigroesse und -Attribut: *)
- size := IntCard(DirDTA^.szhi) * 65536.0 + IntCard(DirDTA^.szlo);
- attr := DirDTA^.resv[21];
- END
- ELSE
- BEGIN
- name := ''; ext := ''; date := ''; time := ''; size := 0.0;
- END;
- END;
- (* ----------------------------------------------------------------------- *)
- (* DIRMTDTA.PAS *)