Ти-основной файловый менеджер


Проверено на моем ти-84 плюс СЕ.

Переменные:

  • F: сохраняет файл листинг кода
  • N: сохраняет текущий файл идентификатор
  • I, J, L: временные переменные
  • Str1: используется для ввода и вывода
  • Str2, Str3: временные переменные
  • Str0: используется для хранения фактических данных
  • ⌊DATA: магазины начала файлов

Данные - программы, предназначенные для хранения файлы, код# файлы - программы, используемые для хранения файлов по имени.

DATAADD (создает новый файл и возвращает идентификатор файла)

augment(⌊DATA,{⌊DATA(dim(⌊DATA))})→⌊DATA
dim(⌊DATA)-1→N

DATAGET (получает содержимое текущего файла)

If ⌊DATA(N+1)-⌊DATA(N)
Then
sub(Str0,⌊DATA(N)+1,⌊DATA(N+1)-⌊DATA(N))→Str1
Else
" "→Str1
End
Str1

DATAINI (инициализация/сброс файлов)

" "→Str0
{1}→⌊DATA

Набор данных (устанавливает содержимое файла)

length(Str1)-⌊DATA(N+1)+⌊DATA(N)→L
If length(Str0)-⌊DATA(N+1)>0
Then
sub(Str0,1,⌊DATA(N))+Str1+sub(Str0,⌊DATA(N+1),length(Str0)-⌊DATA(N+1))→Str0
Else
sub(Str0,1,⌊DATA(N))+Str1→Str0
End
For(I,N+1,dim(⌊DATA))
⌊DATA(I)+L→⌊DATA(I)
End

ДАТАТЕСТ (тестовая программа для данных программ)

prgmDATAINI
prgmDATAADD
prgmDATAGET
Disp Str1
"ABC"→Str1
prgmDATASET
prgmDATAGET
Disp Str1
prgmDATAADD
prgmDATAGET
Disp Str1
1→N
prgmDATAGET
Disp Str1
2→N
"DEF"→Str1
prgmDATASET
prgmDATAGET
Disp Str1
1→N
prgmDATAGET
Disp Str1
"12"→Str1
prgmDATASET
prgmDATAGET
Disp Str1

Файлы (полу-графический файловый менеджер интерфейс)

Lbl L
Menu("Choose an action","List files",LI,"Create file",CR,"Open file",OP,"View file",VI,"Edit file",ED,"View home screen",VH,"Advanced features...",AD,"Exit",E)
Lbl AD
Menu("Advanced features","Initialize/reset files",RF,"Initialize/reset all data",RD,"View current file ID",ID,"Back",L)
Lbl LI
prgmFILESLST
Pause Str1
Goto L
Lbl CR
Input "FILENAME: ",Str1
prgmFILESADD
Goto L
Lbl OP
Input "FILENAME: ",Str1
prgmFILESID
Goto L
Lbl VI
prgmDATAGET
Pause Str1
Goto L
Lbl ED
Input "NEW CONTENTS: ",Str1
prgmDATASET
Goto L
Lbl VH
Pause ""
Goto L
Lbl RF
prgmFILESINI
Goto L
Lbl RD
prgmDATAINI
Goto L
Lbl ID
Disp N
Goto L
Lbl E

FILESADD (создается новый файл)

Str1→Str2
prgmDATAADD
N→I
F→N
prgmDATAGET
Str1+" "+Str2+" "+toString(I)→Str1
prgmDATASET

FILESID (возвращает идентификатор файла)

Str1→Str2
F→N
prgmDATAGET
Str1→Str3
3→I
While I and Str1≠Str2
Str3→Str1
I→J
inString(Str1," ",I)+1→I
If I
Then
sub(Str1,J,I-J)→Str1
Else
sub(Str1,J,length(Str1)-J)→Str1
End
End
inString(Str3," ",I)+1→I
inString(Str3," ",I)→J
If J
Then
sub(Str3,I,J-I)→Str1
Else
sub(Str3,I,length(Str3)-I+1)→Str1
End
expr(Str1)→N

FILESINI (инициализация индексного файла)

prgmDATAADD
N→F

FILESLST (списки имен файлов, разделенных пробелами)

F→N
prgmDATAGET
" "→Str2
2→I
While I
inString(Str1," ",I+1)→J
If not(J)
Goto E
Str2+sub(Str1,I,J-I)→Str2
inString(Str1," ",J+1)→I
End
Lbl E
If length(Str2)<3
Then
""→Str1
Else
sub(Str2,3,length(Str2)-2)→Str1
End

FILESTST (тестовая программа для файл - программы)

prgmFILESINI
prgmFILESLST
Disp Str1
"ABC"→Str1
prgmFILESADD
prgmFILESLST
Disp Str1
"123"→Str1
prgmFILESADD
prgmFILESLST
Disp Str1


141
2
задан 2 марта 2018 в 01:03 Источник Поделиться
Комментарии