На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Как создать длинные константные строки в исходном файле? , имеется большой текстовый файл, как его вставить в исходник?
    Здраствуйте!
    Подскажите пожалуйста, кто знает, как создать длинную константную тектовую строку в исходном файле?
    Проблема заключается в следующем:
    имеется строка содержащая текстовые символы: A-Z, a-z, 0-9, А-Я, а-я, += большой длины, около 100 тысяч символов.
    Как впихнуть этот файл себе в исходник?
    Пытался делать так:
    ExpandedWrap disabled
      CHAR strFile[] = "sfsdfsdfsdf\
                          gdfgdfgdfg\
                          rtertertertert\tertert\tertert\rwerwerwtrwetSASDGDfg\";

    но компилятор ругается: "error C2026: string too big, trailing characters truncated"
    Сообщение отредактировано: VictorRT -
      Как обычно
      ExpandedWrap disabled
        CHAR strFile[] = "sfsdfsdfsdf"
                            "gdfgdfgdfg"
                            "rtertertertert\tertert\tertert\rwerwerwtrwetSASDGDfg\";
      P.S. Вот насчет 100000 символов - сильно не уверен.
      Сообщение отредактировано: trainer -
        CHAR strFile[] = "sfsdfsdfsdf" \
        "gdfgdfgdfg" \
        "rtertertertert\\tertert\\tertert\\rwerwerwtrwetSASDGDfg\\";
          Цитата Relaxander @
          CHAR strFile[] = "sfsdfsdfsdf" \
          "gdfgdfgdfg" \
          "rtertertertert\\tertert\\tertert\\rwerwerwtrwetSASDGDfg\\";

          окей, щас попробуем этот вариант!

          Добавлено
          Вот, что показал эксперемент:
          если создавать строки способом:
          ExpandedWrap disabled
            CHAR strFile[] = "sfsdfsdfsdf" \
            "gdfgdfgdfg" \
            "rtertertertert\\tertert\\tertert\\rwerwerwtrwetSASDGDfg\\";

          то при относительно небольшой длине всё работает, а при большой длине выдается ошибка:
          "fatal error C1091: compiler limit: string exceeds 65535 bytes in length"
          Отсюда вывод: создать строку больше 65535 байт невозможно.
          Может использовать массив строк?
          Сообщение отредактировано: VictorRT -
            VictorRT, Relaxander бред говорит - используйте вариант trainer'а

            Добавлено
            Цитата VictorRT @
            а большой длине выдается ошибка:

            Что естественно, учитывая, что размер сегмента в x86 - 64K
              Цитата Мяут @
              VictorRT, Relaxander бред говорит

              доказательства?
                Цитата VictorRT @
                Пытался делать так:
                ExpandedWrap disabled
                  CHAR strFile[] = "sfsdfsdfsdf\
                                      gdfgdfgdfg\
                                      rtertertertert\tertert\tertert\rwerwerwtrwetSASDGDfg\";

                но компилятор ругается: "error C2026: string too big, trailing characters truncated"

                Попробуй так:
                ExpandedWrap disabled
                  CHAR strFile[] = "sfsdfsdfsdf\
                  gdfgdfgdfg\
                  rtertertertert\\tertert\\tertert\\rwerwerwtrwetSASDGDfg\\";


                -Added
                Цитата VictorRT @
                Проблема заключается в следующем:
                имеется строка содержащая текстовые символы: A-Z, a-z, 0-9, А-Я, а-я, += большой длины, около 100 тысяч символов.
                Как впихнуть этот файл себе в исходник?

                Напрашивается вариант :"Вставить этот файл в ресурсы".

                Еще интереснее - упаковать zip-ом, вставить в ресурсы,
                перед использованием unzip-ить.
                Сообщение отредактировано: ЫукпШ -
                  to ЫукпШ: спасибо, интересная идея! Сам стал к этому склоняться )
                    Цитата VictorRT @
                    Подскажите пожалуйста, кто знает, как создать длинную константную тектовую строку в исходном файле?

                    Именно для этого и были придуманы динамические массивы ;)
                    Не проще ли патом вычитать этот массив из файла и юзать ???
                      Цитата KILLER @
                      Именно для этого и были придуманы динамические массивы
                      Не проще ли патом вычитать этот массив из файла и юзать ???

                      а вдруг топикстартеру нужно, чтобы простой смертный не смог изменить этот файл?
                        Цитата miksayer @
                        а вдруг топикстартеру нужно, чтобы простой смертный не смог изменить этот файл?

                        Тогда пусть юзает шифрование, и кстати при компиляции текст строковых массивов остаеться как и был, т.е. не компилируеться ин е шифруеться, можно фаром открыть *.ехе файл и втупую изменить его, главное не увиличить длинну массива.
                        Но чтобы 100кб данных хранить в исходном файле, это уже похоже на маразм, ибо есть сколько угодно вариантов чтобы это обойти.
                          VictorRT, если есть Qt, прогони свой файл через утилиту uic. Она тебе C++ный массив сделает)
                            Всем спасибо! Я выбрал вариант с хранением файла в ресурсах!
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0441 ]   [ 16 queries used ]   [ Generated: 2.08.25, 19:46 GMT ]