Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Советы по Delphi. Версия 1.4.3 от 1.1.2001
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001 краткое содержание

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

…начиная с 1001. Смотрите другие файлы…

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.4.3 от 1.1.2001 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

myImage.Picture.Bitmap.Handle := LoadBitmap(HInstance, 'TIMEEDIT');

В качестве предостережения: убедитесь в том, что имена (в самой левой колонке) изображений в .RC файле написаны в верхнем регистре, при вызове также необходимо писать их имена в верхнем регистре.

-Ralph Friedman

Ошибка дублирования идентификатора ресурса

Delphi 1

У вас есть исходный код VCL? Если да, то в этом случае ее можно всю перекомпилировать, добавив каталог к вашему библиотечному пути (Library path) в опциях среды (Environment Options | Library). Я думаю это нужно сделать, чтобы отделаться от этой ошибки. При другом способе необходимо вычислить вызывающую проблему директиву $R, временно удалить ее, и осуществить перекомпиляцию. Временно выключить директиву $R можно добавлением '.' перед $ (но это не единственный путь выключить ее).

Вероятно, вы сабкласситесь от VCL. Убедитесь в том, что идентификатор ресурса для вашей иконки уникальный. Просто загрузите ее в любой редактор ресурсов, и измените ее номер. После этого вы должны пересобрать вашу библиотеку.

Сохранение и выдёргивание ресурсов в DLL или EXE

Письмо читателя

Иногда возникает необходимость вшить ресурсы в исполняемый файл Вашего приложения (например чтобы предотвратить их случайное удаление пользователем, либо, чтобы защитить их от изменений). Данный пример показывает как вшить любой файл как ресурс в EXE-шнике. Совместимость: Delphi 3.x (или выше)

Далее рассмотрим, как создать файл ресурсов, содержащий корию какого-либо файла. После создания такого файла его можно легко прицепить к Вашему проекту директивой {$R}. Файл ресурсов, который мы будем создавать имеет следующий формат:

+ заголовок

+ заголовок для нашего RCDATA ресурса

+ собственно данные - RCDATA ресурс

В данном примере будет показано, как сохранить в файле ресурсов только один файл, но думаю, что так же легко Вы сможете сохранить и несколько файлов.

Заголовок ресурса выглядит следующим образом:

TResHeader = record

DataSize: DWORD; // размер данных??????

HeaderSize: DWORD; // размер этой записи

ResType: DWORD; // нижнее слово = $FFFF => ordinal

ResId: DWORD; // нижнее слово = $FFFF => ordinal

DataVersion: DWORD; // *

MemoryFlags: WORD;

LanguageId: WORD; // *

Version: DWORD; // *

Characteristics: DWORD; // *

end;

Поля, помеченные звёздочкой, Мы не будем использовать. Приведённый код создаёт файл ресурсов и копирует его в данный файл:

Листинг 1:

procedureCreateResourceFile(

DataFile, ResFile: string; // имена файлов

ResID: Integer // id ресурсов

);

var

FS, RS: TFileStream;

FileHeader, ResHeader: TResHeader;

Padding: array[0..SizeOf(DWORD)-1] ofByte;

begin

{ Open input file and create resource file }

FS := TFileStream.Create( // для чтения данных из файла

DataFile, fmOpenRead);

RS := TFileStream.Create( // для записи файла ресурсов

ResFile, fmCreate);

{ Создаём заголовок файла ресурсов - все нули, за исключением HeaderSize, ResType и ResID }

FillChar(FileHeader, SizeOf(FileHeader), #0);

FileHeader.HeaderSize := SizeOf(FileHeader);

FileHeader.ResId := $0000FFFF;

FileHeader.ResType := $0000FFFF;

{ Создаём заголовок данных для RC_DATA файла

Внимание: для создания более одного ресурса необходимо повторить следующий процесс, используя каждый раз различные ID ресурсов }

FillChar(ResHeader, SizeOf(ResHeader), #0);

ResHeader.HeaderSize := SizeOf(ResHeader);

// id ресурса - FFFF означает "не строка!"

ResHeader.ResId := $0000FFFF or(ResId shl16);

// тип ресурса - RT_RCDATA (from Windows unit)

ResHeader.ResType := $0000FFFF or (WORD(RT_RCDATA) shl16);

// размер данных - есть размер файла

ResHeader.DataSize := FS.Size;

// Устанавливаем необходимые флаги памяти

ResHeader.MemoryFlags := $0030;

{ Записываем заголовки в файл ресурсов }

RS.WriteBuffer(FileHeader, sizeof(FileHeader));

RS.WriteBuffer(ResHeader, sizeof(ResHeader));

{ Копируем файл в ресурс }

RS.CopyFrom(FS, FS.Size);

{ Pad data out to DWORD boundary - any oldrubbish will do!}

ifFS.Size modSizeOf(DWORD) <> 0 then

RS.WriteBuffer(Padding, SizeOf(DWORD) - FS.Size modSizeOf(DWORD));

{ закрываем файлы }

FS.Free;

RS.Free;

end;

Данный код не совсем красив, и отсутствует обработка ошибок. Правильнее будет создать класс, включающий в себя данный пример. Извлечение ресурсов из EXE теперь рассмотрим пример, показывающий, как извлекать ресурсы из исполняемого модуля. Вся процедура заключается в создании потока ресурса, создании файлового потока и копировании из потока ресурса в поток файла.

Листинг 2:

procedureExtractToFile(Instance:THandle; ResID: Integer; ResType, FileName: String);

var

ResStream: TResourceStream;

FileStream: TFileStream;

begin

try

ResStream := TResourceStream.CreateFromID(Instance, ResID, pChar(ResType));

try

//if FileExists(FileName) then

//DeleteFile(pChar(FileName));

FileStream := TFileStream.Create(FileName, fmCreate);

try

FileStream.CopyFrom(ResStream, 0);

finally

FileStream.Free;

end;

finally

ResStream.Free;

end;

exceptonE:Exception do

begin

DeleteFile(FileName);

raise;

end;

end;

end;

Всё, что требуется, это получить Instance exe-шника или dll (у Вашего приложения это Application.Instance или Application.Handle, для dll Вам прийдётся получить его самостоятельно :) ResID тот же самый ID , который был присвоен ресурсу ResType WAVEFILE, BITMAP, CURSOR, CUSTOM – это типы ресурсов, с которыми возможно работать, но у меня получилось успешно проделать процедуру только с CUSTOM FileName – это имя файла, который мы хотим создать из ресурса

Пока ..

Igor Nikolaev aKa The Sprite

[ spritesoft@bos.ru]

IDE

Копирование проекта в новый каталог

…я скопировал все файлы (и программу, и базу данных) демонстрационного приложения в новый каталог, чтобы поэкспериментировать с программой, не трогая оригинал…

Самый простой путь сделать это:

1. «Save Project As» (сохранить проект как) в ваш новый каталог.

2. Для каждого PAS-файла проекта сделайте операцию «Save As» (сохранить как)

3. Запустите View/ProjectManager для проверки отсутствия ссылок на старый каталог

Если вы уже скопировали PAS-файлы в новый каталог, то в качестве альтернативы к п.(2) могу предложить воспользоваться кнопками плюс/минус в Менеджере Проекта (Project Manager), это поможет вам удалить старое и добавить файлы из нового каталога.

– Mike Orriss

Использование Tools Interface

Delphi 2

…я все еще ищу *крутой* способ отрисовки содержимого окна редактирования IDE, и уже добрался до списка дескрипторов окон. Я так понял, что для этого нужно использовать инструментальный интерфейс (Tools Interface), только c помощью него, да? Ну и как этим чудом воспользоваться?

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.4.3 от 1.1.2001 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.4.3 от 1.1.2001, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x