![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как проиграть avi из ресурса
Dysan © (2004-03-30 14:02:00)есть у меня ресурс с авишкой
вот так я ее достаю
hResource: THandle;
pData: Pointer;
hResource:=LoadResource(hInstance, FindResource(hInstance, 'jrx',RT_RCDATA));
pData:=LockResource(hResource);
а что дальше? что делать с этим указателем, если хочеться чтоб авишка проигралась в TAnimate?
hellfire (2004-04-15 19:07:00) [1]Тoчнее,Cannot open Avi.
простите
hellfire (2004-04-15 18:53:00) [2]А вот такой вопрос.
Короче, закопилил AVI-шку в *.dll
Все реусрсы перекомпилил, короче, сделал всё, как в EXE-файле(из которого,собственно, я его показывал без проблем). Написал такой код:
-----------------
h:=LoadLibrary('splash.dll');
if h=0 then
begin messagebox(0,pchar('Ошибка загрузки splash.dll'),pchar('Файл не найден!'),mb_ok or mb_iconerror);
exit;
end;
Animate1.ResHandle:=h;
Animate1.ResName := 'CLIP';
Animate1.Active:=true;
-------------------
Не работает. Avi not found.
Не подскажете в чём проблема ?
hellfire (2004-04-14 20:18:00) [3]Огромное спасибо за совет перекомпилить ресурсы.
А то я намучался порядком до того, как сюда зашёл :)
Юрий Зотов (2004-04-01 10:54:00) [4]> Dysan © (01.04.04 10:46) [21]
Елы-палы, ведь все написали уже. AVI надо ставить, а не RCDATA. И перекомпилить ресурсы. См. [17-20].
Dysan (2004-04-01 10:46:00) [5]я так понял лекарства нет
перепробовал все что было описано выше :(
вот так компайлю ресурс: jrx RCDATA jrx.avi
panov (2004-03-30 18:40:00) [6]>Юрий Зотов © (30.03.04 18:35) [18]
Тип ресурса?
AVI, а не RCDATA. Поэтому и открыть не может.
Точно!
Но у меня и после этого не заработало, пока не сделал финт ушами -
panov © (30.03.04 18:39) [19]
panov (2004-03-30 18:39:00) [7]>Dysan © (30.03.04 14:02)
Похоже, все дело в том, что ресурсы не обновляются.
попробуй убрать {$R *.res} из файла .DPR, перекомпилировать и добавить снова...
Юрий Зотов (2004-03-30 18:35:00) [8]Тип ресурса?
AVI, а не RCDATA. Поэтому и открыть не может.
Игорь Шевченко (2004-03-30 18:25:00) [9]Странно, все, вроде, работает...
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
Animate1: TAnimate;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R AVI.RES}
procedure TForm1.Button1Click(Sender: TObject);
begin
Animate1.Active := true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Animate1.ResName := 'COOL1';
end;
end.
object Form1: TForm1
Left = 205
Top = 106
Width = 544
Height = 375
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Animate1: TAnimate
Left = 28
Top = 36
Width = 60
Height = 39
Active = False
StopFrame = 13
end
object Button1: TButton
Left = 244
Top = 312
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 1
OnClick = Button1Click
end
end
avi.rc
COOL1 AVI "cool.avi"
Юрий Зотов (2004-03-30 18:10:00) [10]Нужно пройти глубже - в SetOpen, InternalOpen, GetActualResHandle и GetActualResId. Очень похоже, что ошибка в действительности возникает в одном из двух последних методов. Их трассировка должна дать реальную причину.
panov (2004-03-30 17:33:00) [11]Сорри, модуль ComCtrls...
panov (2004-03-30 17:32:00) [12]Модуль TAnimate
procedure TAnimate.CheckOpen;
begin
SetOpen(True);
if not Open then raise Exception.CreateRes(@SCannotOpenAVI);
end;
Юрий Зотов (2004-03-30 17:27:00) [13]Включите "Use debug DCUs" и пройдите отладчиком по VCL - где конкретно застревает?
panov (2004-03-30 17:05:00) [14]>Юрий Зотов © (30.03.04 16:41) [11]
Да думаю, что сообщение простое... У меня тоже не работает почему-то.
"Cannot open AVI."
Юрий Зотов (2004-03-30 16:41:00) [15]1. Не может быть. Как оно может ругаться на то, что уже убрано?
2. RES-файл создан? И подключен?
3. Приведите точнои полностью сообщение об ошибке и точную строку, на которой она возникает.
Dysan (2004-03-30 16:31:00) [16]уже пробовал
не помогает :)
Юрий Зотов (2004-03-30 16:24:00) [17]Уберите эту строку тоже. Оставьте только ResName.
Dysan (2004-03-30 16:11:00) [18]да вобщем то указанно все как в rc:
jrx RCDATA jrx.avi
но он продолжает ругаться на первой строке
Animate.ResHandle := hInstance;
Юрий Зотов (2004-03-30 15:19:00) [19]1. ResID := RT_RCDATA - лучше убрать (смысл этого свойства совсем другой, это не тип ресурса).
2. ResName может быть чувствительным к регистру. Надо назначать ТОЧНО то же имя, что и в RC-файле.
Dysan (2004-03-30 14:53:00) [20]он не упакован и без звука!
проверенно вот таким способом Animate1.FileName:=GetCurrentDir+'\jrx.avi';