お世話になります。
Windows7
DELPHI XE5の環境にて、
ファイル→新規作成→その他→WebBroker→Web サーバーアプリケーションをクリックし、
TWebModuleのDefaultHandlerのOnActionイベントへ画像を表示するだけのソースを記述しました。
procedure TWebModule3.WebModule3DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
Response.Content:=
'<html> ' +
' <head> ' +
' <meta http-equiv="content-type" content="text/html;charset=UTF-8">' +
' <title>TEST</title> ' +
' </head> ' +
' <body> ' +
' <img src="TestImage.jpg"> ' +
' </body> ' +
'</html> ';
end;
TestImage.jpgはEXEファイルと同じフォルダへ配置していますが、
実行すると画像が表示されません。
TestImage.jpgはどこに配置するのが正解でしょうか。
又、ルートフォルダーの場所はどこになるのでしょうか。
以上、よろしくお願い致します。
>TestImage.jpgはどこに配置するのが正解でしょうか。
>又、ルートフォルダーの場所はどこになるのでしょうか。
テキストを WebModule3DefaultHandlerAction で返すように
バイナリーも WebModule3DefaultHandlerAction で自分で返さないとダメ
AAA様
ありがとうございます。
返事が遅くなって申しわけありません。
実際は画像では無く音を鳴らしたかったので、
ご教示頂いたように、
OK.MP3 NG.MP3 を http://www.motobit.com/util/base64-decoder-encoder.asp でコンバート後、OK.Text,NG.Textへ保存し、
プログラム内で読み込み、HTMLのsourceへ指定することで音を鳴らすことが出来ました。
ありがとうございます。
以下、参考までにソースの抜粋をあげておきます。
UsOKSO_Pr := TStringList.Create;
UsNGSO_Pr := TStringList.Create;
UsOKSO_Pr.LoadFromFile('OK.txt');
UsNGSO_Pr.LoadFromFile('NG.txt');
UsOKSO_Pr. .Text ←
UsNGSO_Pr.Text ←
UsSCRP_Pr := ' <script type="text/javascript"> ' + CR +
' function ring(ArSoundF) { ' + CR +
' alert(ArSoundF) ' + CR +
' if (ArSoundF = ''OK'') { ' + CR +
' alert("OK") ' + CR +
' document.getElementById("OKSound").play(); ' + CR +
' } else { ' + CR +
' alert("NG") ' + CR +
' document.getElementById("NGSound").play(); ' + CR +
' } ' + CR +
' } ' + CR +
' </script> ' + CR +
' <audio id="OKSound" preload="auto"> ' + CR +
' <source src="data:audio/wav;base64,' + StringReplace(UsOKSO_Pr.Text,#13#10,'', [rfReplaceAll]) + '" type="audio/mp3" />' + CR +
' </audio> ' + CR +
' <audio id="NGSound" preload="auto"> ' + CR +
' <source src="data:audio/wav;base64,' + StringReplace(UsNGSO_Pr.Text,#13#10,'', [rfReplaceAll]) + '" type="audio/mp3" />' + CR +
' </audio> ';
お世話になりました。
解決済みにしておきます。
それだと毎回ロードせず変換したテキストを直接htmlに記述すれば良いと思うんだけど・・・・
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
S: String;
begin
if Request.Method = 'GET' then
begin
S := Copy(ReplaceStr(Request.PathInfo,'/','\'),2);
if S = '' then S := 'index.html';
if FileExists (S) = True then
begin
Response.ContentStream := TFileStream.Create(S,fmOpenRead);
end;
end;
end;
index.html は exe と同じフォルダで
AAA様
いつもお世話になっております。
ご指摘頂いた件ですが、ユーザーがフォームに入力した値でデータベースを参照しHtmlを動的に生成しているので、
このような形としています。
※その部分のソースは全くアップしていません
又、ロードはサーバーで常時起動しているTWebModuleのCreateで一度呼んでいるだけなので、毎回している訳ではないかと...
以上、よろしくお願い致します。
https://mam-mam.net/delphi/web.html
の下の方に、外部ファイルを利用する場合のソースコードがあります。
実行ファイルと同じフォルダ内にhtdocsフォルダを作るとドキュメントルートになります。
js css mp3 jpg html等が使えるようになります。
ツイート | ![]() |