Вот посмотрите код что то не работает!

program TxT_Edtihion2;
uses jsr75;
uses fsafm;
var
cmdNext : command;
cmdBack : command;
cmdQuit : command;
PCmd,MCmd, clicked : command;
str : string; // буфер
files: array[1..200] of string; // имена файлов, коичество файлов = размер массива
filesID: array[1..200] of integer; // ID строк
nameT : string; // текущая папка
num : integer; // щечики
iID : integer;
nfile : string;
etc : string;
//--------------------------------------------------------------------------------------
{Мои булеаны!}
BultextBox, BultextOpen : boolean;
//---------------------------------------------------------------------------------------
{Указываем на процедуры которые идут после комманд на них}
procedure textBox; forward;
procedure textOpen; forward;
//---------------------------------------------------------------------------------------
procedure textOpen;
begin
cmdNext := CreateCommand('ок', CM_OK, 1);
cmdBack := CreateCommand('выход', CM_EXIT, 1);
nameT:= ''; // начальная папка
while (clicked <> cmdBack) do
begin
// очищаем команды
removeCommand(cmdNext);
removeCommand(cmdBack);
Repaint; // обновление экрана
if nameT = '' then // проверка на нахождение в корне
begin
str:=fsafm.list_roots(''); // чтение дисков
num:= fsafm.num_disk(nameT); // определяем кол-во дисков
end
else
begin
str:=fsafm.list_(nameT); // чтение папок
num:= fsafm.num_dir(nameT); // определяем кол-во папок
end;
files [1]:= '...'; // добавляем первой строкой, выполняет функцию вверх
if str <> '' then // проверка наличия файлов
begin
for i:=2 to num + 1 do // очистка меню
begin
files [i]:= ''
end;
for i:=2 to num + 1 do
begin
files [i]:= copy(str, 0, pos(str, '|') ); //заполнение массива именами
str:= copy(str, pos(str, '|') + 1 , length(str));
if pos(str, '|') = -1 then // проверка знака '|' в строке
begin
str:= '.';
break;
end;
end;
end;
// создаем меню
showMenu(nameT, CH_IMPLICIT);
for i:= 1 to num + 1 do
begin
if files[i] <> '' then
begin
filesID [i] := menuAppendString(files[i]); // создаем строки
end;
end;
// добавление команд
AddCommand(cmdNext);
AddCommand(cmdBack);
Repaint; // обновление экрана
repeat // ждем нажатия на команду
delay(100);
clicked:= getClickedCommand;
until clicked <> emptyCommand;
if clicked <> cmdBack then
begin
iID:= menuGetSelectedIndex + 1; // к ID выбранной строки прибавим 1, для удобства
if iID=1 then // если первая строка, переходим вверх
begin
if Length(nameT) <= 3 then // проверка на нахождение в корне
begin
nameT:='';
end
else
begin
for i:= 2 to length(nameT) do // команда вверх, вычисление предидущей папки
begin
if copy(nameT, length(nameT) - i, length(nameT) - i + 1 ) = '/' then
begin
nameT:= copy(nameT, 0, length(nameT) - i + 1 );
break;
end;
end;
end;
end
else
begin
if copy(files[iID], length(files[iID]) - 1, length(files[iID])) = '/' then nameT:= nameT + files[iID]; // если выбрана папка переходим в нее
if length(files[iID]) >= 4 then
begin
if copy(files[iID], length(files[iID]) - 4, length(files[iID])) = '.gif' then debug('gif');
if copy(files[iID], length(files[iID]) - 4, length(files[iID])) = '.txt' then
begin
buf:= jsr75.read_file(nameT + files[iID]);
textbox;
end;
end;
end;
end;
end;
end;
//---------------------------------------------------------------------------------------
procedure textBox;
begin
buf:= jsr75.read_file(fname);
buf:= getTextBoxString;
showtextbox('Редактирование',buf,2000,tf_any);
PCmd := createCommand('Сохранить', CM_SCREEN, 1);
MCmd := createCommand('Меню', CM_OK, 0);
addCommand(PCmd);
addCommand(MCmd);
repaint;
repeat
clicked := getClickedCommand;
until clicked <> emptyCommand;
if clicked = MCmd then logMenu;
if clicked = PCmd then logSave;
end;
//---------------------------------------------------------------------------------------
begin
textOpen;
end.