Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизЧто можно(нужно) сделать, чтобы 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c