Страница 1 из 2

иконка для консольной программы

СообщениеДобавлено: 07.08.2007 12:10:49
nagash
Возможно ли сделать иконку для консольной программы?
Ну т.е. если {$APPTYPE CONSOLE}
Как-то ведь это делается...
Например виндовский cmd.exe или cscript.exe

СообщениеДобавлено: 07.08.2007 16:02:34
SovNarKom
Так же, как и для не консольной, цепляешь ресурсный файл с иконкой.

СообщениеДобавлено: 08.08.2007 07:23:32
nagash
SovNarKom
как цеплять ресурсы я понял в принципе, почитал руководство...
пишу значит
{$R AppIcon ICON "sb.ico"}
получаю Error while linking
подумал что вероятно AppIcon не относится к директиве $R (мануал ужасен), порыскал на предмет AppIcon.exe - ничего не нашел.

Решил пойти обходным путем, использовал XN Resource Editor, в нем заявлена поддержка win32/pe. Так нифига, он порет экзешник, программа после него отказывается запускаться.

Объясни пожалуйста.
С офсайтом фрипаскаля траблы... В некоторых разделах (в т.ч. и в поиске) выдает Server Error.

СообщениеДобавлено: 08.08.2007 07:43:36
SovNarKom
Кстати руководство на удивление не плохое.. но правда вот то что ты вычитал действительно жуть какая-то... нашёл же=) Лучше PDF читать...

Так вот цеплять ресурс нужно вот так: {$R myicon.res}
А создавать... ну вообще в любом редакторе, на это способном.

А если редактора нет то...
1. Создаёшь текстовый файл, пишешь в нём
MAINICON ICON "Путь к иконке"
2. Сохраняешь его в файле myicon.rc.
3. Натравливаешь на этот файл windres, (Я надеюсь он у тебя в PATH прописан): windres myicon.rc > myicon.res
Всё, можно компилировать.

Да, в качестве редактора ресурсов советую ResourceHacker.

СообщениеДобавлено: 08.08.2007 09:04:42
nagash
SovNarKom
я думал что доки в html и в pdf одинаковы)

Блин... через жопу как-то... вот почему бы не объединить все в кучу?) Ну к примеру пишешь
Код: Выделить всё
{$R ICON "c:\myicon\myicon.ico"}

и без всяких извращений получаешь программу с иконкой)

Ну это я так... придираюсь)
Спасибо за помощь!

СообщениеДобавлено: 08.08.2007 11:46:22
Attid
нет это твой вариант получается через одно место,
есть определено созданый стандарт и ему надо следовать.

а то что многог движений так это пока недоделка лазаря.

СообщениеДобавлено: 08.08.2007 12:24:24
nagash
Attid
Ты меня не понял наверное)
Неудобно просто. Неужели добавить директиву, обозвать к примеру $ADDRES, позволяющую все делать автоматом (да хотя бы обращаться автоматически к windres) это нарушение стандарта?

например
Код: Выделить всё
{$ADDRES ICON "c:\myicon\myicon.ico"}
{$ADDRES STRING "c:\myrc\myrc.rc"}


по-моему так проще

P.S. Топик про FPC. Это не под лазарусом. Я читал там проще работать с иконками, чем в FPC.

СообщениеДобавлено: 08.08.2007 18:31:31
SovNarKom
Дело, как мне кажется, в структуре того же exe файла, и сборщика используемого для сборки, ld например ещё не так давно использовался и под виндой...

Одним словом - новая директива это гемор. А зачем он нужен, если можно сделать так, как принято везде? Тем более, что при наличии нормального редактора ресурсов проблема исчезает. А при твоём подходе придётся 100 строк писать, если нужно 100 ресурсов запихнуть в файл?

В лазаре... нет не проще.

СообщениеДобавлено: 09.08.2007 06:15:43
nagash
SovNarKom
Нет, не придется. Нужно сделать поддержку масок :D
Код: Выделить всё
{$ADDRES STRING "c:\myrc\*.rc}


Ладно, я не могу быть грамотным в данном вопросе.
Спасибо за помощь еще раз.

Дабы не создавать еще один топ - как то же самое сделать с версией?
Натолкнулся вот на такой офигенный мануал. Коммент там очень в тему)

СообщениеДобавлено: 09.08.2007 06:29:50
nagash
Извиняюсь, разобрался с версией.
windres не хотел собирать rc-файл почему-то. Сейчас перебил ручками - заработало.
Но теперь...
Допустим я хочу чтобы у меня иконка и версия хранились в разных res'ах. Пишу
Код: Выделить всё
{$R ico.res}
{$R ver.res}

Запихивается только то, что идет последним.
Каков синтаксис?
Я нашел только следующее
Under Windows, you can include resources in your executable or library using the f$R filenameg directive.

СообщениеДобавлено: 09.08.2007 13:48:37
Юра
Нужно использовать fpc 2.1.5 или старше. Более ранние версии не поддерживают подключение нескольких ресурсных файлов.
Кстати, можно подключать сразу .rc файл и fpc сам его соберет.

СообщениеДобавлено: 09.08.2007 13:55:58
nagash
Юра
Отлично, спасибо. Очень ценная инфа.
Полез обновляться с 2.0.4)

СообщениеДобавлено: 08.03.2008 18:04:01
AMD
SovNarKom писал(а):Кстати руководство на удивление не плохое.. но правда вот то что ты вычитал действительно жуть какая-то... нашёл же=) Лучше PDF читать...

Так вот цеплять ресурс нужно вот так: {$R myicon.res}
А создавать... ну вообще в любом редакторе, на это способном.

А если редактора нет то...
1. Создаёшь текстовый файл, пишешь в нём
MAINICON ICON "Путь к иконке"
2. Сохраняешь его в файле myicon.rc.
3. Натравливаешь на этот файл windres, (Я надеюсь он у тебя в PATH прописан): windres myicon.rc > myicon.res
Всё, можно компилировать.

Да, в качестве редактора ресурсов советую ResourceHacker.


Все вроде ок создал файл как полагается но вот не цепляется зараза говорит что инвалид мой файл
project1.lpr(22,1) Error: Invalid resource file: myicon.res

взял resource file лазаруса компилится прекрасно
значит windres myicon.rc > myicon.res чтото не то делает

СообщениеДобавлено: 08.03.2008 18:42:30
m_guest
Я использую для компиляции rc-файла компилятор ресурсов отсюда

СообщениеДобавлено: 09.03.2008 01:38:49
AMD
m_guest писал(а):Я использую для компиляции rc-файла компилятор ресурсов отсюда


так работает

GoRC.exe /r myicon.res myicon.rc

хотя странно почему родной не работает?