DelphiプログラマのためのCGI入門
FAQ

 頂いた質問、および質問されるのでは?と思う事項について、記述しています。

最終更新日:2000年10月22日


全般

Delphi4 Professional版を持っていますが、WebBrokerが見あたりません。

Delphi3.1ではProfessional版でもWebBrokerが付いてきたのですが、Delphi4 Professional版ではオプション扱いになっています。Delphi5では、Professional版にもWebBrokerが付いています。191ページの(編注)をご覧ください。

C++Builderのソースコードはダウンロードできますが、本にはDelphiの解説しかなく、C++Builderのことは書かれていないようですが。

元々Delphiで作ったプログラムを、後からC++Builderに移植して、動作確認したソースコードをダウンロード可能にしています。結構似通ったコードなので、本文との対比は難しくないと思います。(なので、妙にPascal臭いC++になっているのですが…)

第3章

Windows98でISAPI形式のプログラムをデバッグするには、どうすればよいでしょうか。

米国ボーランドのサイトに解説がありました。
http://www.borland.com/devsupport/delphi/ti/TI4611D.html
あるいは、ふだんからWebサーバを動かす必要がないのなら、スタートアップからWebサーバ関係を取り除いてOSを再起動するのが簡単です。

第4章

4.2.2節のカレンダー表示で、一ヶ月の日数を求めるには、MonthDays定数を使えばよいのではないでしょうか。

その通りです。このプログラムを作ったときは、その定数の存在を知りませんでした。MonthDays定数を使うと、リスト4-3の「カレンダー本体を作成」から「最後の日より後の部分を作成」の間は、次のようになります。
  //カレンダー本体を作成。
  for i := 1 to MonthDays[IsLeapYear(cYear), cMonth] do
  begin
    //週の初めなら改行
    if dow = 7 then
    begin
      dow := 0;
      Response.Content := Response.Content + '<TR>';
    end;
    Response.Content := Response.Content + '<TD>';
    //日付が今日なら、ボールド体で表示する。
    if i = cDay then
      Response.Content := Response.Content + '<B>' + IntToStr(i) + '</B>'
    else
      Response.Content := Response.Content + IntToStr(i);
    Inc(dow);
  end;
  //最後の日より後の部分を作成

第8章

8.9節のアップロードで、バイナリデータのアップロードや大きいデータのアップロードはどうすればいいですか?

ソフトの砂場(ファイルのアップロード)を参照してください。

8.9節のアップロードプログラムをCGI形式やWindows-CGI形式にすると、「ヘッダの終わりがありません」というメッセージが出て正常に動作しません。

これは、Delphi VCLのバグのようです。例えば、Delphi VCLのソースコード Internet\HTTPApp.pas を、次のようにすると解決します。ExtractQueryFieldsも同様だと思います。変更後の確認方法については、コラムの「Delphi VCLのソースコード内をデバッガで見るには」などを参考にしてください。
procedure TWebRequest.ExtractContentFields(Strings: TStrings);
var
  ContentStr: string;
begin
  if ContentLength > 0 then
  begin
//    ContentStr := Content; //例えば、この行を次のように変更
    ContentStr := Copy(Content, 1, 1) + Copy(Content, 2, Length(Content)-1);

第9章

9.4節で作ったプログラムを基に9.5節の拡張をしようとしましたが、9.4節で作ったwaiListアクションアイテムは9.5節では不要なのではないでしょうか。

その通りです。記述が抜けていました。9.4節のwaiListアクションアイテムの代わりに、9.5節ではwaiMainアクションアイテムを使っています。したがって、9.4節のプログラムを基に9.5節のプログラムを作成する場合、waiListアクションアイテムを削除してください。

9.5節のリスト9-8で、URLManagerを使っています。これは7.7節で作成したものと同じですか。また、どのようにすれば、URLManagerが使えるようになりますか。

リスト9-8で使っているのは、7.7節で作成したURLManagerです。これを使うには、Webデータベースシステムのプロジェクトを開いている状態で、メニューの[プロジェクト|プロジェクトに追加]により、URLManagerのソースコードをプロジェクトに追加してください。またその後、URLManagerを参照するソースコード(ここではwdb.pas)のUses節に、URLManagerを追加してください。

Back