Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как узнать размер иконки у файла?


Автор: WaReZMEN 22.11.2007, 05:55
Вообщем есть у меня  exe хочу узнать сколько весит его иконка. Тоесть если кто то поменяет у моего exe иконку программа об оэтом узнала и выдала размер новои иконки.  smile 

Автор: Alexeis 22.11.2007, 11:27
WaReZMEN, иконки ведь не сжатые, так что их размер может и не измениться. 

Автор: Snowy 22.11.2007, 11:37
А также у приложения может быть несколько иконок...
Ты уж подумай, чего ты хочешь...

Автор: WaReZMEN 22.11.2007, 11:58
Alexeis,  я не знаю какая конкретна иконка будет у конечного файла. Ее можно поменять на любую другую  вот ее размер мне м нужно узнать...  Скажем у меня есть готовый exe и в нем мы меняем иконку с помощью сторонней проги... Когда запускается мои exe нужно чтоб он сам определил какого размера (в байтах) иконка у него сейчас.


Snowy, ??? То есть это как??  я прикрепляю к exe тока одну иконку в которой несколько картинок (винда сама определяет каких габаритов иконку отображать...) Мне нужно грубо говоря узнать размер файла иконки который я прикрепил к exe. 
к exe.

Автор: aktuba 22.11.2007, 12:25
Честно говоря не понял, в чем сложность, но раз нужен код:
Код

var
  lStream: TMemoryStream;
  lIcon: TIcon;
begin
  lIcon := TIcon.Create;
  lStream := TMemoryStream.Create;
  try
    lIcon.LoadFromResourceName(hInstance, 'MAINICON');
    lIcon.SaveToStream(lStream);
    ShowMessage(IntToStr(lStream.Size));
  finally
    lStream.Free;
    lIcon.Free;
  end;
end;

Автор: Snowy 22.11.2007, 12:35
1. Иконки не имеют сжатия (обычно), поэтому размер у иконок 32х32 будет (обычно) одинаковым.
2. Если ты назначишь ico файл, в котором несколько иконок, то он будет разложен на эти иконки и они также будут засунуты все в ехе поотдельности.
3. Да, винда сама выбирает какую показывать. Но факт в том, что их много.
И какая из них тебя интересует?
Я могу не менять, а добавить ещё несколько... Или вместо одной засунуть 10.
Отсюда вывод:
1. иконок может быть много.
2. Размер иконок не изменяется.

Автор: WaReZMEN 22.11.2007, 13:19
Snowy, мне нужен размер всех иконок скажем так у меня есть файл без иконки он весит 20Кб я добавляю иконку к примеру весом 5Кб. Размер файла увеличится... Это я знаю... Но этот exe должен понять что размер увеличился на 5Кб. И что конец файла теперь будет после 25Кб в которые пихается дополнительная информация.... Так вот когда я запускаю exe то он должен прочитать информацию которую я дописал... если размер файла фиксирован то нет проблем но если я изменю (добавлю икону(ки)) то размер файла изменится и моя информация уже сдвинется в файле на определенное кол-во байт, и то место где начинается моя инфа мне и нужно определить...

Автор: Snowy 22.11.2007, 13:30
ЖиСтока...
Может лучше в ресурсы эту информацию писать?
Но... Если уж очень хочется, то дописывай свою информацию в конец файла, а после неё ещё 4 байта - размер этой информации.
По ним ты всегда сможешь найти её начало.
А иконки - далеко не единственный способ модификации.
Так что лучше считать не от начала файла, а от конца.

Автор: WaReZMEN 22.11.2007, 13:45
Snowy, Все гораздо сложнее... после фаила я записываю свою инфу а после еще пару фаилов... информацию о которых я как раз и записываю....

Добавлено через 3 минуты и 36 секунд
Все придумал ведь можно всю инфу писать в конец файла и потом с конца все считывать…. Всем СПС!

Автор: WaReZMEN 22.11.2007, 14:01
Блин тогда иконка перестает менятся.... мож всетаки скажете про то как решить проблему этого топика?

Автор: Snowy 22.11.2007, 14:41
Говорю - засунь все данные в ресурсы.
Не трогай ехе. Ни к чему хорошему это не приведёт.

Автор: WaReZMEN 23.11.2007, 01:20
Snowy, Все сделал... Запихал в exe все отлично работает... А ресурс тут не подходит...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)