ファイルをドラッグアンドドロップ @Delphi

バーコードを読み込ませるため、
都度都度スキャナで読み込むのは、面倒なので、
保存済みの画像を、ドラッグ&ドロップ(以下D&D)で、
処理できるようにした。


そのような、サンプルソースは、たくさんあるので、

今回は、これらを元に、実装した。

たしか、コンポーネントもあったはずだけど。

 

いずれも同じコードなので、詳細は、上記を見てもらうとして、

D&Dすると、エラーが出る・・・・
最小限の単独アプリにしても、エラーが出る。

具体的には、メモリーのアクセス違反になる。

※環境は、10.2 Tokyoが出ているにもかかわらず、XE2 !!(笑

***

エラー箇所は、D&Dした直後ではなく、画像を読取った後、
別のコンポーネントにAssignする時など、いつも同じ箇所で起きるわけでもなく、

手を変え品を変え、いろいろやってみたけど、まさかと思ったこのコード↓

//pFilenameに上で得たサイズ分のメモリを確保
pFilename := AllocMem(DropCount);

このPcharに動的に領域を割り当てようとする、この手続きだけど、

 

まさかと思ったけど、まさかだった!!

 

pFileName: PChar;

の宣言を、

pFileName: Array[0..MAX_PATH] of Char; // 固定長 = 260

に。

当然、動的に確保するAllocMem・FreeMemの手続きは、削除した結果、

 

 

エラーが、一切出ない!!

治った・・・?!

 

Unicode体系になったからだろうか?
文字の長さ(=byte)違うのが、原因だろうか?

わからないけど、

ちょっとくらいのメモリー、ケチったたところで、
このご時世じゃ、なんちゃーないわえ!(なんでもない@高知弁(草

ファイルをドラッグアンドドロップ @Delphi