Кресты / Говнокод #13857 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
void gte::loadProps(const char* fileName){
    
	propMap.clear();
	s3eFile* g_FileHandle = s3eFileOpen(fileName, "rb");
	while (!s3eFileEOF(g_FileHandle)) {
		char c1=0;
		char c2=0;
		s3eFileRead(&c1, 1, 1, g_FileHandle);
		s3eFileRead(&c2, 1, 1, g_FileHandle);
		int len = 0;
		len = (c2 & 0xFF) | ( (c1  & 0xff) << 8);
		if (len==0) continue;
		char* textData = new char[len+1];
		textData[len] = 0;
		s3eFileRead(textData, sizeof(char), len, g_FileHandle);
		char* pos = strchr(textData, ':');
		string key(textData, pos - textData);
		string value(pos + 2, textData + len - pos - 2);//(textData,
		propMap[key] = value;
	}

	s3eFileClose(g_FileHandle);
}

Чтение строки, первые 2 байта - длинна.
Проект использует Marmalade SDK.

Запостил: krypt krypt, (Updated )

Комментарии (47) RSS

  • Возможно, так сделано чтобы не зависеть от порядка байт, но, тем не менее, выглядит странно. И если не ошибаюсь, на всех поддерживаемых платформах он little-endian
    Ответить
    • Только хотел сказать про порядок байтов. Хотя тут много чего ещё непонятного: если поддерживать разные платформы, то где поддержка 16битных процессоров (16битный знаковый инт и двухбайтовая длина могут привести к неприятным последствиям), почему в 15 строчке написано sizeof(char), а в 8-9 магическое число 1?

      Также непонятно, почему в 18 строчке pos+2 а не pos+1.
      Ответить
      • marmalade - он для написания кроссплатформенных игр. Win (phone и desktop), Android, iOS, blackbarry... То есть х86 или arm.
        Ответить
    • а я даже не пытаюсь делать кроссплатформенные файлы сохранёнки, такая я свинья
      Ответить
            • <
              Паскаль делает это за вас, сэр.
              Free Pascal ?
              >
              ...Спускаюсь в переход вокзала, захожу в дверь с буквой "М". Сейчас девочкомальчик в штанах и с накрашенными губами продаст мне за пятерку билет в волшебную страну.
              Ответить
        • каким местом
          я же не хранию file of coolstruct
          у меня тупо file of byte
          и blokread на указатель
          Ответить
          • Да я, собственно, не про файлы. Ну да ладно
            Ответить
      • Это не сохранёнка, это локализация. Другой вопрос, что файл локализации должен читаться через реализованную в sdk компании функцию...
        Ответить
      • > кроссплатформенные файлы сохранёнки
        Да с того же андроида их хер извлечешь без рута (если ты писал не на флеху)... А на PC у тебя все равно только 32 битная версия. Так что всем пофиг, никто и не заметит некроссплатформенности сейвов 😉
        Ответить
      • Кстати говоря, у игры Cave Story+ сохраненки не переносимы между Windows и Linux. Автор, походу, тупо сохраняет struct, а компиляторы-то разные...
        Ответить
    • Там еще есть кусочек

      void hge::loadTexts(const char* fileName) {
      textMap.clear();
      s3eFile* g_FileHandle = s3eFileOpen(fileName, "rb");
      while (!s3eFileEOF(g_FileHandle)) {
      char c1=0;
      char c2=0;
      s3eFileRead(&c1, 1, 1, g_FileHandle);
      s3eFileRead(&c2, 1, 1, g_FileHandle);
      int len = 0;
      len = (c2 & 0xFF) | ( (c1 & 0xff) << 8);
      if (len==0) continue;
      char* textData = new char[len+1];
      textData[len] = 0;
      s3eFileRead(textData, sizeof(char), len, g_FileHandle);
      char* pos = strchr(textData, ':');
      string key(textData, pos - textData);
      string value(pos + 2, textData + len - pos - 2);//(textData,
      replaceAll(value, "^", "\n");
      //s3eDebugOutputString("qqqqq1");
      //s3eDebugOutputString(value.c_str());
      //s3eDebugOutputString("qqqqq1");
      textMap[key] = value;
      cout<<textMap[key]<<endl;
      }
      textMap["-"] = "#";

      s3eFileClose(g_FileHandle);
      }//999
      Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8