DC-SWAT Forum

Полная версия: Приложение для DreamShell
Вы просматриваете yпpощеннyю веpсию форума. Пеpейти к полной веpсии.
Страниц: 1 2 3 4 5 6 7 8 9
Тогда смотри в сторону ярлыков, найди в module.c строчку while((ent = fs_readdir(fd)) != NULL) , это добавление пользовательских скриптов (lua и dsc) на рабочий стол, так же можно примудрить ярлыки, ну или используй dsc скрипты, напиши программку создающую dsc скрипт (по сути это текстовый документ).
а где находятся тела функций fs_readdir() и fs_open()?

просто, чтобы приложение отображало свои ярлыки, для начала нужно, чтобы оно НЕ отображало ярлыки основные
В ядре DS находится все что ты вызываешь, кроме того что написал сам.
Конкретно эти функции относятся к KallistiOS - http://gamedev.allusion.net/docs/kos-current/fs_8h.html
я понял, fs_open() берет путь папки из переменной path, но при этом после объявления этой переменной, ей ничего не присваивается.. Она тоже уже где-то глобально объявлена? Можно ли ей вручную прописать путь? я пробовал перед строчкой fd = fs_open() добавлять и path = "sd\ds\apps\test", и path = "sd/ds/apps/test" - безрезультатно, компилятор ругается..

еще пробовал для эксперимента path = app.getenv("PATH")
Не правильно понял.

Код:
file_t fd;                  // файловый дескриптор
dirent_t *ent;
char path[MAX_FN_LEN];   // переменная для пути к файлу

snprintf(path, MAX_FN_LEN, "%s/apps/test/", getenv("PATH"));   // копируем в переменную путь к нужной нам папке

fd = fs_open(path, O_RDONLY | O_DIR); // открываем для чтения папку

if(fd == FILEHND_INVALID){   // если папка не открылась
  
    ds_printf("DS_ERROR: Can't open directory\n")  //выводим в консоль сообщение о ошибке
    return CMD_ERROR; // возвращаем ошибку
}

while((ent = fs_readdir(fd)) != NULL) {  // читаем содержимое папки пока не дойдём до последнего файла

     ds_printf("%s\n", ent->name);  // выводим в консоль имя текущего файла
}

fs_close(fd);   // закрываем файл
return CMD_OK; //возвращаем успешное завершение
выходит, snprintf() помимо вывода на экран еще и присваивать умеет?

а если я хочу путь "%s/apps/test/" записать в отдельный файл, а оттуда добавить в функцию, мне в кавычках его писать или без?
(23.08.2015 06:40)SuperClaw писал(а): [ -> ]выходит, snprintf() помимо вывода на экран еще и присваивать умеет?

это две совершенно разные функции
printf()
sprintf()
snprintf отличается от sprintf тем, что в snprintf можно указать максимальную длину копируемых символов

(23.08.2015 06:40)SuperClaw писал(а): [ -> ]а если я хочу путь "%s/apps/test/" записать в отдельный файл, а оттуда добавить в функцию, мне в кавычках его писать или без?

Вот так в лоб из файла строчку не дёрнуть.
так ведь можно же так:

char testpath[30];
ifstream test.open("test.txt");
test.getline(testpath, 30);
test.close();
snprintf(path, MAX_FN_LEN, testpath, getenv("PATH"));

или не прокатит?
Тогда в текстовике должно быть /apps/test/
snprintf(path, MAX_FN_LEN,"%s%s" , getenv("PATH") , testpath);

ну и конечно не забывай что test.getline(testpath, 30); это не си это с++
в си можно fgets использовать

Взгляни на код приложения настроек, функция LoadSetting() и SettingsApp_SaveSetting ,сохранение на носитель с 547-ой строки
(08.12.2014 08:51)SWAT писал(а): [ -> ]You can use "path" variable for disk image path too:

Код:
os.execute("isoldr -a -c -x 0x8c004000 -e 2 -j 2 -f "..path.."/gdi2/3rdStrike/disk.gdi");

It's can help in the future use your scripts for any device.
os . execute ( "isoldr -o 2 -a -x 0x8cfe8000 -e 8 -j 0 -f /ide/18Wheeler/disk.gdi" );

how to put "true"?
(01.05.2016 06:27)aldair писал(а): [ -> ]
(08.12.2014 08:51)SWAT писал(а): [ -> ]You can use "path" variable for disk image path too:

Код:
os.execute("isoldr -a -c -x 0x8c004000 -e 2 -j 2 -f "..path.."/gdi2/3rdStrike/disk.gdi");

It's can help in the future use your scripts for any device.
os . execute ( "isoldr -o 2 -a -x 0x8cfe8000 -e 8 -j 0 -f /ide/18Wheeler/disk.gdi" );

how to put "true"?

What a "true"? True async DMA? Just add flag "-a" without "-e N".
Страниц: 1 2 3 4 5 6 7 8 9
URL ссылки