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

Вниз

как проиграть avi из ресурса   Найти похожие ветки 

 
Dysan ©   (2004-03-30 14:02) [0]

есть у меня ресурс с авишкой
вот так я ее достаю
 hResource: THandle;
 pData: Pointer;
hResource:=LoadResource(hInstance, FindResource(hInstance, "jrx",RT_RCDATA));
pData:=LockResource(hResource);
а что дальше? что делать с этим указателем, если хочеться чтоб авишка проигралась в TAnimate?


 
Dimka Maslov ©   (2004-03-30 14:18) [1]

Animate.ResHandle := hInstance
Animate.RedID := RT_RCDATA;
Animate.ResName := "jrx"

И ничего загружать не надо


 
Dimka Maslov ©   (2004-03-30 14:19) [2]

ResID


 
Dysan ©   (2004-03-30 14:19) [3]

спасибо


 
Dysan ©   (2004-03-30 14:29) [4]

что то однако не прокатывает :(
на первой же строчке сообщает что не может он открыть avi


 
Dimka Maslov ©   (2004-03-30 14:48) [5]

TAnimate поддреживает только неупакованные AVI без звука


 
Dysan ©   (2004-03-30 14:53) [6]

он не упакован и без звука!
проверенно вот таким способом Animate1.FileName:=GetCurrentDir+"\jrx.avi";


 
Юрий Зотов ©   (2004-03-30 15:19) [7]

1. ResID := RT_RCDATA - лучше убрать (смысл этого свойства совсем другой, это не тип ресурса).

2. ResName может быть чувствительным к регистру. Надо назначать ТОЧНО то же имя, что и в RC-файле.


 
Dysan ©   (2004-03-30 16:11) [8]

да вобщем то указанно все как в rc:
jrx RCDATA jrx.avi

но он продолжает ругаться на первой строке
Animate.ResHandle := hInstance;


 
Юрий Зотов ©   (2004-03-30 16:24) [9]

Уберите эту строку тоже. Оставьте только ResName.


 
Dysan ©   (2004-03-30 16:31) [10]

уже пробовал
не помогает :)


 
Юрий Зотов ©   (2004-03-30 16:41) [11]

1. Не может быть. Как оно может ругаться на то, что уже убрано?
2. RES-файл создан? И подключен?
3. Приведите точно и полностью сообщение об ошибке и точную строку, на которой она возникает.


 
panov ©   (2004-03-30 17:05) [12]

>Юрий Зотов ©   (30.03.04 16:41) [11]
Да думаю, что сообщение простое... У меня тоже не работает почему-то.
"Cannot open AVI."


 
Юрий Зотов ©   (2004-03-30 17:27) [13]

Включите "Use debug DCUs" и пройдите отладчиком по VCL - где конкретно застревает?


 
panov ©   (2004-03-30 17:32) [14]

Модуль TAnimate

procedure TAnimate.CheckOpen;
begin
 SetOpen(True);
 if not Open then raise Exception.CreateRes(@SCannotOpenAVI);
end;


 
panov ©   (2004-03-30 17:33) [15]

Сорри, модуль ComCtrls...


 
Юрий Зотов ©   (2004-03-30 18:10) [16]

Нужно пройти глубже - в SetOpen, InternalOpen, GetActualResHandle и GetActualResId. Очень похоже, что ошибка в действительности возникает в одном из двух последних методов. Их трассировка должна дать реальную причину.


 
Игорь Шевченко ©   (2004-03-30 18:25) [17]

Странно, все, вроде, работает...
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:35) [18]

Тип ресурса?
AVI, а не RCDATA. Поэтому и открыть не может.


 
panov ©   (2004-03-30 18:39) [19]

>Dysan ©   (30.03.04 14:02)

Похоже, все дело в том, что ресурсы не обновляются.
попробуй убрать {$R *.res} из файла .DPR, перекомпилировать и добавить снова...


 
panov ©   (2004-03-30 18:40) [20]

>Юрий Зотов ©   (30.03.04 18:35) [18]

Тип ресурса?
AVI, а не RCDATA. Поэтому и открыть не может.

Точно!

Но у меня и после этого не заработало, пока не сделал финт ушами -
panov ©   (30.03.04 18:39) [19]


 
Dysan ©   (2004-04-01 10:46) [21]

я так понял лекарства нет
перепробовал все что было описано выше :(
вот так компайлю ресурс: jrx RCDATA jrx.avi


 
Юрий Зотов ©   (2004-04-01 10:54) [22]

> Dysan ©   (01.04.04 10:46) [21]

Елы-палы, ведь все написали уже. AVI надо ставить, а не RCDATA. И перекомпилить ресурсы. См. [17-20].


 
hellfire ©   (2004-04-14 20:18) [23]

Огромное спасибо за совет перекомпилить ресурсы.
А то я намучался порядком до того, как сюда зашёл :)


 
hellfire ©   (2004-04-15 18:53) [24]

А вот такой вопрос.
Короче, закопилил 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-15 19:07) [25]

Тoчнее,Cannot open Avi.
простите



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

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

Наверх




Память: 0.52 MB
Время: 0.032 c
6-1084342545
Term
2004-05-12 10:15
2004.07.04
FTP-клиент


3-1086629707
miwa
2004-06-07 21:35
2004.07.04
O collate в Interbase.


14-1087384516
syte_ser78
2004-06-16 15:15
2004.07.04
На улице то как класно!!!


6-1084336512
leonidus
2004-05-12 08:35
2004.07.04
Взаимодействие с TheBat 2.0


1-1087399308
Serrrrg
2004-06-16 19:21
2004.07.04
Как в TMemo/TRichEdit получить номер строки и позицию в этой