06.05.2004, 00:40 (Сообщение последний раз редактировалось: 10.05.2004, 17:45 ELF.)
Я тут продолжаю обучаться C++. Написал лёгенькую прогу, которая заменяет одну последовательность символов на другую. Заодно решил к ней написать альтервнативный пакет по редактированию MQ файлов.
Теперь собственно о пакете:
В минус для знающих и в плюс для незнающих, но всё-таки - я полностью переделал устройство файлов.
Весь упор в этом пакете сделал на создание новых квестов с УНИКАЛЬНЫМИ названиями (Например: z3-ELFQuest501.mq)...
Остальное Вы увидите, как говорится, на месте.
Эх, эх. Как всегда RAR мне нельзя прикреплять... Потому этот бедный RAR я запаковал в ZIP (кстати размер на том уменьшился на 11Кб). Так что не пугайтесь, если увидите архив в архиве...
06.05.2004, 13:50 (Сообщение последний раз редактировалось: 10.05.2004, 17:59 ELF.)
В том то всё и дело, что весит она много.
Компилировал я её в DEBUG конфигурации, хотел ещё указать Visual C++, чтобы он как можно сильнее её сжал, но при таком раскладе компилятор написал что-то типа "параметры не подходят" - видимо при указании наименьшего размера он делает какие-то несовместимые параметры (хотя кто его знает).
Также у меня возник вопрос, каким компилятором получить максимально маленькую прогу?
Кстати, какие мнения по поводу альтервнативного пакета?
Хм, статейка действительно интересная: значит залог в размере лежит в отключении RTL, таки в отказе от стандартных библиотек... Но обычно делаются проги ну хотябы на Кб так 30, а у меня вон аж какая - 320 КБ!!!
У меня ещё маловато опыта для того, чтобы так просто отказаться от библиотек...
В исходнике, который я выложил видно, что я подключит целых две библиотеки - iostream и fstream - думаю, что они то и задали гигантские размеры. :unsure: Вообще изначально я хотел прогу написать на C, но у меня возникли проблемы с указателями (хотя у меня и в написанной проге такие проблемы были), может сегодня поразбираюсь - может даже прогу перепишу под C, но пока ничего не обещаю...
И кстати, какие мнения по поводу Альтервнативы MQ Toolkit'у?
GCC this is GNU C++ COMPILATOR, and... Так, ладно, "флудить" не будем в русском форуме...
GNU - лицензия под которой проходят многие *nix программы.
Будь уверен, с помощью gcc ты добьешся минимального размера твоей проги =)))...
P.S. - Чисто теоретически, за данные советы я ответственности не несу.
Say it once, say it twice,
Take a chance and roll the dice...
К сожалению мне прога нужна под Виндовоз, а не под Уникса...
Итак, переписал прогу на язык C, её размер подуменьшился, хотя всё ещё большой, но зато теперь пакет стал весить примерно как MQ Toolkit...
Итак, вот особенность моего пакета:
1.Полностью изменена структура файлов, теперь: "01-Start.txt" (раньше был "Briefing <ИмяКвеста>_1") отвечает за вступительный диалог; "02-Cancel.txt" (раньше был "Briefing <ИмяКвеста>_2") отвечает за текст при отказе от миссии; "03-Done.txt" (раньше был "Briefing <ИмяКвеста>_3") отвечает за текст при успешном выполнении миссии; "04-Quest.txt" (Раньше был "Quest <ИмяКвеста>") отвечает за текст выдаваемых заданий; "05-Map.txt" (Раньше был "<ИмяКвеста>Map.txt") отвечает за подготовку зоны для квеста; "06-Quest.ini" (Раньше был "<ИмяКвеста>Quest.ini") отвечает за настройки самого квеста. 2.Теперь можно быстро менять имена квестам с помощью батника "Build_Quest.bat", вот пример:
4.Теперь можно легко брать за основу старые квесты:
Просто скопировать папку старого и указать ей новое имя. 5.По мнению автора пакета, новая структура пакета должна сделать работу с квестами более наглядной.
Elf, лови свою прогу - 16 кб (в архиве - чуть меньше 2 кб). Если ты используешь MS Visual C++ 6.0, то тебе надо сделать следующее:
Во-первых, меню Build->Set active configuration...->Win32 Realase;
Во-вторых, меню Project->Settings далее выбираешь Settings for: Win32 Realase, после этого переходишь на вкладку C/C++ в графе Category выбираешь пункт Code Generation после этого появится графа Use run-time library: в ней выбери пункт Multithreaded DLL. После сборки размер исполняемого файла очень ощутимо уменьшится за счет использования внешних динамических библиотек, но здесь есть свои грабли: не на каждом компьютере может оказаться нужная библиотека, если она, конечно же, не является системной.
P.S.: для "новичка" (а действительно ли новичка?) программа написана очень круто, хотя большинство твоих циклов можно было бы заменить библиотечными функциями, но в общем - твердая 5 . У меня есть знакомые, которые уже пол года пишут на С++, но до сих пор боятся пользоваться указателями и не используют такой удобнейший оператор, как ++ и --, не говоря уже о +=, -= и т.д.
10.05.2004, 15:33 (Сообщение последний раз редактировалось: 10.05.2004, 17:54 ELF.)
Огромное тебе спасибо, Manyak!!! Ты прямо таки мне всё рассказал, спасибо, что нашёл время на изучение исходника и доработал его!
На счёт обучения C++, я действительно новичок в плане написания прог на C и C++ (хотя уже много лет писал на Basic, Pascal, но не на Delphi). Скорее всего дело в литературе, которую используешь (тут огромнейшее спасибо ещё раз Jet'у).
Постараюсь сегодня же всё обновить и выпустить версию 1.1, а вообще, если мне кто-то поможет в разборке формата RES (буквально пару полей узнать), то я смогу скорее всего сделать MQ Editor (после чего надобность в пакете исчезнет).
Кстати, насчёт циклов, теперь, когда я вернулся к C, я решил использовать для перевода параметров в переменные обычную функцию sscanf(), после чего в циклах надобность отпадает...
И ещё, я тут сайт один прикольный нарыл, там есть этакий словарик функций C. Очень удобно закачать весь их сайт, и использовать этот словарик: www.codenet.ru
Добавлено 10.05.2004 в 17:47
-------------------------------------
Итак, сделал версию v1.1, прога Replacer оптимизирована по совету Manyak'а (за что ему спасибо).
Теперь о будущем редакторе, вот интересующие меня моменты в RES файлах:
1.Что прописано в RES архиве по адресу 0x0000000Ch? (после адреса списка);
2.По адресу 0x00000008h находится указатель на список имён, а там первое поле обычно имеет значение 0xFFFFFFFFh, но иногда оно имеет нормальное значение, за что оно отвечает?