掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DELLに実行ファイルからテキストを送るには (ID:39454)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
返信遅れました。 参考書を頼りに以下まで何とか出来ました。 実行すると何とかしゃべるのですが、 その後でエラーが出ます。 「一度に多数の例外が発生しました。 'access vioation at 0x00151316a: read of address 0x01ad3fa4'」 となります。 以下がソースです。 よろしくお願いします。 DLL2.PDR uses SysUtils, Classes, Unit3 in 'Unit3.pas' {Form1}; {$R *.res} exports ShowForm index 1, speak index 2; begin end. DLLフォーム部 unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, HTTSLib_TLB, StdCtrls, ExtCtrls; type TForm1 = class(TForm) TextToSpeech1: TTextToSpeech; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; procedure ShowForm; export; stdcall; function speak (s:string): string; stdcall; var Form1: TForm1; s1:string; implementation {$R *.dfm} procedure ShowForm; begin try Form1 := TForm1.Create(Application); Form1.Show; except end; end; function speak (s:string): string; stdcall; begin s1 := s; end; procedure TForm1.Timer1Timer(Sender: TObject); begin form1.TextToSpeech1.Speak(s1); timer1.Enabled := false; end; DLL呼び出し部 unit Unit4; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; procedure ShowForm; stdcall; function speak (s:string): string; stdcall; const Dll2 = 'Dll2.Dll'; procedure ShowForm; external Dll2 index 1; function speak; external Dll2 index 2; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin try speak(edit1.Text); ShowForm; except end; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.