XML-RPCサービス - 郵便専門ネット
ttp://yubin.senmon.net/service/xmlrpc/
上記もサイトをdelphi2007で使用したいのですが
追加コンポーネント等を利用せずに実行可能でしょうか。
また、その場合の方法を教えていただきたいです。
環境はWindowsXP、Delphi2007です。
>追加コンポーネント等を利用せずに実行可能でしょうか。
ということですが、コンポーネントを追加(インストール)しないというのは絶対条件なのでしょうか。
このプログラムはIndy9用に書かれています。
よってdelphi2007にIndy9がインストールされていれば
そのまま使えるはずですが、ここに質問されたと言う事は
Indy10がインストールされていてエラーが出ると言う事でしょうから。
ソースコードを修正する必要があります。
ソースに
uses
opml, xmlrpc_cli, verres, // original unit.
JclUnicode, // Project JEDI http://projectjedi.sourceforge.net/
LibXmlParser, // XML Parser http://www.destructor.de/
と記載がありますので。
JEDIとLibXmlParserの2つのコンポーネントが使用されているコード
を修正しないといけないようですが、コンポーネントをインストール
した方が早いと思いますが。
>Kennyさん
はい、無理であれば仕方ないですが
可能であれば追加しないで行いたいです。
>TSさん
Indy10がインストールされているようです。
フォルダの方には9も入っていますが…。
素直にサンプルに従うなら、まず
http://www.fabrice.co.jp/blog/downloads/fbxmlrpc-111.zip
このファイルをダウンロードして解凍すると、fbxmlrpc-111\src\にDelphi用のソースファイルがあるので、
希望のプロジェクトフォルダに保存する。
http://www.destructor.de/xmlparser/doc/delphi-installation.htmからxmlparserをダウンロードして、
希望のプロジェクトフォルダに保存する。
http://sourceforge.net/projects/jvcl/files/からJVCL339CompleteJCL211-Build3536.zipをダウンロードして解凍し、
希望のフォルダに保存してインストールする。
プロジェクトfbxmlrpc.dprを開く。
というような手順になると思います。うちのDel7の場合、JclUnicodeをインストールしないと
jcl.incが見つからないコンパイルエラーになりますから、これをインストールしないといけない
ようですね。
あとはサンプルのソースコードとにらめっこでしょうね。Indyのバージョンもありますし。
>あとはサンプルのソースコードとにらめっこでしょうね。Indyのバージョン
>もありますし。
私の場合Delphi2010でIndy10を使用していますが。
//http.Host := host.Text;
//http.Port := StrToIntDef(port.Text,80);
でエラーが出ます。
ちなみに http: TIdHTTP; です。
後実行時httpWork,httpWorkBegin,httpRedirectのイベントが削除されます。
これってIndyが9から10に変わったための様ですが。
どう書き換えるのでしょうか。
これができれば、Indy10で大丈夫そうです。
>はい、無理であれば仕方ないですが
>可能であれば追加しないで行いたいです。
DLしたZIP書庫から60個余りのファイルを抜き出す手間を惜しまなければ
JCLコンポをインストールしなくても大丈夫。
また、Indy10でやりたければ、10箇所くらいのソース書き換えをすれば
コンパイルが通るようになる。
さて、どうする?
こんにちは.Mr.XRAYです.
>XML-RPCサービス - 郵便専門ネット
>http://yubin.senmon.net/service/xmlrpc/
サンプルを作成してみました.よろしかったら参考にしてください.
ただ,取得に失敗した時の処理を入れるのを忘れてしまいました.
適当に追加してください.
元発言の方がDelphi2007ということですが,
Delphi2007でもUnicodeStringをWideStringに変更すれば使用可能です,
ただし,Pro版以上が対象です.
http://mrxray.on.coocan.jp/Delphi/plSamples/920_WebAPI_XM-RPC.htm
>後実行時httpWork,httpWorkBegin,httpRedirectのイベントが削除されます。
>これってIndyが9から10に変わったための様ですが。
Indyのバージョンによって,イベントの引数の型が変更になっている場合があります.
(1) プロジェクトを開く時に,見つからないので削除しますか... というような
表示が現れたら,[いいえ]または[No]で,ともかく開きます
(2) コンパイルしてエラーが発生したイベント関係はコメントアウトします.
(3) オブジェクトインスペクタを操作します.
該当イベントを空白にしてから新たにイベントを作成します.
(4) コメントアウトしたイベント内のコードを新たに作成したイベント内にコピーします.
(5) イベント内で使用している変数の型などを,引数に合わせて変更します(必要であれば).
記憶で書いていますので,実際は多少違いますが,だいたいこんな感じでいくのではないかと思います
私が経験したのは,イベントの引数の型が,IntegerからInt64,また引数の頭のconstの有無でした.
Delphi2009以降ですと,ユニコード関係の修正が必要かも知れません.
(stringをWideStringにするとか,またはその逆)
すみません.リンク間違えました.
以下です.
http://mrxray.on.coocan.jp/Delphi/plSamples/920_WebAPI_XML-RPC.htm
返答が遅くなってしまい、申し訳ございません。
Mr.XRAYさんのサンプルを少し改造したら
何とか動作するようになりました。
助言して下さった皆様、ありがとうございました。
>Mr.XRAYさんのサンプルを少し改造したら
>何とか動作するようになりました。
それはよかったですね.でも,...
>助言して下さった皆様、ありがとうございました。
これだけですか?
と言うことは,他の方が私のサンプルコードを使用しても,どこか修正する必要がある
ということですね.
私にも,他の人にも教えてくれないのですか?
Mr.XRAYさん
申し訳ございません。
私の環境のDelphiでコンパイルした場合
PostXML.pasの中のUnicodeStringの所でコンパイル時にエラーがでていました。
ネットで調べてみると、WideStringでunicodeを扱えるという記載があったため
UnicodeStringの部分をすべてWideStringに変更したらコンパイルが通り、
実際に動くようになりました。
理屈等がイマイチ解っていなくて申し訳ないのですが…。
Mr.XRAYです.報告ありがとうございます.
>ネットで調べてみると、WideStringでunicodeを扱えるという記載があったため
>UnicodeStringの部分をすべてWideStringに変更したらコンパイルが通り、
こう書いていただくと,いつか,他の人が見た時に非常に参考になります.
もちろん,自分が苦労して解決策を見つけたので,その苦労をタダで提供
するなんて,という気持ちもあるでしょう.
でも,この手の掲示板というのは,情報共有の場なんです.
決してサポート掲示板ではないのです.
(勘違いしているような方が多いようですが)
(実はDelphi2007用のファイル-- WidwStringにしたもの-- も添付しておいたのですが...)
多少キツイことを書きましたが.許してください.
もし,時間があれば,掲示板やメールのマナー等も読んでください.
Mr.XRAYさん
こちらこそ、ご指摘頂きありがとうございます。
>Delphi2007用のファイル
申し訳ございません、気付いていませんでした。
ありがとうございます。
>掲示板やメールのマナー
はい、掲示板書き込み等も初心者なので
今後は気をつけるように致します。
ツイート | ![]() |