Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2014, 10:24   #11
STRELOK-2007
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 144
Восклицание

Цитата:
Сообщение от doktor255 Посмотреть сообщение
Религия что-ли не позволяет?Тогда уж без сторонних модулей, и без сторонней помощи.
Я не хочу таскать с собой ради одной-двух функций, не известно сколько весящих. Только в случае крайней необходимости. Ибо один такой модуль включает еще и еще. Что mad, что jedi, что другие подобные пакеты.

Если есть функции Windows как BeginUpdateResource, как UpdateResource, как EndUpdateResource. То как их использовать? Если они есть, то значит должны работать!

Вопрос стоял именно об этом, и в том числе с самого начала темы.

А не про какие то "левые" библиотеки.

И к тому-же, подавляющая большинство кода - то еще старье, приспособленное для заросшей мхом Delphi 7. Я не говорю уже про юникод, и вообще молчу про x64.

И не надо показываться умным, отвечая на вопрос про Ерему, если он изначально задан про Фому.

Как будто я дурак, а вы такие умные.
STRELOK-2007 вне форума Ответить с цитированием
Старый 17.02.2014, 11:04   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

От куда уверенность, что msIcon.Memory содержат данные в нужном формате? Там данные должны быть в формате ресурсного файла.
Цитата:
И к тому-же, подавляющая большинство кода - то еще старье, приспособленное для заросшей мхом Delphi 7
Ну и зря. Ни чем практически код для XE не будет отличаться от кода для D7. Просто иконки для смены держите в ресурсе своего exe и от туда их выдергивайте в нужном уже формате
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.02.2014, 11:10   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
EndUpdateResourceW - возвращает False
Кстати. А что дает GetLastError() когда эта функа False возвращает ты проверял?
Какой код ошибки то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.02.2014, 15:42   #14
STRELOK-2007
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 144
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
От куда уверенность, что msIcon.Memory содержат данные в нужном формате? Там данные должны быть в формате ресурсного файла.
Ну и зря. Ни чем практически код для XE не будет отличаться от кода для D7. Просто иконки для смены держите в ресурсе своего exe и от туда их выдергивайте в нужном уже формате
Delphi 2009+ абсолютно не совместим с Delphi 2007- кодом по двум огромным причинам. 1) Это поддержка юникода 2) Строки имеют разный формат, речь идет именно о String, а так-же о PChar.

Что касается иконки, то она может быть в любом формате изначально. Потом будет конвертироваться в ICO. А дальше должна засовываться в ресурс.

Сегодня кстати почему-то код работает без ошибок, т.е. True True выдает.
И так
ShowMessage(BoolToStr(UpdateResourc eW(hExe, RT_ICON, 'MAINICON', 1033, msIcon.Memory, msIcon.Size), True));

И вот так например
ShowMessage(BoolToStr(UpdateResourc eW(hExe, RT_ICON, 'MAINICON', MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), msIcon.Memory, msIcon.Size), True));

Но бинарник бьется по ходу дела, и не хочет запускаться потом.

P.S.
А надо ли как-то специальным образом иконку подготовить перед записью в ресурс?
STRELOK-2007 вне форума Ответить с цитированием
Старый 17.02.2014, 15:52   #15
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от STRELOK-2007 Посмотреть сообщение
P.S.
А надо ли как-то специальным образом иконку подготовить перед записью в ресурс?
Если бы ты победил лень, и посмотрел пример, то подобных вопросов у тебя бы не возникло.
doktor255 вне форума Ответить с цитированием
Старый 17.02.2014, 15:55   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Delphi 2009+ абсолютно не совместим с Delphi 2007
Ну так громко, целые проекты с D7 на XE переводят не взирая на абсолютную несовместимость
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.02.2014, 19:19   #17
STRELOK-2007
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 144
По умолчанию

acWorkRes
Не подходит. Да, хорошо, что не тянет за собой туеву кучу библиотек, а даже для минимизации различные функции вынес для себя из стандартных версий.

Но как я и говорил, абсолютно не приспособлен для новых версий Delphi. Учитывая мохнатый 2004 год, как раз Delphi 7 - как в воду глядел.

Да, по счастливой случайности, а точнее по удачному стечению обстоятельств - что там минимум работы со строками, код для 32 битной Delphi "прокатил", и даже работает, и хорошо работает.

Но 64 бит ни Delphi не переваривает (не компилится, более 60 ошибок - которые скорее всего тупо не заменишь), ни 64 битные PEшки не хавает, будучи откомпилинным в 32.

doktor255, если такой умный, и на каждый случай у тебя есть пример, покажи уж рабочий пример для х64, что нет? Как нет? Пичаль беда, лохматый двехтысячный код и я могу найти, а потом умным казаться.

К слову, с VERSION RESOURCE работать на низком уровне умею, у меня есть так сказать "кроссбитный" самописный, ни от чего не зависящий модуль для парсинга и компилляции данного ресурса. И Windows API - хавает его без проблем. В пяток строчек кода.

Код:
procedure Test2;
var
 ms: TMemoryStream;
 h: THandle;
begin
 ms:= TMemoryStream.Create;
 ms.LoadFromFile(ExtractFilePath(ParamStr(0))+'ver');
 ms.Seek(0, 0);

 h:=Windows.BeginUpdateResourceW(PChar(ExtractFilePath(ParamStr(0))+'Test.exe'), False);
 if Windows.UpdateResourceW(h, RT_VERSION, MAKEINTRESOURCE(VS_VERSION_INFO), 1033, ms.Memory, ms.Size) then
  if not Windows.EndUpdateResourceW(h, False) then
   ShowMessage('Версия не установлена!!!');
end;
Да, ресурс тут готовый, чтобы каждый раз не перекомпилливать.

Но с иконкой что делать?

Все таки нужно ее как-то подготавливать или нет? Если да, то как?

doktor255 Может быть и для этого случая, нагуглишь какой нибудь козырь из двухтысячных заросший плесенью?
STRELOK-2007 вне форума Ответить с цитированием
Старый 17.02.2014, 19:21   #18
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от STRELOK-2007 Посмотреть сообщение
doktor255, если такой умный, и на каждый случай у тебя есть пример, покажи уж рабочий пример для х64, что нет? Как нет? Пичаль беда, лохматый двехтысячный код и я могу найти, а потом умным казаться.
Наиглупейший способ просить о помощи, попытаться поймать человека на слабо. Удачи в поисках. Я ПАС.
doktor255 вне форума Ответить с цитированием
Старый 17.02.2014, 19:50   #19
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А как здорово звучит: "у меня есть так сказать "кроссбитный" самописный, ни от чего не зависящий модуль" Может быть от отсюда?
ReportCube вне форума Ответить с цитированием
Старый 18.02.2014, 15:31   #20
STRELOK-2007
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 144
По умолчанию

Цитата:
Сообщение от doktor255 Посмотреть сообщение
Наиглупейший способ просить о помощи, попытаться поймать человека на слабо. Удачи в поисках. Я ПАС.
Ой бедненького обидели, который весь из последних сил пытался помочь, начав с великого слова "Баян".

Пас и пас, от этого - ни жарко, ни холодно.

Смахивает на обычного жирного форумного тролля.
STRELOK-2007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно сменить иконку в трее компонента TtrayIcon ? zmxncb Компоненты Delphi 3 15.12.2014 03:26
Как сменить иконку у любого файла ЕХЕ cargo29 Общие вопросы Delphi 25 05.06.2011 23:46
значение из стороннего приложения Wov Общие вопросы Delphi 4 01.03.2011 00:04
Сменить иконку? zhook Общие вопросы Delphi 3 28.12.2010 00:57
Защита стороннего приложения Mifody Общие вопросы Delphi 1 25.03.2010 13:19