BcfgEdit - редактор конфигов : Эльфы : Форум

Страница 7 из 48: « 1 ... 3 4 5 6 [7] 8 9 10 11 ... 48 »

 den_po:
30.07.08, 14:10
 Tihiy
первый пост слабо почитать?

 GaS:
30.07.08, 18:24
 sam22
на в800 у меня нет, я про к810 писал...

 dimmss:
30.07.08, 21:40
 Что за свн? дайте сайта название!


Добавлено 30.7.08 22:13

Каракули в редакторе!

 xoXox:
30.07.08, 22:16
 http://perk11.info/elfse/BcfgEdit_main.zip
качай этот и каракуль не будет

 dimmss:
30.07.08, 23:06
 При выходе из редактора виснет тел. К750

 BigHercules:
31.07.08, 10:25
 Добрый день всем.

В BcfgExample.elf есть небольшая ошибка.
Данный эльф никогда не загрузить конфигурационный файл с телефона (если конечно есть карта и не будет ошибки, при создании файла на карте). Хотя в коде и есть попытка загрузить. Так как если файла нет на карте, то он там создается. И в случае успешного создания, попытки загрузить с телефона не будет.
Я у себя в коде сделал так:
Код: 
#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"
#include "..\\include\cfg_items.h"
#include "conf_loader.h"

#define LCFGFILENAME L"BcfgExample.bcfg"

const wchar_t *successed_config_path=L"";
const wchar_t *successed_config_name=L"";

#pragma segment="CONFIG_C"
int SaveConfigData(const wchar_t *path,const wchar_t *fname)
{
  int f;
  char *buf;
  int result = -1;
  void *cfg;

  cfg=(char *)__segment_begin("CONFIG_C");

  unsigned int len=(char *)__segment_end("CONFIG_C")-(char *)__segment_begin("CONFIG_C");

  if ((buf=new char[len]))
  {
    if ((f=_fopen(path,fname,0x204,0x180,0)) >= 0)
    {
      if (fwrite(f,cfg,len)==len) result = 0;
      fclose(f);
    }
    delete buf;
  }
  if (result >= 0)
  {
    successed_config_path=path;
    successed_config_name=fname;
  }
  return(result);
}

int LoadConfigData(const wchar_t *path,const wchar_t *fname)
{
  int f;
  char *buf;
  int result = -1;
  void *cfg;
  FSTAT fstat;
  unsigned int rlen;

  cfg=(char *)__segment_begin("CONFIG_C");

  unsigned int len=(char *)__segment_end("CONFIG_C")-(char *)__segment_begin("CONFIG_C");

  if ((buf=new char[len]))
  {
    if (isFileExist(path,fname,&fstat) != -1)
    {
      if ((f=_fopen(path,fname,0x001,0x180,0)) >= 0)
      {
        rlen=fread(f,buf,len);
        fclose(f);
        if (rlen!=fstat.fsize || rlen!=len)  return SaveConfigData(path,fname);
        memcpy(cfg,buf,len);
        result=0;
      }
    }
    delete buf;
  }
  if (result >= 0)
  {
    successed_config_path=path;
    successed_config_name=fname;
  }
  return(result);
}


void InitConfig(void)
{
  if (LoadConfigData(GetDir(DIR_ELFS_CONFIG|MEM_INTERNAL),LCFGFILENAME) < 0)
  {
    if(LoadConfigData(GetDir(DIR_ELFS_CONFIG|MEM_EXTERNAL),LCFGFILENAME) < 0)
    {
      SaveConfigData(GetDir(DIR_ELFS_CONFIG|MEM_INTERNAL),LCFGFILENAME);
    }
  }
}


Я еще сделал, чтобы в начале была попытка загрузить с телефона, а затем уже с карты. Если файл нигде не будет найден, он создается на телефоне. Если же файл будет где-либо найден и он будет не корректный, то он будет перезаписан новым.

 den_po:
31.07.08, 10:34
 BigHercules
это всего лишь пример. не шаблон, обязательный к использованию в своих эльфах. просто пример.

 BigHercules:
31.07.08, 10:52
 
den_po пишет:
это всего лишь пример. не шаблон, обязательный к использованию в своих эльфах. просто пример.

Я знаю, что это пример.
Причем, автору ОГРОМОЕ спасибо за проделанную работу.
Но только зачастую примеры именно и используют в качестве шаблона. Делают лишь косметические изменения (измение имени конфигурационного файла в данном случае). Я сам так вначале сделал, а потом увидел, что с телефона конфиг не загружается.
Кроме того я обратил внимание. что и в других эльфах (в одном точно, т.к. я его использую), авторы которых перешли на bcfg, наблюдается такая же ситуация что и с этим примером. :-(
В итоге ошибка начинает переползать дальше...

 KreN:
31.07.08, 13:58
 Мне не хочется чтобы конфиги как раньше болтались то в телефоне, то на флэшке, при изменении загрузчика какая уверенность что они не будут болтаться ещё и в ини. Где тут ошибка, что эльфы загружается с карты? У вас что ли по десять карточек на которых на всех нужен эльфпак? На сименсах до сих пор с момента создания конфиги и все данные эльфов и эльфпака лежат на карте и ещё никто не жаловался, и не перетаскивал все на телефон. Какая вероятность больше что повредится фс карты или флэш телефона? Что дешевле купить новую карту или отремонтировать телефон?

 BigHercules:
31.07.08, 14:25
 
KreN пишет:
Мне не хочется чтобы конфиги как раньше болтались то в телефоне, то на флэшке, при изменении загрузчика какая уверенность что они не будут болтаться ещё и в ини. Где тут ошибка, что эльфы загружается с карты? У вас что ли по десять карточек на которых на всех нужен эльфпак? На сименсах до сих пор с момента создания конфиги и все данные эльфов и эльфпака лежат на карте и ещё никто не жаловался, и не перетаскивал все на телефон. Какая вероятность больше что повредится фс карты или флэш телефона? Что дешевле купить новую карту или отремонтировать телефон?

Да я не говорю, что если конфиг грузится с карточки, то это ошибка.
Я про другое.
В загрузчике из примера в случае отсутствия файла по указанному пути всегда создается новый.
Код: 

    if (isFileExist(path,fname,&fstat)!=-1)
    {
       ...
     }
    else
    {
    L_SAVENEWCFG:
      if ((f=_fopen(path,fname,0x204,0x180,0))>=0)
      {
        if (fwrite(f,cfg,len)==len) result=0;
        fclose(f);
       }
    }


В случае успешного создания файла следующий участок кода никогда не будет выполняться.
Код: 

void InitConfig(void)
{
  if (LoadConfigData(GetDir(DIR_ELFS_CONFIG|MEM_EXTERNAL),L"BcfgExample.bcfg")<0)
  {
 LoadConfigData(GetDir(DIR_ELFS_CONFIG|MEM_INTERNAL),L"BcfgExample.bcfg");
  }
}

В приведенном мною примере, в начале будет попытка загрузить конфиг из телефона, затем с карты (можно и изменить последовательность), а затем уже если конфиг нигде не найден, то он будет создан (в моем случае на телефоне).

PS. Хотя наверное может быть ты и прав. Просто мы немного поразному представляем как должен работать загрузчик. В моем понимании: сначала искать на карте и телефоне, и если не нашли, то создать. А у тебя получается: если есть карта, то грузим с нее, если ее нету, то тогда уж грузим с телефона. Так что беру свои слова обратно.
Страница 7 из 48: « 1 ... 3 4 5 6 [7] 8 9 10 11 ... 48 »

URL этой темы:
https://mobilefree.justdanpo.ru/newbb_plus/viewtopic.php?topic_id=3212&start=60

© 2005-2018 supertrubka.org