2011-01-19 14 views
1

私はAdobe Readerとドラッグの問題を発見しました。単純なテキストのドロップ機能&です。Adob​​e Readerのテキストドラッグ&ドロップの問題

テキストを選択して.NETアプリケーション(またはnotepad ++やVisualStudioなどのテキストエディタ)にドロップすると、テキストにランダムな文字が添付されます。

私は懸命に試み、問題を観察し、限り、私の観察が行くように私には、次の言うことができます:それはドラッグのために選択したテキストと同じwhith二回起こっていません

  1. 添付テキストは常にほんの数文字の長さ(少なくとも10)
  2. は、時にはそれが添付文字がdarggedテキストの断片であることのように思えるし、付属の文字は英数字ではありません以前
  3. 他のいくつかの回を落としましたそれは、ハードを認識することができます文字が
  4. 選択されたテキストは(だけでなく、全体の段落)

私は自分のアプリケーション内の他のテキストにドロップされたテキストを比較して、いくつかの文字があるので、これは明らかに失敗した任意の場所にすることができました私は引っ張らなかったd。

私は標準のIDataObjectインターフェイスを使用し、複数のフォーマットを試しましたが、動作は常に同じです。再現可能ですが、ランダムに発生するため予測できません。

私の質問は次のとおりです: これはAdobe Readerのバッファ充填問題ですか?(バージョン8,9、Xでは安全モードがオフになっていますか?) これは、どのサードパーティプログラムがpdfを作成したかに依存していますか? 誰かが同じ行動を経験しましたか(私はこれについて何も見つかりません)?

事前に他のpdf-Readerがビジネスポリシーであるというオプションであるとは言いません:)。

この質問に答えることができる人に事前に大きな感謝をします。

それは両側(アドビシステムズ社/ネット)上のバグです:研究の

+0

多分あなたのPDFファイルは単にエンコードされていますか? –

+0

返信ありがとうございますが、テキスト全体が添付された文字以外にドラッグされたようなので、エコー/デコードのことではなく、これはドラッグするたびに予測可能です。 –

+0

これは、Adobe Readerのバグと95%の差があります。これをIDataObjectで混乱させる良い方法はありません。ある企業が特定の製品の特定のバージョンにロックすると、そのベンダーとのサポート契約を結ぶ方がよいでしょう。 –

答えて

2

日と日には、以下の結論に私を導きました。最初は、Adobe ReaderからドラッグされたOleDataObjectに含まれている文字列はnullで終端されていません。これは、データを交換することが非常に安全ではありません。 Adobe Reader Xの標準設定でこの機能が無効になっているのは当然です(しかし、あなたはそれをアンロックできます)。 .Net側では、正しく動作するためにはすべての文字列を終了する必要があります。ポインタを取得すると、 '\ 0'文字が見つかるまで間違った文字(または以前にドラッグされたテキストの文字)が追加されるまで、メモリを介して実行される新しい文字列インスタンスが作成されます。この混乱の解決策は、OleDataObjectに含まれるテキスト部分のサイズを照会することです。このサイズ(結果文字列サイズよりも明らかに小さいか等しい)は、元の文字列に対して部分文字列演算を行うために使用できます。このすべての文字列で、文字列には間違った文字は付けられません。 -solved

関連する問題