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

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

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

Сообщение nagash »

Возможно ли сделать иконку для консольной программы?
Ну т.е. если {$APPTYPE CONSOLE}
Как-то ведь это делается...
Например виндовский cmd.exe или cscript.exe
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

Так же, как и для не консольной, цепляешь ресурсный файл с иконкой.
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

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

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

Объясни пожалуйста.
С офсайтом фрипаскаля траблы... В некоторых разделах (в т.ч. и в поиске) выдает Server Error.
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

Кстати руководство на удивление не плохое.. но правда вот то что ты вычитал действительно жуть какая-то... нашёл же=) Лучше PDF читать...

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

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

Да, в качестве редактора ресурсов советую ResourceHacker.
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

SovNarKom
я думал что доки в html и в pdf одинаковы)

Блин... через жопу как-то... вот почему бы не объединить все в кучу?) Ну к примеру пишешь

Код: Выделить всё

{$R ICON "c:\myicon\myicon.ico"}

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

Ну это я так... придираюсь)
Спасибо за помощь!
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

нет это твой вариант получается через одно место,
есть определено созданый стандарт и ему надо следовать.

а то что многог движений так это пока недоделка лазаря.
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

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

например

Код: Выделить всё

{$ADDRES ICON "c:\myicon\myicon.ico"}
{$ADDRES STRING "c:\myrc\myrc.rc"}


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

P.S. Топик про FPC. Это не под лазарусом. Я читал там проще работать с иконками, чем в FPC.
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

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

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

В лазаре... нет не проще.
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

SovNarKom
Нет, не придется. Нужно сделать поддержку масок :D

Код: Выделить всё

{$ADDRES STRING "c:\myrc\*.rc}


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

Дабы не создавать еще один топ - как то же самое сделать с версией?
Натолкнулся вот на такой офигенный мануал. Коммент там очень в тему)
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение 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.
Юра
постоялец
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Сообщение Юра »

Нужно использовать fpc 2.1.5 или старше. Более ранние версии не поддерживают подключение нескольких ресурсных файлов.
Кстати, можно подключать сразу .rc файл и fpc сам его соберет.
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

Юра
Отлично, спасибо. Очень ценная инфа.
Полез обновляться с 2.0.4)
AMD
постоялец
Сообщения: 189
Зарегистрирован: 23.01.2008 21:25:25
Откуда: Кишинев

Сообщение 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 чтото не то делает
m_guest
постоялец
Сообщения: 193
Зарегистрирован: 14.08.2005 15:10:21

Сообщение m_guest »

Я использую для компиляции rc-файла компилятор ресурсов отсюда
AMD
постоялец
Сообщения: 189
Зарегистрирован: 23.01.2008 21:25:25
Откуда: Кишинев

Сообщение AMD »

m_guest писал(а):Я использую для компиляции rc-файла компилятор ресурсов отсюда


так работает

GoRC.exe /r myicon.res myicon.rc

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