forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   File Manager и ОС (http://forum.boolean.name/showthread.php?t=14764)

alexprey 20.05.2011 19:57

Ответ: File Manager и ОС
 
AngeLvKedaX, ты в общем не разбираешься в программировании или только в mp?

alexprey 20.05.2011 20:00

Ответ: File Manager и ОС
 
im_zorg, какой то корявый алгоритм. С длинными путями будет долго считывать и есть файлы такого типа "blabla.mp3.bak". Собственно функция достаёт из любого имени расширеине
PHP код:

function GetFileExt(namestring): string;
 var 
iinteger;
     
cchar;
     return: 
string;
begin
 
return:= '';
 for 
i:= Length(name)-1 downto 0 do
 
begin
  c
:= GetChar(name,i);
  if 
<> '.' then return:= + return else break;
 
end;
 
GetFileExt:= return;
end


im_zorg 20.05.2011 20:29

Ответ: File Manager и ОС
 
в файле blablala.mp3.bak расширение bak а не как не mp3.bak!

alexprey 20.05.2011 21:14

Ответ: File Manager и ОС
 
im_zorg, да я знаю, но согласно твоему алгоритму у тебя такой и достанет. Я имею ввиду mp3.bak так как ты находишь первую точку в строке, а надо последнюю

Rock2roll 20.05.2011 23:18

Ответ: File Manager и ОС
 
Я просто год уже не писал на МП, ХТМЛ юзал)) зарабатывал сайтами. А многих функций МП и не знаю)) +логика моя не рулит))

JACUK 20.05.2011 23:47

Ответ: File Manager и ОС
 
Нада в либу добавить функцию возвращения расширения!

Rock2roll 21.05.2011 08:19

Ответ: File Manager и ОС
 
А надо бы...

im_zorg 21.05.2011 08:57

Ответ: File Manager и ОС
 
Цитата:

Сообщение от alexprey (Сообщение 189016)
im_zorg, да я знаю, но согласно твоему алгоритму у тебя такой и достанет. Я имею ввиду mp3.bak так как ты находишь первую точку в строке, а надо последнюю

если я нахожу первую то функция copy скопирует от положение этой точки+1(ну чтоб без точки скопировалось) и до конца строки!!! соответственно и blabla.mp3.bak копирует mp3.bak

im_zorg 21.05.2011 09:01

Ответ: File Manager и ОС
 
если надо с первой точки то не прибавляй 1 к положению точки...

alexprey 21.05.2011 10:37

Ответ: File Manager и ОС
 
im_zorg а расширение то на самом деле bak. Я про это говорю.
Расширение это то что указывается после последний точки
пример:
txtfile.txt = .txt
mp3file.mp3 = .mp3
txtmp3File.txt.mp3 = .mp3
Можешь даже проверить указав на компьютере такое имя файла он выдаст последнее расширение

Rock2roll 22.05.2011 23:14

Ответ: File Manager и ОС
 
ну просто очень прошу: помогите!!! Наведите пример простенького ФМ'a. ПРосто чтобы брал диски, можно переместиться в них, увидеть папки\файлы. Остальное сам доделаю...
просто ну ОЧЕНЬ нужно, а я даже представления не имею как делать

Rock2roll 22.05.2011 23:25

Ответ: File Manager и ОС
 
Вложений: 1
Вот демка
Примечание: на рабочем столе плеер требует файл
mmc/8419a9368f6f.mp3
В приложении-редакторе "папка" в окне "С чего начать" требует root/imag.jpg
Сохранения картинок в обеих приложениях происходит в папку root/

alexprey 23.05.2011 12:25

Ответ: File Manager и ОС
 
И так. Краткий курс по созданию ФС. Рассмотрю только как получить список дисков, как их правильно нарисовать, и как перейти к сл. папке.
1. Получаем список каталогов, диков
PHP код:

unit FS;
interface
function 
GetListstring;
procedure GetRoots;
procedure GetDirs(addbooleanpathstring);
procedure GetFiles(addbooleanpathstring);
implementation
uses jsr75i
;
var list: 
stringсписок файлов будем заносить сюда
//Для того, чтобы её нельзя было изменить из внешнего модуля сделаем эту переменную только для чтения
function GetListstring;
begin
 GetList
:= list;
endfunction
//Теперь получим список дисков
procedure GetRoots;
begin
 
list:= jsr75i.get_roots;
end;
//А тут получим список папок
procedure GetDirs(addbooleanpathstring);
//add - добавить это в list или записать по новой
//path - путь
begin
 
if add then
  
list:= list+jsr75i.get_dirs(path)
 else
 list:= 
jsr75i.get_dirs(path);
end;
//Список файлов
procedure GetFiles(addbooleanpathstring);
//параметры аналогичны GetDirs
begin
 
if add then
  
list:= list+jsr75i.get_files(path)
 else 
  list:= 
jsr75i.get_files(path);
end

2 теперь как нам нарисовать это все.
PHP код:

...
uses parse {самое главное},fs;//наш модуль
...
procedure RenderItem(itemstringx,yinteger);
begin
 
//тут рисуем конкретный айтем. Например
 //item - имя файла, папки, диска
 
drawText(item);
end;

procedure RenderPath(pathstring);
 var 
iinteger;
      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-do
  
RenderItem(parse.Get(i),5,i*15+5); //Заместо 5,i*15+5 указываешь нужный закон для указания координат. Здесь просто выводиться в столбик
end

Ну вот и все =)
Ещё советую завести переменную для хранения текущего пути. И во время перехода к сл. папке просто прибавляй название папки к текущему пути и заного вызывай процедуру рендера.

Rock2roll 23.05.2011 17:14

Ответ: File Manager и ОС
 
Сяду разбирать. Спасибо

Rock2roll 24.05.2011 08:21

Ответ: File Manager и ОС
 
Error, unit name must contain at least 2 characters


Часовой пояс GMT +4, время: 20:54.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot