И так. Краткий курс по созданию ФС. Рассмотрю только как получить список дисков, как их правильно нарисовать, и как перейти к сл. папке.
1. Получаем список каталогов, диков
unit FS;
interface
function GetList: string;
procedure GetRoots;
procedure GetDirs(add: boolean; path: string);
procedure GetFiles(add: boolean; path: string);
implementation
uses jsr75i;
var list: string; список файлов будем заносить сюда
//Для того, чтобы её нельзя было изменить из внешнего модуля сделаем эту переменную только для чтения
function GetList: string;
begin
GetList:= list;
endfunction
//Теперь получим список дисков
procedure GetRoots;
begin
list:= jsr75i.get_roots;
end;
//А тут получим список папок
procedure GetDirs(add: boolean; path: string);
//add - добавить это в list или записать по новой
//path - путь
begin
if add then
list:= list+jsr75i.get_dirs(path)
else
list:= jsr75i.get_dirs(path);
end;
//Список файлов
procedure GetFiles(add: boolean; path: string);
//параметры аналогичны GetDirs
begin
if add then
list:= list+jsr75i.get_files(path)
else
list:= jsr75i.get_files(path);
end;
2 теперь как нам нарисовать это все.
...
uses parse {самое главное},fs;//наш модуль
...
procedure RenderItem(item: string; x,y: integer);
begin
//тут рисуем конкретный айтем. Например
//item - имя файла, папки, диска
drawText(item);
end;
procedure RenderPath(path: string);
var i: integer;
list: string;
begin
//Получим список нужных элементов
//если path = :: значит мы будем получать список дисков, иначе список файлов и папок
if path = '::' then fs.GetRoots else
begin
fs.GetDirs(false,path);
fs.GetFiles(true,path);
end;
list:= fs.GetList;
//Теперь надо разбить на элементы массива
parse.clear;
parse.line(list,'|');
//Теперь можно рисовать
for i:= 0 to parse.len-1 do
RenderItem(parse.Get(i),5,i*15+5); //Заместо 5,i*15+5 указываешь нужный закон для указания координат. Здесь просто выводиться в столбик
end;
Ну вот и все =)
Ещё советую завести переменную для хранения текущего пути. И во время перехода к сл. папке просто прибавляй название папки к текущему пути и заного вызывай процедуру рендера.