DOBON.NETプログラミング道掲示板

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
NomalFILE.COPYでIOExceptionエラーが出る(11) | NomalVB6→2005変換時のDeclare宣言のマーシャリング属性(8) | NomalCode128でバーコードが読み取れない(8) | Nomal改行のコード(7) | NomalDrawBezierの使い方について(7) | NomalDataGridViewの行番号(7) | Nomalモードレスフォーム Warning IDE0067を回避したい(7) | NomalIE11では表示されるが、.netのWebBrowserでは、表示されないHPを表示する方法(7) | Nomalデスクトップ と Desktop(6) | Nomal起動ディスプレイの指定方法について(6) | NomalListBoxにデータが表示されない(6) | NomalDataObjectの使いまわし(5) | NomalWebBrowser Controlを使って、任意の値を取得(5) | Nomalこんな演算子初めて見ました。(5) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(5) | NomalあるWindows10PCでビルドしたEXEがW8.1以下で実行エラー(5) | Nomalポルトガル語の登録(5) | NomalPHPでシリアライズした、データをデシリアライズしたい(4) | Nomalメジャーバージョンの異なるLog4netライブラリを参照したい(4) | NomalActiveReports 3.0からActiveReports 7.0へのァイルコンバータについて(4) | NomalDeclare宣言するdllと参照追加をするdllの区別(4) | NomalVS2017で作成されたDLLをVS2005で作成されたAPで使用する方法(4) | Nomalフォルダ内の全ての容量を取得したい(4) | Nomal共変性と反変性ってこういうこと?(4) | Nomalプロセスからウインドウを取得(4) | NomalNewの使い方間違ってますか?(4) | Nomalユーザーコントロール内のテキストボックスのmodifiedプロパティ(4) | NomalJOIN操作の構文エラー(4) | Nomal動的にプロパティや変数の値の取得(4) | NomalVB6 ほかのアプリケーションを起動し そのアプリケーションは終了させる方法(4) | Nomalスクロールバーが出た時に高さを変えたい(4) | UpDateVB.netにおける固定長出力方法(3) | NomalVB.NETからRDゲートウェイを利用したリモートデスクトップ接続(3) | Nomal.net Chartで二重ドーナツグラフの作り方(3) | Nomalデザイナのプロパティウィンドウで静的プロパティを選択したい(3) | NomalAccess OLEでExecuteNonQuery(3) | NomalExcel複数シートの印刷順序(3) | NomalWMPへno(3) | NomalC#コンソールアプリでタイピング練習ソフト作成(3) | NomalLINQのメソッド構文の書き方(3) | Nomalvb.net+SQLiteで複数データベースファイルへのトランザクション方法(3) | Nomalジェネリック型インターフェースを使った変数を扱いたい(3) | NomalProcess.WaitForExitで正常に動作しない?(3) | NomalPictureBox.Locationのキャンセル(3) | NomalCatch時のex.StackTraceの情報(3) | NomalVisualStudioでマクロ(3) | NomalOracleDataAccess を参照したプログラムでデバッグモードが機能しなくなる(3) | NomalVisualStudioでExcelのVSTO開発(3) | NomalVB.NETでCSVを読み込む際にSQL文を使いたい(3) | NomalDrawImage でメモリ不足エラー(3) | NomalVb.netからAccessへの接続について(3) | Nomal令和の日付への対応(3) | NomalHTTP 417エラーを発生させるためのIIS設定はどうすればよいか(3) | NomalDrawString前のFillRectangle有無により文字の太さが違う理由について教えて下さい(3) | NomalPIctureBox同士を論理合成したい(3) | Nomalデータセット定義ファイルからDataTable(3) | Nomalネットの画像の複数枚を重ね合わせたい(3) | NomalLIstview のDataSource(2) | NomalClassの作り方(2) | NomalVB.NETのVBA化(2) | NomalStopwatchクラスのElapsedMillisecondsの挙動(2) | NomalGoogle翻訳の結果の取得(2) | Nomalexeをショートカットから起動した場合のエラー(2) | Nomal二次元配列 インデックスが配列の境界外(2) | NomalKeyDownでの右コントロールキーイベント(2) | Nomalapp.config定義によるネットワークトレースログの世代管理(2) | Nomalrelease/debugのどちらで作成されたものかを判断する方法(2) | NomalTaskクラスを.NET Framework 2.0で実現させる方法(2) | NomalWebBrowser Control foreachで値が消える(2) | NomalEditボックスに簡体字をセットする方法(2) | NomalWebClientが上手く動かない(2) | Nomalフォーム外のカーソルの変更(2) | Nomalラムダ式の勉強中(2) | NomalRichTextBoxで入力文字の自動折り返しを止めたい(2) | NomalC#をVBに変換(2) | NomalWebClientで、短期間にDownloadStringAsyncを実行したい(2) | NomalマウスのないOSでマウスカーソルの表示(2) | NomalToolStripMenuItemにShortcutKeysを指定した際の、元のコントロールを取得する方法(2) | NomalMouseEventArgsのカレント座標(2) | Nomalリッチテキストボックスでの字間の調整(2) | NomalVC++ → VB.Netに変換時に文法エラー(2) | NomalSQL-Server Compact 4.0が表示されない(2) | Nomalバーコードの数字を非表示にしたい(2) | Nomal自作したアプリの発行元を明記したい(2) | NomalSystem.Threading.Thread.Sleep()と変数(2) | NomalDataGridView 行の背景色の設定(2) | NomalDatagridviewのクリア(2) | NomalnumericUpDwonコントロールのvalue(2) | NomalVisual Studio DataTableの値のアクセスの仕方(2) | NomalDataTableの構造が同じか調べるメソッド(2) | NomalOpenFileDialogの初期ファイル名の表示が変(1) | NomalVB.netで作成したexeのNgenによる弊害(1) | NomalGROUPBOXの複製について(vb.net)(1) | Nomal自分自身を呼び出すのはOKですか(1) | NomalList型でエラーが起きてしまい・・・(1) | NomalLINQの拡張メソッドの定義(1) | NomalRDP接続でのネットワーク帯域制限(0) | Nomal必須コンポーネントの一覧に追加したい(0) | NomalApp.configのMy.Application.Log設定で使用できない属性が出る(0) | Nomalvb2010を使用したmicrosoft Wordの任意の行の削除(0) |



■記事リスト / ▼下のスレッド
■34273 / 親記事)  FILE.COPYでIOExceptionエラーが出る
□投稿者/ オフィス・ケイ 一般人(1回)-(2019/07/03(Wed) 09:25:29)
  • アイコン環境/言語:[WindowsCE6.0 VB.NET2008 .NET Compact FrameWork3.5 ] 
    分類:[.NET] 

    初めまして。
    初めて投稿します。

    現在、Vb.net2008でPDAの開発を行っています。
    PDAのOSはWindows CE6.0になります。
    フレームワークは.net CompactFrameWork3.5です。

    処理内容として、PDAで作成されたテキストファイルをネットワーク越しの共有フォルダにコピーしています。

    File.COYを使用しているのですが、稀にシステムエラー(IOException)で処理が落ちるのです。
    原因として何が考えられるのでしょうか?
    ネットワークは無線LANで接続しています。

    ----- 参考ソース ------

    sFileRireki:送信元ファイル
    sFileTRireki:送信先ファイル
    psInit.sUpLoadD:送信先フォルダ

    Try

    If File.Exists(sFileRireki) = True Then 'あり
    If Directory.Exists(psInit.sUpLoadD + "\") = False Then
    sErrMsg = "アップロード先フォルダが無いか、ネットワーク接続できませんでした。(COPY直前チェック)" + vbCrLf + psInit.sUpLoadD
    Return False
    End If
    IO.File.Copy(sFileRireki, sFileTRireki,True)
    '送信後、削除
    If File.Exists(sFileRireki) = True Then
    File.Delete(sFileRireki)
    Else
    Return False
    End If
    Else
    Return False
    End If
    Catch ex As Exception
    sErrMsg = "アップロード(履歴データ送信)に失敗しました。" + vbCrLf + vbCrLf + ex.Message
    Return False
    Finally
    Call sub_WriteLog(sErrMsg, "", pciLogModeE, "fnc_LogDataSend")
    End Try

    ------- エラー内容 ----------

    アップロード(履歴データ送信)に失敗しました。IOException

    以上になります。
    よろしくお願いします。

違反を報告
引用返信

▽[全レス11件(ResNo.7-11 表示)]
■34280 / ResNo.7)  Re[6]: FILE.COPYでIOExceptionエラーが出る
□投稿者/ オフィスケイ 一般人(2回)-(2019/07/10(Wed) 08:05:16)
  • アイコンNo34278に返信(魔界の仮面弁士さんの記事)

    > ユーザー環境でのみ発生する事象という事で追跡しにくいですが、
    > 母艦(ファイル送信先)側で監査ログを取るようにして、
    > 例外が発生した時刻付近のイベント ビューワーのログが、
    > いつもと違う内容になっていないか確認してみては如何でしょう。



    =>ご回答ありがとうございます。
     監査ログを取るなどして、もう少し調べてみたいと思います。


違反を報告
引用返信
■34281 / ResNo.8)  Re[2]: FILE.COPYでIOExceptionエラーが出る
□投稿者/ オフィスケイ 一般人(3回)-(2019/07/10(Wed) 08:07:18)
  • アイコンNo34279に返信(kikuさんの記事)
    >
     回答ありがとうございます。
     ご提示して頂いた内容を踏まえ、いろいろとやってみたいと思います。
     ありがとうございました。
違反を報告
引用返信
■34282 / ResNo.9)  Re[4]: FILE.COPYでIOExceptionエラーが出る
□投稿者/ オフィス・ケイ 一般人(2回)-(2019/07/16(Tue) 13:13:25)
  • アイコンNo34276に返信(魔界の仮面弁士さんの記事)
    > ■No34275に返信(オフィス・ケエイさんの記事)
    >
    > また、エラー発生時点の StackTrace を記録することは出来ますか?
    > (Exception の ToString でも OK です)

    => 下記にExceptionのToStringを取りました。

    System.IO.IOException:
    IOException
    場所 System.IO.__Error.WinIOError(Int32 errorCode, String str)
    場所 System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
    場所 〇〇.mod_〇〇.fnc_LogDataSend(String& sErrMsg, StatusBar stbMsg)
    場所 〇〇.frm01_Main.ProcUpLoad()
    場所 〇〇.frm01_Main.btnSave_Click(Object sender, EventArgs e)
    場所 System.Windows.Forms.Control.OnClick(EventArgs e)
    場所 System.Windows.Forms.Button.OnClick(EventArgs e)
    場所 System.Windows.Forms.ButtonBase.WnProc(WM wm, Int32 wParam, Int32 lParam)
    場所 System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
    場所 Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
    場所 System.Windows.Forms.Application.Run(Form fm)
    場所 〇〇.mod_〇〇.Main()

    ※〇〇はユーザー名が入っているので、隠しますね。

    この内容で何かわかりますでしょうか?


違反を報告
引用返信
■34288 / ResNo.10)  Re[5]: FILE.COPYでIOExceptionエラーが出る
□投稿者/ 魔界の仮面弁士 大御所(1236回)-(2019/07/30(Tue) 11:49:55)
  • アイコン2019/07/30(Tue) 11:50:26 編集(投稿者)

    No34282に返信(オフィス・ケイさんの記事)
    > System.IO.IOException:
    > IOException
    > 場所 System.IO.__Error.WinIOError(Int32 errorCode, String str)
    > 場所 System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
    > 場所 〇〇.mod_〇〇.fnc_LogDataSend(String& sErrMsg, StatusBar stbMsg)


    File.InternalCopy が呼ばれるのは、
    System.IO.File の Copy メソッドもしくは
    System.IO.FileInfo の CopyTo メソッドのいずれかですね。

    そして、InternalCopy が直接 __Error.WinIOError を呼び出す箇所は、
    No34274 で言う所の 3 または 13 のいずれかしかなく、
    最終結果が IOException であることから、13 であったと思われます。

    ただ、CopyFile API がどうしてそういう errorCode を吐いたのかは不明のまま…。


    No34275に返信(オフィス・ケエイさんの記事)
    > また、その後はリトライしても同様にIOExceptionで落ちます。
    >  プログラムを一旦終了し、再度起動させるとうまくいきます。

    通信障害などで失敗した時に、それを引きずってしまうのかな…。

    アプリケーションの再起動で回避できるようなので、
    No34276 の最後に書いたように、ファイルコピー用の exe を用意し、
    System.Diagnostics.Process.Start で呼び出す方式でリトライするとか。

    .NET Compact Framework 1.0 では Process クラスが無いけれど、
    .NET Compact Framework 2.0 以降なら使えるはず。
違反を報告
引用返信
■34292 / ResNo.11)  Re[3]: FILE.COPYでIOExceptionエラーが出る
□投稿者/ オフィス・ケイ 一般人(3回)-(2019/08/02(Fri) 08:09:08)
  • アイコンお世話になります。

    file.copyに失敗したとき、
    現状は1回の失敗でエラーを出力して終わっていましたが
    何回かリトライしてそれでもだめだったらエラーを吐き出す。
    ように修正して様子を見てみます。

    回答を頂いた皆様ありがとうございました。

    この件は一旦解決済みとさせていただきます。

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-9] [10-11]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34499 / 親記事)  VB6→2005変換時のDeclare宣言のマーシャリング属性
□投稿者/ nao 一般人(11回)-(2020/07/13(Mon) 17:33:13)
  • アイコン環境/言語:[VB.NET、.NET Framework2.0] 
    分類:[.NET] 

    VB6.0のプロジェクトをVS2005のコンバート機能を使用して変換したのですが、以下のワーニングが出ています。

    'UPGRADE_WARNING: 構造体 FileTime に、この Declare ステートメントの引数としてマーシャリング属性を渡す必要があります。
    Public Declare Function LocalFileTimeToFileTime Lib "KERNEL32.DLL" (ByRef lpLocalFileTime As FileTime, ByRef lpFileTime As FileTime) As Integer

    なお、FileTime構造体は以下の通りです。

    'FileTime構造体
    Public Structure FileTime
      Dim LowDateTime As Integer
      Dim HighDateTime As Integer
    End Structure

    Declare宣言時に引数の型に構造体を定義するときの属性は何を渡せばよいのでしょうか?
    それとも構造体のメンバの方に属性を追加するのでしょうか?

    ご存知の方がいらっしゃいましたら、ご教示いただけると幸いです。

違反を報告
引用返信

▽[全レス8件(ResNo.4-8 表示)]
■34503 / ResNo.4)  Re[2]: VB6→2005変換時のDeclare宣言のマーシャリング属性
□投稿者/ nao 一般人(14回)-(2020/07/13(Mon) 19:39:19)
  • アイコンNo34502に返信(Hongliangさんの記事)
    > おそらくその警告は、Declare文中にByRefで構造体を渡しているところ全部に自動的に付けられるものかと思います。
    > 提示されているLocalFileTimeToFileTime関数のDeclare文については、特に問題さそうです。
    > (他の関数のDeclare文で出ている箇所がある場合、それが問題ないかは個別の話になります)
    >


    ご回答ありがとうございます。

    問題があるかないかの判断はどのように考えればよろしいのでしょうか?
    他にもいくつか同じワーニングが表示されている場所があります。
    さすがに全部ここで質問するわけにもいきませんので、判断の基準がありましたらご教示いただけませんでしょうか。

違反を報告
引用返信
■34504 / ResNo.5)  Re[3]: VB6→2005変換時のDeclare宣言のマーシャリング属性
□投稿者/ Hongliang 大御所(584回)-(2020/07/13(Mon) 20:04:45)
  • アイコン> 問題があるかないかの判断はどのように考えればよろしいのでしょうか?
    > 他にもいくつか同じワーニングが表示されている場所があります。
    > さすがに全部ここで質問するわけにもいきませんので、判断の基準がありましたらご教示いただけませんでしょうか。

    特に怪しいところ、という意味では、構造体内に配列や文字列型が含まれている部分と言えますが、
    結局はすべてを1つ1つ、構造体の定義も含めたAPI定義を正しくVBに翻訳できているか確認していくことになります。
    https://docs.microsoft.com/ja-jp/dotnet/framework/interop/marshaling-classes-structures-and-unions
    一応公式ドキュメントはこの辺りです。
    // 初心者の方に対して無茶ぶりが過ぎるだろうとは思います。

    結構な数のWindows APIについては、以下のサイトにサンプル定義が載っています。
    https://www.pinvoke.net/
    Declareの代わりに<DllImport>構文だったり、C#による定義しかなかったり、といったものも多いですが。
違反を報告
引用返信
■34505 / ResNo.6)  Re[4]: VB6→2005変換時のDeclare宣言のマーシャリング属性
□投稿者/ nao 一般人(15回)-(2020/07/13(Mon) 20:11:52)
  • アイコンNo34504に返信(Hongliangさんの記事)

    ご回答ありがとうございます。
    ご教示いただいたページを読んでみたいと思います。
    ありがとうございました。
違反を報告
引用返信
■34506 / ResNo.7)  Re[5]: VB6→2005変換時のDeclare宣言のマーシャリング属性
□投稿者/ 魔界の仮面弁士 大御所(1286回)-(2020/07/14(Tue) 05:11:36)
  • アイコン2020/07/14(Tue) 09:09:11 編集(投稿者)

    No34501に返信(naoさんの記事)
    > Option Strict Offになっていますし、

    API を使うなら、できるだけ Option Strict On で動作するようコーディングされることをお奨めします。


    No34499に返信(naoさんの記事)
    > なお、FileTime構造体は以下の通りです。

    実は自前で宣言しなくても、.NET Framework には
    System.Runtime.InteropServices.ComTypes.FILETIME
    という構造体が既に用意されていたりします。


    > 'UPGRADE_WARNING: 構造体 FileTime に、この Declare ステートメントの引数としてマーシャリング属性を渡す必要があります。
    Google ってみたところ、英語版の VS2005 だと、
     'UPGRADE_WARNING: Structure FileTime may require marshalling attributes to be passed as an argument in this Declare statement. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"'
    になり、VS2003 の場合は、
     'UPGRADE_WARNING: Structure FileTime may require marshalling attributes to be passed as an argument in this Declare statement. Click for more: 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1050"'
    というメッセージになるらしいです。

    手元に ms-help プロトコルを開ける環境が残っていないので未確認ですが、「Visual Studio 2005」と共に
    「Visual Studio 2005 MSDN Library」をインストールしてあればリンクを開けるかもしれません。
    (リンクを開けたとしても、有益な情報を得られない可能性は高そうですが)


    上記リンクについて、何か情報が無いか探してみたのですが、見つかったのはこれぐらい。
    https://www.mobilize.net/vbtonet/ewis/ewi1050
    それっぽいことが書かれているものの、VB6 なのにユーザー定義型を ByRef ではなく ByVal 渡ししている時点で、資料として不自然ですね。

    あとは下記がヒットしました。
    37 ページ目の「3.5.2 Structure may require Marshalling Attributes to be passed as an Argument in this Declare Statement.」の項。

    今回の LocalFileTimeToFileTime のための有益な情報にはなるかどうかは別として、一応参考までに。
    https://www.cs.kau.se/cs/education/courses/davcdiss/Exjobb_2008/C2008-06.pdf



    > Declare宣言時に引数の型に構造体を定義するときの属性は何を渡せばよいのでしょうか?
    > それとも構造体のメンバの方に属性を追加するのでしょうか?

    Hongliang さんご提示の pinvoke.net は私もたびたび参考にさせてもらっていますが、今回の
    LocalFileTimeToFileTime API の宣言は掲載されていないみたいですね。
    FileTimeToLocalFileTime API の宣言は掲載されているのですけれども。

    すでに示されているように、今回の宣言は、自動変換された宣言のままで動くと思います。
    もしあえて修正するとすれば、In 属性および Out 属性を明示して
     ' Imports System.Runtime.InteropServices
     Public Declare Function LocalFileTimeToFileTime Lib "KERNEL32.DLL" (<[In]> ByRef lpLocalFileTime As FileTime, <Out> ByRef lpFileTime As FileTime) As <MarshalAs(UnmanagedType.Bool)> Boolean
     Public Declare Function FileTimeToLocalFileTime Lib "KERNEL32.DLL" (<[In]> ByRef lpFileTime As FileTime, <Out> ByRef lpLocalFileTime As FileTime) As <MarshalAs(UnmanagedType.Bool)> Boolean
    のようにすると良いのではないでしょうか。
    元の Win32 API の戻り値が「BOOL 型」であるため、上記では戻り値も As Boolean に変更してあります。


    No34503に返信(naoさんの記事)
    >>おそらくその警告は、Declare文中にByRefで構造体を渡しているところ全部に自動的に付けられるものかと思います。
    >>提示されているLocalFileTimeToFileTime関数のDeclare文については、特に問題さそうです。
    > 問題があるかないかの判断はどのように考えればよろしいのでしょうか?

    配列や文字列型以外の注意点として思いつくのは、StructLayout 属性の付与とか。

    例えば SHFILEOPSTRUCT 構造体は、StructLayout 属性で Pack:=1 を指定しておかないと、
    fAnyOperationsAborted 以降のメンバー位置がズレてしまうことになります。

    冗長なので、既定の設定のままで問題が無い場合は、属性指定を省略することも多いですが、
    余裕があれば StructLayout 属性にて、CharSet と Pack、時には Size も明示しておいた方が良いと思います。


    その他、個別判断が必要な例としては、 KB161301 の WindowFromPoint API が挙げられます。

    この API の本来の定義は『HWND WindowFromPoint( POINT Point );』なのですが、VB6 の制限により、
    多くの場合、引数定義を (ByVal xPoint As Long, ByVal yPoint As Long) に置き換えて代用されています。
    また、VBA7 でいうところの As LongPtr 型がまだ使えないので、戻り値が As Long で代用されているわけですが、
    これらそれぞれの「As Long」を、.NET の As Integer と As IntPtr に再翻訳する作業は、
    アップグレード ウィザードの自動変換だけではまかないきれないでしょう。
違反を報告
引用返信
■34507 / ResNo.8)  Re[6]: VB6→2005変換時のDeclare宣言のマーシャリング属性
□投稿者/ nao 一般人(16回)-(2020/07/14(Tue) 19:59:13)
  • アイコンNo34506に返信(魔界の仮面弁士さんの記事)
    > 2020/07/14(Tue) 09:09:11 編集(投稿者)
    ご回答ありがとうございます。

    色々調べてくださって、ありがとうございます。

    やはり特定の判断基準はないのですね。
    ご教示いただいたページを見ながら修正を検討してみます。
    ありがとうございました。

違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-8]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34243 / 親記事)  Code128でバーコードが読み取れない
□投稿者/ ぴょん 一般人(8回)-(2019/04/30(Tue) 12:59:08)
  • アイコン環境/言語:[VB.NET] 
    分類:[.NET] 

    2019/04/30(Tue) 14:07:30 編集(投稿者)
    2019/04/30(Tue) 14:06:30 編集(投稿者)
    2019/04/30(Tue) 14:05:47 編集(投稿者)
    2019/04/30(Tue) 14:05:30 編集(投稿者)
    
    Zxing.NetのCode128でバーコードを作成し、
    ハンディターミナルで読み取りをしています。
    4桁や15桁のバーコードはすぐに値を検知するのですが、
    40桁のバーコードはなかなか検知してくれません。
    以下、ソースを書きました。
    何か問題点があれば、ご教示願います。
    
    
    --------------------------------------------------------------------------
    Dim img As New Bitmap(2200, 1000, Imaging.PixelFormat.Format24bppRgb)
    
    Using g = Graphics.FromImage(img)
    
      Dim writer As New ZXing.BarcodeWriter
    
      'バーコードの種類
      writer.Format = ZXing.BarcodeFormat.CODE_128
    
      'マージン
      writer.Options.Margin = 1
    
      '文字コード
      writer.Options.Hints(ZXing.EncodeHintType.CHARACTER_SET) = "Shift_JIS"
        
      writer.Options.PureBarcode = blnPureBarcode
    
      'エラー訂正レベル
      writer.Options.Hints(ZXing.EncodeHintType.ERROR_CORRECTION) =
                                  ZXing.QrCode.Internal.ErrorCorrectionLevel.L
    
      '作成
      dim btmp as Bitmap = 
                  writer.Write("1234567890ABCDEFGHIJ1234567890ABCDEFGHIJ")
    
      g.DrawImage(btmp, 1080, 560, 310, 110)
    End Using
    --------------------------------------------------------------------------
    
    
    又、作成したバーコードも添付します。
    幅を広げれば少しは読み取れるようになるのですが、
    幅は変えずにバーコードの太さを変える方法等あれば。
    

415×59 => 250×35
イメージ
1556596748.png
/3KB
違反を報告
引用返信

▽[全レス8件(ResNo.4-8 表示)]
■34248 / ResNo.4)  Re[4]: Code128でバーコードが読み取れない
□投稿者/ ぴょん 一般人(9回)-(2019/04/30(Tue) 23:39:39)
  • アイコンご回答ありがとうございます。
    説明不足で申し訳ありません。

    > 汎用的なプログラムを作っているのか、自分専用のプログラムを
    > 作っているのか、どちらなのでしょうか?

    客先に納品予定で、RFIDタグにバーコードを出力する
    プログラムを作成しています。
    旧システムから出力されるバーコードもcode128を使用していた為、
    ほぼ同じ幅・長さで40桁のバーコードを作成したところ、
    ハンディでなかなか読み取れませんでした。
    (旧システムはすぐに読み取れる事ができて、線も太いです)

    そこで幅や長さを度外視して、まずは確実にハンディで読み取れるように
    手探りで設定を変更していました。



違反を報告
引用返信
■34250 / ResNo.5)  Re[5]: Code128でバーコードが読み取れない
□投稿者/ Azulean 大御所(510回)-(2019/05/01(Wed) 00:42:22)
  • アイコンNo34248に返信(ぴょんさんの記事)
    > 客先に納品予定で、RFIDタグにバーコードを出力する
    > プログラムを作成しています。

    RFID タグにバーコードを出力する…という表現では具体像が見えづらいのですが、シールプリンターか何かですか?
    それとも普通のインクジェットプリンターで専用のシール台紙に印刷しているのですか?

    印刷であれば、プリンターの解像度、印刷するための処理の作り方に左右されると思います。(今掲載されていないコードの範囲も影響しうる)

    > そこで幅や長さを度外視して、まずは確実にハンディで読み取れるように
    > 手探りで設定を変更していました。

    Bitmap や DrawImage あたりを触るだけでは解決市内可能性もあります。
    自分が扱っている画像の解像度(DPI)は何で、プリンターなどの出力に流す際にその DPI(解像度)はどうなるのかをきちんと把握して、元画像のあるべき姿を決めにかからないといけないと思われます。
違反を報告
引用返信
■34251 / ResNo.6)  Re[6]: Code128でバーコードが読み取れない
□投稿者/ ぴょん 一般人(10回)-(2019/05/01(Wed) 10:09:01)
  • アイコン2019/05/01(Wed) 10:21:06 編集(投稿者)
    2019/05/01(Wed) 10:17:02 編集(投稿者)
    2019/05/01(Wed) 10:10:48 編集(投稿者)

    ご回答ありがとうございます。
    ソースに問題があると思い込んでいました。

    > シールプリンターか何かですか?
    > それとも普通のインクジェットプリンターで専用のシール台紙に
    > 印刷しているのですか?

    リコーのRFID出力プリンタに、バーコードを出力しています。

    https://industry.ricoh.com/rfid/printer/prkl.html

    印刷する用紙は、以下のRFIDタグを使用しています。

    https://industry.ricoh.com/rfid/recoview/about/


    バーコード等のデザインを印刷する場合、
    [34243]でコーディングしたbmpを8ビットのグレースケールにし、
    バイト配列に変換したデータを、
    プリンタ側に渡す仕様になっていました。





違反を報告
引用返信
■34252 / ResNo.7)  Re[7]: Code128でバーコードが読み取れない
□投稿者/ Azulean 大御所(511回)-(2019/05/02(Thu) 09:16:34)
  • アイコン2019/05/02(Thu) 09:22:40 編集(投稿者)

    No34251に返信(ぴょんさんの記事)
    > ソースに問題があると思い込んでいました。

    ソースコードの問題である可能性は、否定できません。
    ただし、今抜粋されている範囲内に問題があるかどうかはわかりません。

    添付されている画像を見る限り、縮小時に補間がかかっていて、中間色が出ているようなので、これは読み取りに影響を与えると思われます。
    Graphics.InterpolationMode へ NearestNeighbor を指定すればマシになるかどうか。

    また、BarcodeWriter には Options があるらしいので、そこでサイズを指定する方法に切り換えるという道もあるかもしれません。(後から縮小するよりもまっとうなやり方だと思います)
    参考:https://office-fun.com/tech-memo-zxingnet-1d-barcode/


    > リコーのRFID出力プリンタに、バーコードを出力しています。

    ニッチな用途なので、これに特有の問題であれば、第三者には助言できないと思います。
    基本的には質問者さんの自助努力で頑張るしかないです…。
違反を報告
引用返信
■34255 / ResNo.8)  Re[8]: Code128でバーコードが読み取れない
□投稿者/ ぴょん 一般人(11回)-(2019/05/07(Tue) 11:02:53)
  • アイコンご回答ありがとうございます。
    返信が遅くなり、申し訳ありません。

    > Graphics.InterpolationMode へ NearestNeighbor を指定すれば
    > マシになるかどうか。
    InterpolationModeプロパティをいろいろ試したところ、
    高品質双三次補間がハンディで一番検知しやすかったです。

    Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic


    > また、BarcodeWriter には Options があるらしいので、
    > そこでサイズを指定する方法に切り換えるという道もあるかもしれません。
    サイズ指定も以下に修正しましので、
    作業を進めていきたいと思います。

    --------------------------------------------------------------------------
    'サイズ指定
    writer.Options.Width = 310 '幅
    writer.Options.Heigth = 110 '高さ

    '作成
    dim btmp as Bitmap =
    writer.Write("1234567890ABCDEFGHIJ1234567890ABCDEFGHIJ")

    g.DrawImage(btmp, 1080, 560)
    ''g.DrawImage(btmp, 1080, 560, 310, 110)
    --------------------------------------------------------------------------

解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-8]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■34546 / 親記事)  改行のコード
□投稿者/ Vetty 一般人(4回)-(2020/10/04(Sun) 06:24:18)
  • アイコン環境/言語:[Windows10,VB] 
    分類:[.NET] 

    いろいろな場所から情報を集めてくると、改行コードの違いがあります。
    0Ah だけ
    0Dh だけ
    0Dh 0Ah
    0Dh 0Dh 0Ah
    が出てきます・
    また、WEBサイトでは意識的だと思いますが常に2行改行を使っている場合
    もあります。


    これを自分の資料としてテキストファイルにしてデータベース(もどき?)に
    しているのですが、この場合はどのように統一して保管すべきなのでしょうか?
    現在は、表示するときに見やすいように適当に置き換えのルールを決めて
    表示しています。

    0Ah だけ
    0Dh だけ
    0Dh 0Ah

    のどれかにしてしまっていいものでしょうか?


違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■34550 / ResNo.3)  Re[3]: 改行のコード
□投稿者/ Vetty 一般人(5回)-(2020/10/04(Sun) 12:53:12)
  • アイコン魔界の仮面弁士さま 回答ありがとうございます。

    >なお、Windows 上では CR+LF に統一することが無難だと思います。

    ということなので、そうさせていただきます。

    >たとえば EM_FMTLINES など。

    むずかしいことは考えずに、Textboxに表示した場合の見栄えで
    置き換えていくことにします。
違反を報告
引用返信
■34551 / ResNo.4)  Re[4]: 改行のコード
□投稿者/ Vetty 一般人(6回)-(2020/10/04(Sun) 12:54:57)
  • アイコン失礼しました、
    「解決」にするのを忘れました。
解決み!
違反を報告
引用返信
■34552 / ResNo.5)  Re[1]: 改行のコード
□投稿者/ 魔界の仮面弁士 大御所(1302回)-(2020/10/04(Sun) 12:58:15)
  • アイコンNo34546に返信(Vettyさんの記事)
    > この場合はどのように統一して保管すべきなのでしょうか?

    自分の場合、accdb に入れるか、生バイナリのまま保持しておくことが
    多いですが……テキスト形式での保存が必要な場合には

    {テキスト部の文字数(10進数)}{CRLF}{改行入りテキスト本体}{CRLF}

    のように、各テキストの先頭にデータサイズを埋め込んだりしています。

    テキストを手動で書き換える事もある場合は、サイズ埋め込みは面倒なので
    \r や \n で置き換えて単一行にすることもしばしばあります。
    この場合は \\ へのエスケープも必要ですね。


    改行パターンが事前に分からない場合、
    Cr/CrLf/Lf をすべて CrLf に正規化するために
     Dim rawString As String = …
     Dim fmtString As String = rawString.Replace(vbCrLf, vbLf).Replace(vbCr, vbLf).Replace(vbLf, vbCrLf)
    のようなコードを書くこともあります。


    > 0Ah だけ
    > 0Dh だけ
    > 0Dh 0Ah
    > のどれかにしてしまっていいものでしょうか?

    元のバイナリを維持する必要があるかどうか、だと思います。


    たとえば No34549 で紹介した EM_FMTLINES などは、
    [0Dh 0Dh 0Ah] と [0Dh 0Ah] を明確に区別しているため、
    これらの改行コードを統一化してしまうと、
    ソフト改行とハード改行を区別できなくなってしまいます。
    しかし、それを許容できるケースであるのならば問題無いでしょう。


    あるいは RFC1945 で定義された HTTP Header だと、
    長い行の折り返しのために、行末に LWS (Linear White Space) すなわち
    「CRLF(0Ah,0Dh) の後に、SP(20h) または HT(09h) が 1 つ以上続くトークン」
    を付与することになっています。

    この場合、出力側としては【CRLF を使うことが求められる】のですが、
    その一方で、入力側は CRLF の代わりに単独 CR や単独 LF が
    使われることも許容して処理するべきとされています。


    そのほか XML Parser の世界では、XML 1.0 勧告において、
    内部処理のために正規化した【LF のみに統一された文字列】として
    処理することになっています。

    なので、XML の解析処理を行った後は、CR や CRLF が
    LF に変換された出力される可能性が高いです。
    (未加工で出力してくる処理系もあります)
違反を報告
引用返信
■34553 / ResNo.6)  Re[2]: 改行のコード
□投稿者/ 魔界の仮面弁士 大御所(1303回)-(2020/10/04(Sun) 13:16:45)
  • アイコンNo34552に追記(魔界の仮面弁士の記事)
    >>0Ah だけ
    >>0Dh だけ
    >>0Dh 0Ah
    >>のどれかにしてしまっていいものでしょうか?
    > 元のバイナリを維持する必要があるかどうか、だと思います。

    なお、メッセージボックスに出力する場合には
    CrLf は使わない方が安全です。


    たとえば VB.NET や Excel VBA から

    Call MsgBox("1行目はCR" & vbCr & "2行目はCRLF" & vbCrLf & "3行目はLF" & vbLf & "さて、どうなるか?", vbInformation)

    とした場合、いずれも 1 つの改行と認識されて 4 行構成で表示されます。

    しかし、メッセージボックス上で Ctrl+C を押して
    テキストの内容をクリップボードに送出した場合、LF → CRLF 変換が入り、
     CR  → 0Dh
     CRLF → 0Dh,0Dh,0Ah
     LF  → 0Dh,0Ah
    という自動変換を伴ってコピーされることになります。

    これをメモ帳などに貼り付けると、CRLF のところが 2 重改行のように
    見えてしまう事でしょう。

    とはいえ、メッセージボックスそのものの表示は問題無いわけですから、
    クリップボードの内容を意識しない場合には、元の改行を意識せず、
    そのまま無加工でメッセージボックスに渡しても問題無いとも言えます。
違反を報告
引用返信
■34565 / ResNo.7)  Re[5]: 改行のコード
□投稿者/ shu 大御所(490回)-(2020/10/20(Tue) 16:18:34)
  • アイコンNo34551に返信(Vettyさんの記事)
    StringBuilderを使ってAppendLineをするのが
    OS標準となるのでよいと思います。
解決み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-7]



■記事リスト / ▲上のスレッド
■34510 / 親記事)  DrawBezierの使い方について
□投稿者/ つばさ 一般人(1回)-(2020/07/31(Fri) 17:38:42)
  • アイコン環境/言語:[Win10 VB2017] 
    分類:[.NET] 

     はじめまして、よろしくお願いします。
    Win10でVB2017を使用しています。

    現在、ベジェ曲線をPivtureBox表示に挑戦しています。

    Dim Bezier_1 As New Point(66, 663)
    Dim Bezier_2 As New Point(96, 784)
    Dim Bezier_3 As New Point(96, 784)
    Dim Bezier_4 As New Point(236, 731)

    g.DrawBezier(Pen_Red, Bezier_1, Bezier_2, Bezier_3, Bezier_4)

    と、記述した時の描画が、添付画像になります。
    赤色ラインがVB出力ですが、実際のイラストレーターのライン(黒色ライン)と
    かなり違った結果になります。

    始点終点、制御点が2点の時は問題ないのですが
    制御点が1点の時の3点ベジェ曲線の時にこうなります。

    3点ベジェ曲線の記述方法のアドバイスを頂けたら嬉しいのですが
    よろしくお願いします。(うまく説明できてないと思いますが、すみません。)

191×140
イメージ
2020-07-31.jpg
/17KB
違反を報告
引用返信

▽[全レス7件(ResNo.3-7 表示)]
■34515 / ResNo.3)  Re[3]: DrawBezierの使い方について
□投稿者/ 魔界の仮面弁士 大御所(1290回)-(2020/08/02(Sun) 16:55:03)
  • アイコン
    No34514に返信(つばささんの記事)
    > 3点ベジェの曲線を表示するのは、座標計算をしなければ
    > 思ったような曲線は、得られないようですね。
    
    …あれ?
    
    質問内容は「DrawBezier メソッドの使い方について」であって、
    黒色ラインを描く方法についてでは無いと思ったのですが。
    
    
    曲線の細かい話については、この辺りに書かれていますが、それはさておき。
    http://www.f.waseda.jp/moriya/PUBLIC_HTML/education/classes/infomath6/applet/fractal/spline/
    
    2 次ベジエを 3 次ベジエに変換したいのであれば、2次における
    「始点〜制御点までの 2/3 の位置」と
    「終点〜制御点までの 2/3 の位置」を
    3 次の第一制御点・第二制御点として指定してみてください。
    
    
    > 実際のイラストレーターのライン(黒色ライン)と
    イラストレーター(Illustrator?)を見たことが無いので
    黒色ラインが 2 次ベジエであるという、
    当方の予想が正しいのかは分かりません。
    そちらの仕様確認はご自身で行ってください。
    
    
    
    Module GraphicsExtension
      <System.Runtime.CompilerServices.Extension>
      Public Sub DrawQuadCurve(this As Graphics, pen As Pen, pt1 As PointF, pt2 As PointF, pt3 As PointF)
        Dim p1 As New PointF((pt1.X + 2.0F * pt2.X) / 3.0F, (pt1.Y + 2.0F * pt2.Y) / 3.0F)
        Dim p2 As New PointF((2.0F * pt2.X + pt3.X) / 3.0F, (2.0F * pt2.Y + pt3.Y) / 3.0F)
        this.DrawBezier(pen, pt1, p1, p2, pt3)
      End Sub
    End Module
    
    
    とりあえず上記を貼り付けたうえで、先の
     .DrawBezier(bezierPen, points(0), points(1), points(1), points(2))
    の結果を
     .DrawQuadCurve(bezierPen, points(0), points(1), points(2))
    と比較してみてください。

違反を報告
引用返信
■34516 / ResNo.4)  Re[4]: DrawBezierの使い方について
□投稿者/ つばさ 一般人(3回)-(2020/08/03(Mon) 08:14:24)
  • アイコン説明不足にも関わらづ、追加の解説ありがとうございます。
    最初の投稿画像ですが、説明を加えたものを添付致します。
    DrawBezierの3点での使い方を検索したのですが
    4点での使い方しか無いように思い試してみると違う形の結果でした。

    そこで制御点を作ることを考えたのですが、参考ページがなかったので
    数値を変化させながら結果を重ねて表示することを繰り返しました。
    元の制御点から60%の位置が丁度イラストレーターの画像と
    一致するような結果になりました。

    いくつかテストAIデータを作って、試したのですが問題なさそうです。
     しかし「ベジェ曲線」の描画方法が、誤差を考えると
    こんなやり方のはずがないと思い質問をしました。

    たとえば
      DrawBezier(Color、始点、制御点1、制御点2、終点、描画形式)
        の、ような記述で
    描画形式(ラインの種類)を指定した場合にその指定で描画してくれるのでは?
    この答えは分かりませんでしたので、今回こちらで質問させていただきました。

    2度に渡ってわかりやすい解説、ありがとうございます。

225×206
イメージ
2020-07-30.png
/7KB
違反を報告
引用返信
■34518 / ResNo.5)  Re[5]: DrawBezierの使い方について
□投稿者/ 魔界の仮面弁士 大御所(1292回)-(2020/08/03(Mon) 15:00:00)
  • アイコンNo34516に返信(つばささんの記事)
    > DrawBezierの3点での使い方を検索したのですが
    > 4点での使い方しか無いように思い試してみると違う形の結果でした。

    ベジエ曲線の考え方は、下記のアニメーションを見ると分かりやすいかと思います。
    https://postd.cc/bezier-curves/


    なお、.NET Framework のヘルプで DrawBezier について調べてみると、
    ベジェではなくベジエと表記されているわけですが、Be'zier の発音は
    ベジェよりはベジエの方が原音に近いようです。(ベズィエといった感じ?)



    > 元の制御点から60%の位置が丁度イラストレーターの画像と
    > 一致するような結果になりました。

    2 次 → 3 次変換を、数学的証明した記事がありました。
    60% ではなく、2/3 の位置ですね。
    https://nowokay.hatenablog.com/entry/20070623/1182556929


    3 次 → 2 次はもう少し複雑です。次数を落としている分、
    1 つの 2 次ベジエで表現できるとは限らないので、
    複数の 2 次ベジエ曲線を並べて近似曲線にするなどして対応します。
    http://nutsu.com/blog/2008/021520_as_bezierconvert.html
違反を報告
引用返信
■34519 / ResNo.6)  Re[6]: DrawBezierの使い方について
□投稿者/ つばさ 一般人(4回)-(2020/08/04(Tue) 07:49:18)
  • アイコン お世話になります。
    新たな情報、ありがとうございます。

    制御点の値を3つほど作ってラインを書いてみました。
    その後、AIのラインとVBのラインを重ねての画像です。

    制御点60%でほぼ一致することから、数式から導かれるBezier曲線と
    A社、M社の3点Bezier曲線は独自のものと思われます。

    3点Bezier曲線に関しては、ユーザーが必要な係数を
    探し出しセットする仕様なのかもしれませんね?

    この問題は、最初あまり気にならなかったのですが
    これから先に進めていく過程で、座標計算にて曲線の通過ポイントを
    割り出さなければいけない場面が出てくるのですが
    今の時点で、遭遇できたことは幸いです。

    幾度もの解説、並びにアドバイスいただき感謝しています。
    ありがとうございました。

解決み!
違反を報告
引用返信
■34520 / ResNo.7)  Re[7]: DrawBezierの使い方について
□投稿者/ つばさ 一般人(5回)-(2020/08/04(Tue) 08:10:50)
  • アイコン画像が大きくて、添付できていませんね?
    もう一度、投稿です。
解決み!
158×112
イメージ
2020-08-04.jpg
/16KB
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-7]






Mode/  Pass/


- Child Tree -