喫茶XRAYトップページ


[8221] いまさらですが、SetPrinterName返信 削除
2014/11/27 (木) 21:31:41 snail
plSetPrinter.pas の SetPrinterName,SetFPrinterNumber メソッド内に

>Printer.PrinterIndex := -1;
>FPrinterName := GetPrinterNameFromString(Printer.Printers[Printer.PrinterIndex]);


といったコードがあります。これって変だと思うんですが、


[8222] Re:いまさらですが、SetPrinterName返信 削除
2014/11/28 (金) 10:34:59 Mr.XRAY
▼ snailさん.どうもです.

> >Printer.PrinterIndex := -1;
> >FPrinterName := GetPrinterNameFromString(Printer.Printers[Printer.PrinterIndex]);
>
> といったコードがあります。これって変だと思うんですが、


プリンタ名を取得しているのに,更にプリンタ名を取得する関数を
実行しているということですよね ?
おそらく,Windows XP 以降であれば GetPrinterNameFromString は必要ないと
思います.確認はしていません.
昔は,Printer.Printers で取得したプリンタ名のリストと
Enum 関係でプリンタ名をリストした時で,異なる場合がありました.
今はどうかは知りませんが,「存在しないプリンタ」を取得することもありました.

Windows 98 の時代に作成したコードですからね.
結構悩み苦労したのですが,
当時のコミュニティの場での,中村拓男さんのアドバイスで追加しています.
これを追加しているおかげで,Windows 98, 2000, XP, Vista でも使用可能に
なっているわけでございます.

問題なければ削除してください.
そのためのソースコード付きでございやす.


[8223] Re2:いまさらですが、SetPrinterName返信 削除
2014/11/28 (金) 10:46:30 Mr.XRAY
> 「存在しないプリンタ」を取得することもありました.

おそらく,Windows (マイクロソフト) が内部的に使用するやつではないかと ?
いや,何かの都合で内部的に使用していた ?
今となっては謎です.


[8224] Re3:いまさらですが、SetPrinterName返信 削除
2014/11/28 (金) 13:32:10 snail
▼ Mr.XRAYさん
今回気がついたのは作成したアプリを別PCで起動したところ
「問題が発生したため、XXX.exeを終了します」ダイアログが表示
されてアプリが起動できなかったため EurekaLog で調べたら
PrinterName の読み取り中のエラー、リストのインデックスが
範囲を超えていると表示されました。範囲を超えそうな所が

Printer.Printers[(-1)]

だったので自分のソースは修正しました。

アプリ作成で利用しているPCと目的PCではインストール
しているプリンタの数が違うため、起動時に標準プリンタを取得
し直しているせいでは?(実際に詳しく追っかけていません)
と思っています。

>問題なければ削除してください.
>そのためのソースコード付きでございやす.


手抜きですが自分の分は修正しました。
別の人が同じエラーで困まるかもしれない、ということで書き込みしました。


[8225] Re4:いまさらですが、SetPrinterName返信 削除
2014/11/28 (金) 13:51:01 Mr.XRAY
▼ snailさん

> 「問題が発生したため、XXX.exeを終了します」ダイアログが表示
> されてアプリが起動できなかったため EurekaLog で調べたら
> PrinterName の読み取り中のエラー、リストのインデックスが
> 範囲を超えていると表示されました。範囲を超えそうな所が


ありゃ,そういうことでしたか.

> だったので自分のソースは修正しました。

お手数かけます.
しかし,どうしようかな....

>別の人が同じエラーで困まるかもしれない、ということで書き込みしました。

とりあえず,この喫茶XRAYを調べていただくということで (^^;
でも,この CGI の検索,非常に遅いんですよね.
わたしゃ,別にログとっているので...  ハハハッ.


INCM/CMT
Cyclamen v3.82