2011-06-07 16 views
1

私は、デルファイ7でHID Controllerを使用するアプリケーションを持っていますが、Delphi 2010(ライセンスの問題)で使用する必要がありますが、このHIDControllerのこの互換性の問題を発見しました。このライブラリプロジェクトJEDIの一部です。Delphi 2010でHIDControllerを使用

Delphi 2010とWin7でこのライブラリ(JvHidDeviceControllerコンポーネント)を使用している人から、いくつか質問があります。たぶん同じ問題に直面した人が私を助けてくれるかもしれません。私は今、その可能性がある方法を理解できません。

+0

7で使用したのと同じバージョンのDelphi 2010を使用していますか?彼らはおそらく互換性がありません。 –

+1

「互換性の問題」とは何ですか?ここからあなたの画面を見ることはできません。ここで答えられるものは何も求めていません。あなたは "同じ問題"と言いますが、問題が何であるかは言わないので、誰も同じものに直面しているかどうかは言えません。誰かがあなたを助けてくれる前に、より多くの情報を提供する必要があります。 –

+0

私はちょうどDelphi 7と2010..XEで動作するユニット 'JvHidControllerClass'を使用しています。コンパイルして新しいIDEにインストールするHidController.dpkパッケージに入っています。 readmeには、「1.0.34ではいくつかのWindowsバージョンに依存するメソッドが導入されています。これはあなたにバージョンを与える必要があります。 –

答えて

3

これは、D2010のコード取り組んでいます。このサイトから 使用パッケージを:HIDController DPK

そして、このサイトからのバージョンでJvHidControllerClass.pasを置き換える:Modified source file

主なトラブルは、文字列とAnsiStringの宣言であるので、このファイルはこの非互換性を解決します。

P.S.投稿のファイルzipped versionを使用してください。

1

「デバイスを開くことができません」という問題(ナタリア)は、ユニコード文字と関係があります。回答1で指摘されているHIDControllerの新しいバージョンでは、この問題は解決されません。

ソリューション: "PChar型" の代わりに "PAnsiChar" にTJvHIDPnPInfo.Create(単位JvHIDController.pas)の最後のパラメータの種類を変更し 。ルーチンが呼び出されている型キャストも変更することを忘れないでください。

P.S.回答1の「修正されたソースファイル」および「圧縮されたバージョン」へのリンクが死んでいます。

0

Delphi 2010では、文字列として宣言されているすべての変数は、Unicode型(ワイド文字列)です。以前のバージョン(Delphi 7)から新しいバージョンにコンポーネントを移植するときは、常にstringとpcharとして宣言されたすべての変数をチェックします。より新しいバージョンでは、このvarsはあなたの問題を解決する可能性が高いAnsiStringとPAnsyCharとして宣言する必要があります。もちろん、適切な_W(ワイド文字列の関数を呼び出す場合)またはAnsiStringを使用する場合は_Aを呼び出すdll関数を呼び出すかどうかを確認する必要があります。ただし、HIDのドキュメントをチェックして、どのタイプのパラメータが受け入れられているかを確認し、新しいデルファイバージョンで適切に使用することをお勧めします。その時までに私の隠しコントローラ(似たような)をゼロから作成しましたが、もちろんDelphi2010の異なる文字列型に移植したときには私の主な問題でした。私はWinUsBControllerを書いてWinUSBドライバを使うと似ていました。マニュアル(MSDN)を読むこと、ヘッダー(.h)をチェックインすること、そしてdelphiヘルプ(文字列)を読むことは、適切なデータ型に一致することが必須です。