Все для Sony Ericsson, патчи, эльфы, моддинг, прошивка
  
Логин: Пароль: Запомнить: Привет гость! Зарегистрируйся или авторизируйся для получения доп. возможностей!
Разделы
PDA версия сайта
TrackIDentify
Новости
Статьи
Файлы
Патчи
Патчи A2
Патчи db2020
Эльфы
Исходники эльфов
Wiki
Форум
Опросы
Обратная связь
Развернуть/Свернуть
 
Развернуть/Свернуть

Полезные функции : Эльфостроение : Эльфы : Форум : Для Sony Ericsson патчи эльфы моддинг прошивка
/  Список форумов
   /  Эльфы
      /  Эльфостроение
   /  Полезные функции
На печать 
Правила 
Страница 1 из 2: [1] 2 »

arban


Elfmaker


Регистрация: 2.3.08
Сообщений: 802
Репутация: 3111





 
  #1 [22.02.10, 14:05] Полезные функции   

 
Делимся самописными функциями, не обязательно своими (указываем автора или эльф, откуда взята функа), главное проверенными и 100% рабочими.




LG Optimus
My SVN | Elflib Wiki | Elf SVN

arban


Elfmaker


Регистрация: 2.3.08
Сообщений: 802
Репутация: 3111





 
  #2 [22.02.10, 14:15] Re: Полезные функции   

 
Начну, пожалуй:

Простейшая функция, которая обновляет бук:

Код:
void BookObj_Refresh(BOOK * book)
{
  BookObj_Hide(book,0);
  BookObj_Show(book,0);
}


Использовать, если хотите обновить GUI в данной книге, например, при смене стиля




LG Optimus
My SVN | Elflib Wiki | Elf SVN
Спасибо сказали: Alex_E, DuXeN0N, toha257

Slawwan


Elfmaker


Регистрация: 30.7.07
Сообщений: 155
Репутация: 1045
Откуда: Екатеринбург




 
  #3 [22.02.10, 14:30] Re: Полезные функции   

 
склеивает путь и имя папки/файла
из L"/path" L"name" сделает L"/path/name"
Код: 
wchar_t * CreateFullName(wchar_t * path, wchar_t * name)
{
  int len = wstrlen(path)+wstrlen(name)+1;
  wchar_t * fullname = new wchar_t[len+1];
  wstrcpy(fullname, path);
  wstrcat(fullname, L"/");
  wstrcat(fullname, name);
  return fullname;
}


возвращает путь относительно папки пользователя
Код: 
wchar_t * GetRelativePath(wchar_t * dir)
{
  wchar_t * res = 0;
  wchar_t * dir_user = GetDir(DIR_USER|MEM_INTERNAL);
  int len = wstrlen(dir_user);
  if (!wstrcmpni(dir_user, dir, len))
  {
    dir += len;
    res = new wchar_t[wstrlen(dir)+1];
    return wstrcpy(res, dir);
  }
  dir_user = GetDir(DIR_USER|MEM_EXTERNAL);
  len = wstrlen(dir_user);
  if (!wstrcmpni(dir_user, dir, len))
  {
    dir += len;
    res = new wchar_t[wstrlen(dir)+1];
    return wstrcpy(res, dir);
  }
  res = new wchar_t[wstrlen(dir)+1];
  return wstrcpy(res, dir);
}


обе функции под результат выделяется место в памяти, так что не забываем потом почистить если что..




R924994451198
Z959968619709
:-D
Спасибо сказали: DuMOHsmol, Defined, D3mon

DuXeN0N


Patcher/Elfmaker


Регистрация: 17.8.08
Сообщений: 230
Репутация: 842
Откуда: Урал




 
  #4 [05.06.10, 18:09] Re: Полезные функции   

 
Функция преобразует строку char в int

Код: 
int Str2Int(char* str)
{
    int len = strlen(str);
    wchar_t* wstr = new wchar_t[len + 1];
    str2wstr(wstr, str);
    int Ret;
    wtoi(wstr, len, &Ret);
    delete(wstr);
    return Ret;
}


может как-то можно еще но мне известен только этот способ.

Или wchar_t в int

Код:
int Str2Int(wchar_t* str)
{
    int Ret;
    wtoi(str, wstrlen(str), &Ret);
    return Ret;
}





Joker XT


VIP Developer


Регистрация: 5.8.06
Сообщений: 1292
Репутация: 7582





 
  #5 [05.06.10, 18:11] Re: Полезные функции   

 
а чем просто wtoi(str, wstrlen(str), &Ret); не устраивает?))




SE C901 [R1GA028]

Amir_82111


Developer


Регистрация: 3.5.08
Сообщений: 296
Репутация: 1441
Откуда: Iran




 
  #6 [05.06.10, 18:45] Re: Полезные функции   

 
arban пишет:
Начну, пожалуй:

Простейшая функция, которая обновляет бук:

Код:
void BookObj_Refresh(BOOK * book)
{
  BookObj_Hide(book,0);
  BookObj_Show(book,0);
}


Использовать, если хотите обновить GUI в данной книге, например, при смене стиля


Are u sure?
this metod don't refresh book or pages.
in main books and page use different metod for refresh.
for example for refresh page must save Gui in buffer and in refresh use goto page functions and if this page exist already then close this Gui and creat Gui again.
refresh book in Filemanager and some books is very easy with :

Код:

int event = 0x13EC
int BookID = BookObj_GetBookID( BOOK* book )
void UI_Event_toBookID( int event, int BookID )

but this Event must description in book and pages already






[ Редактировано Amir_82111 в 5.6.10 19:53 ]




AVATAR
K810 SW-R8BF003
-----------------------
WMR - R304796297298
WMZ - Z166712078397
Спасибо сказали: DuXeN0N

Joker XT


VIP Developer


Регистрация: 5.8.06
Сообщений: 1292
Репутация: 7582





 
  #7 [05.06.10, 19:40] Re: Полезные функции   

 
Amir_82111, I agree =)
So it will be correct




SE C901 [R1GA028]

DuXeN0N


Patcher/Elfmaker


Регистрация: 17.8.08
Сообщений: 230
Репутация: 842
Откуда: Урал




 
  #8 [05.06.10, 19:43] Re: Полезные функции   

 
Joker XT, ты про первый случай?
ну потому что первый аргумент - const wchar_t

также еще можно написать:

extern "C" int atoi(const char* str);

и вместо функции Str2Int(char* str) можно использовать
int I = atoi(str)





DuXeN0N


Patcher/Elfmaker


Регистрация: 17.8.08
Сообщений: 230
Репутация: 842
Откуда: Урал




 
  #9 [06.09.10, 20:08] Re: Полезные функции   

 
Че то никто особо не делится чем нибудь полезным))
Оптимизируя эльф написал одну полезную процедуру. Она освобождает пункты в листе и убивает сам LIST. Особенно удобно когда много листов и освобождение их происходит в 1 строку кода)

Код: 
int ItemFilter(void *Item)
{
    return(Item != NULL);
};

void FreeList(LIST* &List, void (* FreeProc)(void *Item))
{
    if (List)
    {
        List_DestroyElements(List, ItemFilter, FreeProc);
        List_Destroy(List);
        List = NULL;
    }
};

Это сама процедура. Первый аргумент это собственно указатель на освобождаемый LIST, а второй аргумент это указатель на процедуру освобождения пунктов в листе.

А вот пример как ей пользоваться:

Код: 
void ItemFree(void *Item)
{
    ITEM *it = (ITEM *)Item;
    if (it->Str1)
        mfree(it->Str1);
    // ну тут понятно, освобождение всего и вся =)
};

void OnCloseBook(BOOK *Book)
{
   ...
   FreeList(myList, ItemFree);
   ...
};


Все просто. Но когда LIST-ов несколько это удобно (опять же кому как =)) и упрощает код





den_po


Developer/Admin


Регистрация: 27.3.06
Сообщений: 3279
Репутация: 10763
Откуда: Чебоксары




 
  #10 [07.09.10, 00:45] Re: Полезные функции   

 
List = 0;

толку от этой строки ноль. сделай чтоль хотя бы List ссылкой




promt is better than google translate
Страница 1 из 2: [1] 2 »


Похожие темы
 ТемаОтветыАвторПросмотрыОбновление
  Различные функции19E1kolyan2293309.08.12, 16:59
  мои полезные мануалы для К790/K8x0i42D7A5988318.02.11, 10:45

  • Поиск
  • Права
Вы не можете начинать темы.
Вы не можете редактировать свои сообщения.
Вы не можете создавать опросы.
Вы не можете вкладывать файлы в сообщения.
Вы не можете отвечать на сообщения.
Вы не можете удалять свои сообщения.
Вы не можете голосовать.

Главная Новости Статьи Файлы Патчи Форум Опросы PDA
- Генерация страницы: 0.15 секунд | 10 Запросов | HTML: 45.48 КБ -