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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2011, 14:08   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Icon как строка, или как запихать его в INI а затем выдернуть оттуда?

Доброго времени суток!

Как можно Icon'ку представить как строку ввиде 16'-итричной записи?

Вот в файлах локализации AIMP:
Код:
[FILE]
Icon=000001000100101000000100180068030000160000002800000010000000
20000000010018000000000040030000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000AF62289C5F47B45C1FBF5B07BC5601BE6A
25937B850720CE071FCB7D6C8EB05F29B14A01AE4A06A44B1F8C4F489A4720B9
7F5399A2CAA092A3CF7D31E67400E58D28B6A19D1749F31648F49D95B1D6833
Как это туда запихано?
Человек_Борща вне форума Ответить с цитированием
Старый 11.12.2011, 14:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
TCustomIniFile.WriteBinaryStream

Writes a binary value to the INI file.

Код:
procedure WriteBinaryStream(const Section, Name: string; Value: TStream): virtual;
Description

Call WriteBinaryStream to write a binary value from a specified stream to a specified section and key in the INI file. WriteBinaryStream writes from the current position in the stream to the end, converting the value into its hexadecimal representation.

Section is the section that contains the target key.

Name is the key under which the binary data is to be written.

Value is a stream to from which the binary value can be read.

Note: Attempting to write a value to a nonexistent section or attempting to write data to a nonexistent key are not errors. In these cases, WriteBinaryStream creates the section and key and sets its initial value to the hexadecimal representation of the stream’s data
Цитата:
TCustomIniFile.ReadBinaryStream

Retrieves a binary value from the INI file.

Код:
function ReadBinaryStream(const Section, Name: string; Value: TStream): Integer; virtual;
Description

Call ReadBinaryStream to read a binary value into a specified stream. After reading the binary value, which it converts from a series of hexadecimal characters, from the INI file into the current position of the stream, ReadBinaryStream returns the number of bytes written to the stream. If the stream is a memory stream (TMemoryStream or one of its descendants), the stream is left positioned to the same byte as it was before the call to ReadBinaryStream (immediately before the new binary value).

Section is the section that contains the desired key.

Name is the key under which the binary data is stored.

Value is a stream to which the binary value is written.
наверно так.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.12.2011, 14:21   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1. TIcon выгружаем в MemoryStream
2. MemoryStream преобразуем в текст, например в BASE64
3. Пишем в INI
Обратное преобразование с точность наоборот
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.12.2011, 14:25   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Спасибо. Вопрос исчерпан.
Человек_Борща вне форума Ответить с цитированием
Старый 11.12.2011, 14:29   #5
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Код:
function GetHexIcon(const Icon: TIcon): string;
var
  MemoryStream: TMemoryStream;
  I: Integer;
  B: Byte;
begin
  MemoryStream := TMemoryStream.Create;
  Icon.SaveToStream(MemoryStream);
  MemoryStream.Position := 0;

  for I := 0 to MemoryStream.Size - 1 do
  begin
    MemoryStream.Read(B, 1);
    Result := Result + IntToHex(B, 2);
  end;

end;
Только надо оптимизировать
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как закоментировать скрипт, а затем вызвать его? %$PROregRAMi$t% JavaScript, Ajax 3 12.10.2011 13:50
Что с файлом и как его, так сделали или изуродовали? valerij Microsoft Office Excel 4 10.01.2011 16:47
Прикрепить файл к ЕХЕ. И вытащить его оттуда. TwiX Общие вопросы Delphi 2 16.06.2010 20:26
Винда потеряла файл ntokernel или как там его. Alex Cones Windows 5 05.11.2009 11:12
Ресурсы. Как запихать .bmp в приложение .exe? КСВ Мультимедиа в Delphi 6 24.10.2009 06:25