|
#1
|
|||
|
|||
библиотека DLL
пишу прогу в которой нужно хранить определенное количество изображений для этого решил использовать DLL подскажите как создается DLL с картинками *. jpg на windows 7
|
#2
|
||||
|
||||
Чем не подходит ImageList? Или в чем суть проблемы вообще? Может быть проще хранить в папке или файле каком-то?
Хорошо написанная программа не требует документации ICQ 9-184-668. |
#3
|
|||
|
|||
в Imagelist насколько я знаю можно сохранять только bmp и ico
а в папке хранить не виход поскольку изображений много и кроме того их нужно будет грузить в image а с библиотекой таких проблем не должно бить... пробовал создать ресурс на win 7 но не получилось..... возможно на win 7 ресурс создается иначе подскажите пожалуйста кто знает или возможно есть еще другой способ? |
#4
|
|||
|
|||
Ресурс создается ровно также. Только jpeg тебе все равно в него придется запихивать как бинарный поток и потом соответсвенно работать с ним (ресурс тоже ничего кроме bmp, ico и cur из картинок не поддерживает).
Более того, тебе никто не мешает создать программку, которая сохранит тебе нужные картинки в одном файле, а в основной программе просто читать из него. |
#5
|
||||
|
||||
исходный файл ресурса rc.rc :
Код:
image1 AVATAR "d:\Картинки\Разное\av-37133.jpg" image2 AVATAR "d:\Картинки\Разное\1190024596_19.jpg" image3 AVATAR "d:\Картинки\Разное\chel.jpg" Код:
"c:\Program Files\Borland\Delphi7\Bin\brcc32.exe" rc.rc Код:
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
|
|||
|
|||
спасибо за помощь
|