Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1178611316
Knight
2007-05-08 12:01
2007.06.03
Чё-то я вообще местную модерацию понимать перестал..


2-1179237241
snakecatcher
2007-05-15 17:54
2007.06.03
Мерцание в TImage


6-1164270644
Cawa
2006-11-23 11:30
2007.06.03
IDHTTP некорректная докачка файла


3-1173587325
O.O
2007-03-11 07:28
2007.06.03
Большие числа int64/LargeInt


6-1164356949
DmitryNekl
2006-11-24 11:29
2007.06.03
WebBrowser, Ctrl-C - Ctrl-V и Enter





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский