2011-12-19 2 views
1

HTTPを介してチェックを実行するTJvProgramVersionCheckコンポーネントの使用方法の例があるかどうかは疑問です。 JVCL例のディレクトリ内JEDI JVCL TJvProgramVersionCheck HTTPの使用方法

の例では、HTTP

を使用する方法を示していないあなたの$(JVCL)\Examples\JvProgramVersionCheckフォルダに含まれてデモがそうすることができるように思わあなた

+0

詳細なエラー情報を提供する必要があります。下記のコメントの「動作しません」というメッセージはどこにも表示されません。 –

答えて

2

に感謝します。 JVProgramVersionHTTPLocationのプロパティを編集し、そのURLをVersionInfoLocationリスト(TStrings)に追加します。必要に応じて、任意のユーザ名、パスワード、プロキシ、およびポート設定を設定することもできます。

また、OnLoadFileFromRemoteイベントハンドラを追加する必要があります。私は、その要件に対処し、デモでは何も表示されませんが、ソースコードは言う:

それは、そのイベントはあなたが行うことを受け取るパラメータから表示されます
{ Simple HTTP location class with no http logic. 
The logic must be implemented manually in the OnLoadFileFromRemote event } 

あなたがチェック:だから

function TJvProgramVersionFTPLocation.LoadFileFromRemoteInt(
    const ARemotePath, ARemoteFileName, ALocalPath, ALocalFileName: string; 
    ABaseThread: TJvBaseThread): string; 

このイベントのイベントハンドラを追加してからTJVProgramVersionCheck.LocationTypeプロパティをpvltHTTPに変更し、デモを実行する必要があります。テストの後、リモートバージョンのサーバーとファイル名、ダウンロードしたファイルのローカルパスと一時ファイル名が提供されているようです。イベントハンドラのResultは、新しくダウンロードされたファイルのフルパスとファイル名にする必要があります。イベントハンドラは、ファイルの実際の取得を処理する必要があります。

JvProgramVersionCheck.pasで定義された追加のタイプのカップル、(TJvProgramVersionHTTPLocationICSTJvProgramVersionHTTPLocationIndy、コンパイラによって保護され、両方がそう、彼らはデフォルトのコンパイルには存在しない定義されています。しかし、関連する設定ICSは(コンパイルエラーの多くが生じて定義があります。明らかに古いバージョンのICSに対して書かれている)、Indyを定義して(そして、代わりにIndy10を使用するように設定して)コンパイルすることはできましたが、動作を変更しませんでした。

また、VersionInfoLocationのエントリはURL(ファイル名なし)のみであることを確認してください; fiファイル名はVersionInfoFileNameになります。あなたがURLに入れた場合、それはhttp://localhost/Remote/ProjectVersions_http.iniProjectVersions_http.iniのように(繰り返しますと、とにかく失敗します。この問題を解決しようとデバッガを通じてトレースしながら(私はこれを見つけました。)

最後に...

溶液はわずかである(ただし、大幅に)複雑ここに私がやったことだ:。

コピーJvProgramVersionCheck.pasデモフォルダに(それが原因で次のステップを再コンパイルする必要があります。)

移動]> [オプション]プロジェクト - します。 > Directories and Conditionalsを開き、次の行をDEFINESエントリに追加します。

USE_3RDPARTY_INDY10;USE_THIRDPARTY_INDY; 

デモフォームからJvProgramVersionHTTPLocationコンポーネントを削除します。

フォーム宣言に新しいprivateセクションを追加し、ProgramVersionCheckコンポーネントプロパティで

procedure TForm1.FormCreate(Sender: TObject); 
const 
    RemoteFileURL = 'http://localhost/'; 
    RemoteFileName = 'ProjectVersions_http.ini'; 
begin 
    HTTPLocation := TJvProgramVersionHTTPLocationIndy.Create(Self); // Self means we don't free 
    HTTPLocation.VersionInfoLocationPathList.Add(RemoteFileURL); 
    HTTPLocation.VersionInfoFileName := RemoteFileName; 
    ProgramVersionCheck.LocationHTTP := HTTPLocation; 
    ProgramVersionCheck.LocationType := pvltHTTP; 
    VersionCheck; // This line is already there 
end; 

VersionInfoFileOptionsプロパティを展開し、次のコードを追加し、FormCreate場合に

private 
    HTTPLocation: TJvProgramVersionHTTPLocationIndy; 

FileFormathffXMLからhffIniに変更します。

デモのフォルダからversioninfolocal.iniを削除するか、名前を変更してください。 (アプリケーションを一度実行すると、httpの位置情報が保存され、上記の変更が上書きされます)これはしばらく時間がかかります)

ローカルhttpサーバが稼働していることと、ProjectVersions_http.iniファイルWebルートフォルダにあります。デモを実行できるはずです。フォームが表示されたら、Edit Historyボタンをクリックして、リモートバージョン情報ファイルから取得した情報を確認します。上記で入力した保存済みの設定情報を持つversioninfolocal.iniの新しいコピーもあります。

+0

VersionInfoLocationにhttp://127.0.0.1/ProjectVersions_http.iniを追加し、TJVProgramVersionCheck.LocationTypeプロパティをpvltHTTPに変更しましたが、まだ動作しません。ブラウザにhttp://127.0.0.1/ProjectVersions_http.iniを貼り付けると、iniファイルをダウンロードできます。 –

+0

"動作しません"とはどういう意味ですか? –

+0

httpサーバーに連絡しようもしません –

関連する問題