|
|
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Не соображу, как это можно сделать? Генерировать дополнительный исходник не хочется. Понимаю, что надо использовать #include "file.txt", т.к. больше способов нет, но что с ним делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:15 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Какова цель этого велосипеда? Что у вас с этом файле, если не секрет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:27 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
egorychКакова цель этого велосипеда? Что у вас с этом файле, если не секрет? readme.txt будет выводиться при -h и ошибках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:31 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
readme.txt из дистрибутива ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:31 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Akhreadme.txt будет выводиться при -h и ошибкахя бы в программе из файла выводил, а файлик в инсталлятор включил Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:32 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Карабас Барабас Akhreadme.txt будет выводиться при -h и ошибкахя бы в программе из файла выводил, а файлик в инсталлятор включил Posted via ActualForum NNTP Server 1.4 Не пойдет. У меня утилитка без всяких привязок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:41 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
что-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:43 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
egorychчто-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Это я сейчас так, временно, сдалал. Но представь себе пользователя, который перед инсталяцией будет читать файла readme.txt: readme.txt static const std::string usage = "" " Используйте тыры пыры\n" " Надо использовать, типа так:\n" ... ну и т.д. ""; По первых будет вводить в ступор, что мол не то открыл, во вторых затрудняет чтение, ни и т.д. И, наконец, мне нравиться такое безобразие. Необходимо, чтобы текст был "чист". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:53 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Т.е. "не нравиться" ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 12:53 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > Понимаю, что надо использовать #include "file.txt", т.к. больше способов > нет, но что с ним делать? Если программа под винду, почему бы в ресурсы не запихнуть? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 13:13 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
ErV Akh wrote: > Понимаю, что надо использовать #include "file.txt", т.к. больше способов > нет, но что с ним делать? Если программа под винду, почему бы в ресурсы не запихнуть? Posted via ActualForum NNTP Server 1.4 Она кросс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 13:14 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
развлечения с препроцессором? правда, не могу пока представить, как это раскрутить... может продублировать? отдельно в readme.txt для пользователя, отдельно - в коде тоже самое. ну или всё-же читать из файла, раз он всё одно есть, стандартными С-функциями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 13:21 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
А ежели так gcc -DSOME_TEXT=`cat readme.txt` ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 13:26 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > Она кросс. Тогда перегнать текст в код (обьявление глобальной const char* переменной), включить его в программу. Если кросс, то используется GNU make - так что сделать это можно будет без проблем. Если кросс и Qt - то там тоже ресурсы есть :) (я, по крайней мере, файл через них в программу запихивал, но там GUI было). Ну и плюс раньше (ещё в турбо паскале) была хорошая вещь для этого случая - называлась bin2obj, т.е. перегоняла любой файл в *.obj, который можно было прилинковать и обращаться к содержимому файла по адресу в памяти. Сейчас аналогов разве нет? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 13:26 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
blindedА ежели так gcc -DSOME_TEXT=`cat readme.txt` Да это хороший сдвиг. Но, нужно будет заменить переносы строк на \n и что-то подобное придумать для винды. Т.о. обходимся без дополнительного файла, хотя и требуется отдельный код для каждой платформы, ну, а пользователю удобство чтения коллосальное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 13:41 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
ErV Akh wrote: > Она кросс. Тогда перегнать текст в код (обьявление глобальной const char* переменной), включить его в программу. Если кросс, то используется GNU make - так что сделать это можно будет без проблем. Если кросс и Qt - то там тоже ресурсы есть :) (я, по крайней мере, файл через них в программу запихивал, но там GUI было). Ну и плюс раньше (ещё в турбо паскале) была хорошая вещь для этого случая - называлась bin2obj, т.е. перегоняла любой файл в *.obj, который можно было прилинковать и обращаться к содержимому файла по адресу в памяти. Сейчас аналогов разве нет? Posted via ActualForum NNTP Server 1.4 Что-то я не догоняю схему. Перегнать текст в код, это я так понимаю - скопировать в исходинк. Но зачем тогда ресурсы и прочее, описанное ниже? Можно обрисовать, что где, чтобы было понятно. ПС: компиляторы пока такие: linux-gcc, win-vs8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 13:51 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > Что-то я не догоняю схему. Перегнать текст в код, это я так понимаю - > скопировать в исходинк. Но зачем тогда ресурсы и прочее, описанное ниже? > Можно обрисовать, что где, чтобы было понятно. Вариант 1, Qt 4: Юзаем ресурсы. создаем qrc файл, включаем его в проект. Код: plaintext 1. 2. 3. 4. 5. штуку делал, но потом плюнул (хотя работает) и стал класть файлы в папку с программой. Вариант 2: Пишем программу, которая берет исходный файл как инпут, и делает из него то, что нам надо, как аутпут, т.е. *.cpp или *.c. Например, она может генерить из исходного *.txt файла массив const char* строк, который можно будет выводить на экран. Т.е. будет получаться *.cpp файл в духе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Программу - конвертер написать не проблема. Потом добавляем новый target в Makefile и проблем не будет... Код: plaintext 1. 2. н я бы так не стал делать - ИМХО, юзер должен иметь возможность документ читать в любимом редакторе. Касательно вышеприведенного примера с -DSOMETEXT=`cat 123.txt`, то кая понимаю, кавычки пропущены и будет нечитабельно из-за переходов строк. Т.е. надо переводить переводы строк в \n и т.д. Вариант 3: bin2obj я этим ооочень давно пользовался, и не в курсе, есть ли сейчас встроенные аналоги. Суть в том, утилита берет исходный файл, и делает из него *.obj, где содержимое файла доступна как переменная по какому-то адресу. Линкуем с проекстом, в других местах переменную объявляем как extern. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 14:04 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
ErV wrote: > Пишем программу, которая берет исходный файл как инпут Можно это дело на bash'е сделать. Будет нечто вроде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 14:16 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
ErV ... Вариант 1. Отпадает так как использует примочки компилятора. Вариант 2. В первом же посте и написал. Вариант 3. Патформозависимый (у меня на asp10 из bin* только bind). Если подвести итоги, то существует 3 варианта: 1) Покарежить файл с текстом (структура C). 2) Сгенерить исходник. 3) Сгенерить препроцессорный макрос. Если лучшего не дано, то думаю, что вариант 3 от blinded наиболее предпочтителен, хотя и придется писать для каждой платформы загрузчик в переменную под встроенные скрипты. Но, в отличии от варинта 2 здесь не надо никакой дополнительной программы, путать директории новыми исходниками, забивать makefile-ы дополнительной информацией (сравните: создание, компиляция, включение и удаление исходника с жесткими путями или же определение макроса. Связность уменьшается на порядки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 14:21 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
blindedА ежели так gcc -DSOME_TEXT=`cat readme.txt` С подачи ErV из форума по Unix получилось следующее: Код: plaintext 1. Код: plaintext 1. :) На замену символов (двойных кавычек и обратных слешей) можно пока забить. Осталось зделать под винду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 14:27 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > 1) Покарежить файл с текстом (структура C). > 2) Сгенерить исходник. > 3) Сгенерить препроцессорный макрос. Я бы исходник сгенерил, так как неизвестно - есть ли у макроса, например ограничение по длине? (хотя вряд ли, но фиг его знает...). Ну и плюс с построчным const char* массивом можно красивей выводить текст :). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 15:42 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
ErVтак как неизвестно - есть ли у макроса, например ограничение по длине? (хотя вряд ли, но фиг его знает...). Сейчас 18килобайт запульнул в линухе, все нормуль, и командная строка даже выдержала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 16:39 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > Сейчас 18килобайт запульнул в линухе, все нормуль, и командная строка даже > выдержала. Вроде бы у меня 32768 байт лимит длина команды. И потом, это только под линуксом. (как вин к этому отнесется?) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 16:55 |
|
||
|
Вставить текст из файла в строку на этапе компиляции.
|
|||
|---|---|---|---|
|
#18+
ErV Akh wrote: > Сейчас 18килобайт запульнул в линухе, все нормуль, и командная строка даже > выдержала. Вроде бы у меня 32768 байт лимит длина команды. И потом, это только под линуксом. (как вин к этому отнесется?) Posted via ActualForum NNTP Server 1.4 Не знаю, но я как-то не люблю ограничения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2007, 16:57 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34624268&tid=2028595]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 398ms |

| 0 / 0 |
