
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.26] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здраствуйте!
Подскажите пожалуйста, кто знает, как создать длинную константную тектовую строку в исходном файле? Проблема заключается в следующем: имеется строка содержащая текстовые символы: A-Z, a-z, 0-9, А-Я, а-я, += большой длины, около 100 тысяч символов. Как впихнуть этот файл себе в исходник? Пытался делать так: ![]() ![]() CHAR strFile[] = "sfsdfsdfsdf\ gdfgdfgdfg\ rtertertertert\tertert\tertert\rwerwerwtrwetSASDGDfg\"; но компилятор ругается: "error C2026: string too big, trailing characters truncated" |
Сообщ.
#2
,
|
|
|
Как обычно
![]() ![]() CHAR strFile[] = "sfsdfsdfsdf" "gdfgdfgdfg" "rtertertertert\tertert\tertert\rwerwerwtrwetSASDGDfg\"; |
Сообщ.
#3
,
|
|
|
CHAR strFile[] = "sfsdfsdfsdf" \
"gdfgdfgdfg" \ "rtertertertert\\tertert\\tertert\\rwerwerwtrwetSASDGDfg\\"; |
Сообщ.
#4
,
|
|
|
Цитата Relaxander @ CHAR strFile[] = "sfsdfsdfsdf" \ "gdfgdfgdfg" \ "rtertertertert\\tertert\\tertert\\rwerwerwtrwetSASDGDfg\\"; окей, щас попробуем этот вариант! Добавлено Вот, что показал эксперемент: если создавать строки способом: ![]() ![]() CHAR strFile[] = "sfsdfsdfsdf" \ "gdfgdfgdfg" \ "rtertertertert\\tertert\\tertert\\rwerwerwtrwetSASDGDfg\\"; то при относительно небольшой длине всё работает, а при большой длине выдается ошибка: "fatal error C1091: compiler limit: string exceeds 65535 bytes in length" Отсюда вывод: создать строку больше 65535 байт невозможно. Может использовать массив строк? |
Сообщ.
#5
,
|
|
|
VictorRT, Relaxander бред говорит - используйте вариант trainer'а
Добавлено Цитата VictorRT @ а большой длине выдается ошибка: Что естественно, учитывая, что размер сегмента в x86 - 64K |
Сообщ.
#6
,
|
|
|
Цитата Мяут @ VictorRT, Relaxander бред говорит доказательства? |
Сообщ.
#7
,
|
|
|
Цитата VictorRT @ Пытался делать так: ![]() ![]() CHAR strFile[] = "sfsdfsdfsdf\ gdfgdfgdfg\ rtertertertert\tertert\tertert\rwerwerwtrwetSASDGDfg\"; но компилятор ругается: "error C2026: string too big, trailing characters truncated" Попробуй так: ![]() ![]() CHAR strFile[] = "sfsdfsdfsdf\ gdfgdfgdfg\ rtertertertert\\tertert\\tertert\\rwerwerwtrwetSASDGDfg\\"; -Added Цитата VictorRT @ Проблема заключается в следующем: имеется строка содержащая текстовые символы: A-Z, a-z, 0-9, А-Я, а-я, += большой длины, около 100 тысяч символов. Как впихнуть этот файл себе в исходник? Напрашивается вариант :"Вставить этот файл в ресурсы". Еще интереснее - упаковать zip-ом, вставить в ресурсы, перед использованием unzip-ить. |
Сообщ.
#8
,
|
|
|
to ЫукпШ: спасибо, интересная идея! Сам стал к этому склоняться )
|
Сообщ.
#9
,
|
|
|
Цитата VictorRT @ Подскажите пожалуйста, кто знает, как создать длинную константную тектовую строку в исходном файле? Именно для этого и были придуманы динамические массивы ![]() Не проще ли патом вычитать этот массив из файла и юзать ??? |
Сообщ.
#10
,
|
|
|
Цитата KILLER @ Именно для этого и были придуманы динамические массивы Не проще ли патом вычитать этот массив из файла и юзать ??? а вдруг топикстартеру нужно, чтобы простой смертный не смог изменить этот файл? |
Сообщ.
#11
,
|
|
|
Цитата miksayer @ а вдруг топикстартеру нужно, чтобы простой смертный не смог изменить этот файл? Тогда пусть юзает шифрование, и кстати при компиляции текст строковых массивов остаеться как и был, т.е. не компилируеться ин е шифруеться, можно фаром открыть *.ехе файл и втупую изменить его, главное не увиличить длинну массива. Но чтобы 100кб данных хранить в исходном файле, это уже похоже на маразм, ибо есть сколько угодно вариантов чтобы это обойти. |
Сообщ.
#12
,
|
|
|
VictorRT, если есть Qt, прогони свой файл через утилиту uic. Она тебе C++ный массив сделает)
|
Сообщ.
#13
,
|
|
|
Всем спасибо! Я выбрал вариант с хранением файла в ресурсах!
|