Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

Что можно(нужно) сделать, чтобы Delphi запомнил   Найти похожие ветки 

 
mr1Andersen   (2007-05-12 12:54) [0]

Удалено модератором
Примечание: СПАМ


 
Loginov Dmitry ©   (2007-05-12 13:03) [1]

> Вытягиваю из cd-rom диск на котором был gif-рисунок «flower.gif»,
> запускаю программу – в результате ошибка.


Какая ошибка?


 
mr1Andersen   (2007-05-12 13:06) [2]

нет рисунка


 
X9 ©   (2007-05-12 13:27) [3]

Пользуйтесь ресурсами.


 
mr1Andersen   (2007-05-12 13:39) [4]

Какими ресурсами


 
Юрий Зотов ©   (2007-05-12 13:45) [5]

> mr1Andersen   (12.05.07 12:54)

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

Стандартные компоненты для работы с анимацией поступают иначе - в теле программы они запоминают не сам файл, а только его имя (а для работы программы, конечно же, нужен сам файл). Чтобы сохранить в теле программы сам файл, его, как и в случае с Bmp, сначала нужно записать в раздел ее ресурсов, а потом оттуда же извлекать. Сделать это можно либо вручную (см. справку Win32 SDK по компилятору ресурсов RC), либо с помощью специализированных компонентов. Второе, конечно, же проще.


 
mr1Andersen   (2007-05-12 14:15) [6]

Я пробовал так:

1) создаю папку 1 на d:\
2) копирую «brcc32.exe» с Borland\Delphi7\Bin
3) кидаю «brcc32.exe» и «flower.gif» в папку 1
4) создаю в папке текстовый документ где пишу: Pic1 RCDATA “«flower.gif»”. Затем делаю из текстового документа файл: «pict.rc»
5) Пуск-Выполнить: d:\1\brcc32.exe d:\1\pict.rc
6) Появляется файл: «pict.RES»
7) копирую «pict.RES» в папку с проектом
8) Запускаю Delphi и в Unit1 пишу:

unit Unit1;

interface

uses
 GIFImage,
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ExtCtrls, ComCtrls, Buttons;
type
 TForm1 = class(TForm)
   Image1: TImage;
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
{$R pict.RES}

procedure TForm1.FormCreate(Sender: TObject);
var
 rs1: TresourceStream;
begin
 rs1:=TResourceStream.Create(HInstance, "Pic1", RT_RCDATA);
try
 include(GIFImageDefaultDrawOptions, goDirectDraw);
 Image1.Picture.Graphic.LoadFromStream(rs1);
finally
 rs1.free
end;
end;

end.

В результате пуста форма.


 
Loginov Dmitry ©   (2007-05-12 14:16) [7]

> [0] mr1Andersen   (12.05.07 12:54)


Выбивание почвы из-под ног - не самая хорошая затея. Сейчас программа пишет, что рисунок не найден, а когда-нибудь вообще откажется работать (точно не помню, но вроде Рихтер пишет, что при работе с CD-ROM используется такой же FileMapping, что и при работе с винчестером, т.е. раздел кода в файл подкачки не скидывается).


 
PZ   (2007-05-12 14:46) [8]

>  [6] mr1Andersen   (12.05.07 14:15)

Попробовать:

try
include(GIFImageDefaultDrawOptions, goDirectDraw);
rs1.Seek(0);
Image1.Picture.Graphic.LoadFromStream(rs1);
finally


 
mr1Andersen   (2007-05-12 15:05) [9]


> PZ   (12.05.07 14:46) [8]
> >  [6] mr1Andersen   (12.05.07 14:15)Попробовать:try include(GIFImageDefaultDrawOptions,
>  goDirectDraw); rs1.Seek(0);  Image1.Picture.Graphic.LoadFromStream(rs1);
> finally


[Error] Unit1.pas(34): There is no overloaded version of "Seek" that can be called with these arguments
[Fatal Error] Project1.dpr(5): Could not compile used unit "Unit1.pas"


 
mr1Andersen   (2007-05-12 15:20) [10]


> Юрий Зотов ©   (12.05.07 13:45) [5]
> Сделать это можно либо вручную (см. справку Win32 SDK по компилятору
> ресурсов RC), либо с помощью специализированных компонентов.
>  Второе, конечно, же проще.


Вручную как видите ни получается, жаль конечно.
Подскажите пожалуйста силку на специализированный компонент.
Наперед спасибо!


 
{RASkov} ©   (2007-05-12 15:39) [11]

> [10] mr1Andersen   (12.05.07 15:20)

Ну а что мешает временно положить gif рядом с ехешником(в одну и туже папку)....., пока не научишься его в ресурс закидывать/извлекать....

> Подскажите пожалуйста ссылку на специализированный компонент.

TRxGIFAnimator из библиотеки RxLib и остальные компоненты из этой же библиотеке полезные, RxLib но НЕ JEDI(JVCL).....)


 
mr1Andersen   (2007-05-12 16:19) [12]


> {RASkov} ©   (12.05.07 15:39) [11]
> > [10] mr1Andersen   (12.05.07 15:20)Ну а что мешает временно
> положить gif рядом с ехешником(в одну и туже папку).....
> , пока не научишься его в ресурс закидывать/извлекать...
> .


мне нужно одну exe-ку


 
{RASkov} ©   (2007-05-12 17:25) [13]

> [12] mr1Andersen   (12.05.07 16:19)
> мне нужно одну exe-ку

Я верю... ;)



Страницы: 1 вся ветка

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.045 c
15-1178645617
Витян
2007-05-08 21:33
2007.06.03
Помогите, пожалуйста, найти ошибку в решении задачи!


1-1176118886
oxffff
2007-04-09 15:41
2007.06.03
Очередные баги компилятора.


15-1178504825
Slider007
2007-05-07 06:27
2007.06.03
С днем рождения ! 5 мая


15-1178620975
DVM
2007-05-08 14:42
2007.06.03
Можно ли как то оптимизировать данный участок кода


15-1178492643
Real
2007-05-07 03:04
2007.06.03
C Днем Радио!!!