Главная страница
    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.068 c
3-1173875512
Сергей М.
2007-03-14 15:31
2007.06.03
Логика работы ADO-компонентов


6-1164146047
frozen_eye1
2006-11-22 00:54
2007.06.03
В WebBrowser из Memo


1-1175838763
atruhin
2007-04-06 09:52
2007.06.03
Не приходит событие OnActivate


15-1178791060
Руслан
2007-05-10 13:57
2007.06.03
Можно ли включить компьютер с помощью сетевой карты?


4-1167337456
BreakPoint
2006-12-28 23:24
2007.06.03
Многопоточность на SMP-системах





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский