本人正需要用Flash控件做一个程序,但碰到问题,望指教:代码如下:
unit FlashPtoject;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, OleCtrls, ShockwaveFlashObjects_TLB, StdCtrls, ExtCtrls;type
  TForm1 = class(TForm)
    ShockwaveFlash1: TShockwaveFlash;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    OpenDialog1: TOpenDialog;
    ScrollBar1: TScrollBar;
    Label1: TLabel;
    Timer1: TTimer;
    Label2: TLabel;
    Panel1: TPanel;
    procedure N2Click(Sender: TObject);
    procedure OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);
    procedure N5Click(Sender: TObject);
    procedure N10Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
      var ScrollPos: Integer);
  private
    Forstep:integer;
    Pristep:integer;    playing:boolean;
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}
function IntToTime(int :integer):string;{将整数转为时间格式}
var timestr:string;
begin
    if int div 60 =0 then timestr:='0:' + inttostr(int)
    else
    begin
        timestr:= inttostr(int Mod 60);
        int:=int div 60;
        if int div 60 =0 then timestr:=inttostr(int)+':'+timestr
        else
        begin
            timestr:=Inttostr(int mod 60)+ ':'+timestr;
            int :=int div 60;
            timestr:=inttostr(int)+':'+timestr;
        end
    end;
    result:=timestr;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
    OpenDialog1.Create(nil);
    OpenDialog1.Execute;
end;procedure TForm1.OpenDialog1CanClose(Sender: TObject;
  var CanClose: Boolean);
begin
    ShockwaveFlash1.Movie:=Opendialog1.Files.CommaText;
    ScrollBar1.Max:=ShockwaveFlash1.TotalFrames;
    Label1.Caption:='正在播放: '+'0:00';
    Label2.Caption:='TOTAL: '+inttotime(ShockwaveFlash1.TotalFrames div 12);
    Playing:=true;
end;procedure TForm1.N5Click(Sender: TObject);
begin
    with ShockwaveFlash1 do
    begin
        GotoFrame(CurrentFrame+Forstep);
    end;
end;procedure TForm1.N10Click(Sender: TObject);
begin
    Forstep:=strtoint(inputbox('修改步长','请输入步长值(整数):',inttostr(Forstep)));
end;procedure TForm1.FormCreate(Sender: TObject);
begin
    playing:=false;
    Forstep:=5;
    PriStep:=5;
end;procedure TForm1.N6Click(Sender: TObject);
begin
    with ShockwaveFlash1 do
    begin
        GotoFrame(CurrentFrame-Pristep);
    end;end;procedure TForm1.N11Click(Sender: TObject);
begin
    Pristep:=strtoint(inputbox('修改步长','请输入步长值(整数):',inttostr(Pristep)));
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
    if playing=true then
    Label1.Caption:='正在播放: '+inttotime(ShockwaveFlash1.CurrentFrame div 12);
    ScrollBar1.Position:=ShockwaveFlash1.CurrentFrame;
end;procedure TForm1.N8Click(Sender: TObject);
begin
    ShockwaveFlash1.Play;
end;procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
    ShockwaveFlash1.GotoFrame(ScrollBar1.Position);
    ShockwaveFlash1.Play;
end;end.
自行后,提示如下错误:EOleexception with message"未指定的错误"?

解决方案 »

  1.   

    function IntToTime(int :integer):string;//函数应该在声明部分定义;
    然后按ctrl+shift+c
    生成代码,把代码部分考入
      

  2.   

    flash注册没有
    delphi\bin\tregsvr 你的flash.ocx的全路经
    或者在有flash.ocx的文件夹下执行tregsvr flash.ocx
      

  3.   

    具体的情况是,我打开.swf文件要他播放,却提示:完成该操作所需的数据不够!
    更有趣的是,只有一个swf文件可以播放,而其他的都不能放!
      

  4.   

    我也想做FLASH的程序,只是不知道在哪里找ShockwaveFlashObjects_TLB。谁能告诉我啊?
      

  5.   

    TO青青。。Flash.ocx应该很容易找到吧。
    然后在DELPHI将其转换就行了。说一下Flash相关软件的问题。就目前来说,国内的Flash播放软件已经有很多了,而且功能大部分重复,从技术上讲,所有的Flash播放软件都依赖于flash.ocx控件,这样只是受制于macomedia。
    而纵观国外,Flash的周边制作工具已经在功能及技术上达到了相当的高度。我想,国内的开发人员应该把精力更多的放在flash周边制作工具方面,当然,软件开发已后也会有市场,而播放软件则可以用来练练手。欢乐大家发表各自的意见。