Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.01.2011, 15:37
andriyys andriyys вне форума
Прохожий
 
Регистрация: 29.04.2010
Сообщения: 5
Репутация: 10
По умолчанию библиотека DLL

пишу прогу в которой нужно хранить определенное количество изображений для этого решил использовать DLL подскажите как создается DLL с картинками *. jpg на windows 7
Ответить с цитированием
  #2  
Старый 24.01.2011, 14:05
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Чем не подходит ImageList? Или в чем суть проблемы вообще? Может быть проще хранить в папке или файле каком-то?
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #3  
Старый 24.01.2011, 21:47
andriyys andriyys вне форума
Прохожий
 
Регистрация: 29.04.2010
Сообщения: 5
Репутация: 10
По умолчанию

в Imagelist насколько я знаю можно сохранять только bmp и ico
а в папке хранить не виход поскольку изображений много и кроме того их нужно будет грузить в image а с библиотекой таких проблем не должно бить...
пробовал создать ресурс на win 7 но не получилось.....
возможно на win 7 ресурс создается иначе подскажите пожалуйста кто знает

или возможно есть еще другой способ?
Ответить с цитированием
  #4  
Старый 25.01.2011, 05:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ресурс создается ровно также. Только jpeg тебе все равно в него придется запихивать как бинарный поток и потом соответсвенно работать с ним (ресурс тоже ничего кроме bmp, ico и cur из картинок не поддерживает).
Более того, тебе никто не мешает создать программку, которая сохранит тебе нужные картинки в одном файле, а в основной программе просто читать из него.
Ответить с цитированием
  #5  
Старый 25.01.2011, 09:50
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

исходный файл ресурса rc.rc :
Код:
image1 AVATAR "d:\Картинки\Разное\av-37133.jpg"
image2 AVATAR "d:\Картинки\Разное\1190024596_19.jpg"
image3 AVATAR "d:\Картинки\Разное\chel.jpg"
компилим его в rc.RES :
Код:
"c:\Program Files\Borland\Delphi7\Bin\brcc32.exe" rc.rc
Dll:
Код:
library ProjectDll;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils,
  Classes;

{$R *.res}
{$R rc.RES}

begin
end.

ну и сам код по вытаскиванию картинок:
Код:
unit Unit1;

interface

uses
  jpeg,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  HLibrary: HMODULE;

implementation

{$R *.dfm}

procedure ResourceStreamPictureAssign(ResName: String; AImage: TImage);
var
  resourcestream: TResourceStream;
  jpeg: TJPEGImage;
begin
  resourcestream:=TResourceStream.Create(HLibrary, ResName, PChar('AVATAR'));
  jpeg:=TJPEGImage.Create;
  try
    jpeg.LoadFromStream(resourcestream);
    AImage.Picture.Assign(jpeg);
  finally
    jpeg.Free;
    resourcestream.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ResourceStreamPictureAssign('image1', Image1);
  ResourceStreamPictureAssign('image2', Image2);
  ResourceStreamPictureAssign('image3', Image3);
end;

initialization
  HLibrary:=LoadLibrary('ProjectDll.dll');

finalization
  FreeLibrary(HLibrary);

end.
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 25.01.2011 в 09:59.
Ответить с цитированием
  #6  
Старый 27.01.2011, 02:13
andriyys andriyys вне форума
Прохожий
 
Регистрация: 29.04.2010
Сообщения: 5
Репутация: 10
Хорошо

спасибо за помощь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:11.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter