C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■8305  PDFファイル印刷後、Adobe Readerが閉じてないで
□投稿者/ mxh -(2007/09/27(Thu) 16:30:04)

    分類:[.NET 全般] 

    2007/09/27(Thu) 16:49:17 編集(投稿者)

    はじめまして。
    vb.netでクライアント側の帳票印刷を開発中です。

    印刷ボタンを押下後、先にPDFファイルを作成し、更に作成されたPDFファイルを印刷します。
    今はPDFを印刷後、Adobe Readerアプリケーションが終了してないです。
    ※複数帳票を同時に作成、印刷する。

    'サーバ上作成されたPDFファイルを取得する。
    strFilePath ← フォルダパス
    strFilename ← PDFファイル名
    'フォルダ内のPDFファイルを印刷します。
    Do While strFilename <> ""
    Dim proc As ProcessStartInfo = New ProcessStartInfo
    proc.FileName = strFilePath & strFilename
    proc.Verb = "Print"
    proc.CreateNoWindow = True
    Dim p As Process = Process.Start(proc)
    p.WaitForExit()

    'プロセスが終了していなかったら終了する
    If p.HasExited = False Then
    p.Kill()
    End If


    'proc解放
    If Not proc Is Nothing Then
    p.Dispose()
    End If
    '印刷済みのファイルを削除する。
    Kill(strFilePath & strFilename)
    strFilename = Dir()
    Loop

    上記の通りにコードを書いておりますが。
    ご指導の程宜しくお願い致します。

親記事 /過去ログ21より / 関連記事表示
削除チェック/

■85811  Re[4]: 指数表記する方法
□投稿者/ 魔界の仮面弁士 -(2017/11/26(Sun) 19:36:47)
    No85807 (ちゃんころ さん) に返信
    > Public Const diele As Single = 8.85418782E-12#
    > というのが
    > Public Const diele As Single = 0.00000000000885418782
    > というのに変わってしまいます。
    
    VB のエディタは、極力、小数表記で記述しようとするためです。
    その境目となるのは、おそらく指数部の桁数でしょう。
    
    Double 型リテラルの場合、E+14〜E-16 の範囲は小数表記、その範囲外が指数表記になり、
    Single 型リテラルの場合、E+6〜E-8 の範囲が小数表記、その範囲外が指数表記になります。
    Decimal 型リテラルはの場合は、すべて小数表記にフォーマットされます。
    
    
    > どうすれば良いですか?
    
    今回の「8.85418782E-12」という表現からして、有効桁数 9 桁の値を表現したいようですが、
    Hongliang さんから指摘のあるとおり、Single 型ではこの精度の値を扱うことはそもそも出来ません。
    どう修正すべきかは、求める要件によって変わりますが、有効桁数 9 桁が本当に必要なら、
    As Double にするか、As Decimal にする必要があるでしょう。
    
    より正確に言えば、
    Double 型の仮数部の幅は、53+1ビット≒15.95 桁分であるのに対し、
    Single 型の仮数部の幅は、23+1ビット≒7.225 桁分しかないということです。
    ちなみに Decimal 型の場合は 96 ビット幅なので、約 28.89888 桁です。
    
    有効桁数 9 桁の値を Single 型で管理するには有効桁数が不足してしまい、
    どうあっても、格納時には近似値に丸められることになるでしょう。
    
    確認のため、「8.85418782E-12」相当の近似値を Single 型で表現してみましょうか。
    先に言っておくと、誤差が最小になるのは 3 番です。
    
    《Single のバイナリ表現》
    1: 0b00101101000110111100001110110110
    2: 0b00101101000110111100001110110111
    3: 0b00101101000110111100001110111000
    4: 0b00101101000110111100001110111001
    5: 0b00101101000110111100001110111010
    
    《上記を 10進小数で表現した値》
    1: 0.00000000000885418648122193729932405403815209865570068359375
    2: 0.000000000008854187348583675287727601244114339351654052734375
    3: 0.000000000008854188215945413276131148450076580047607421875
    4: 0.000000000008854189083307151264534695656038820743560791015625
    5: 0.00000000000885418995066888925293824286200106143951416015625
    
    
    ちなみに上記を diele.ToString("R") でラウンドトリップ出力した場合、
    1: 8.85418648E-12
    2: 8.854187E-12
    3: 8.854188E-12
    4: 8.854189E-12
    5: 8.85419E-12
    となります。
    
    いずれも E-8 を下回る指数表現であるため、この場合は自動変換が起こりません。
     Public Const Sample1 As Single = 8.85418648E-12F
     Public Const Sample2 As Single = 8.854187E-12F
     Public Const Sample3 As Single = 8.854188E-12F
     Public Const Sample4 As Single = 8.854189E-12F
     Public Const Sample5 As Single = 8.85419E-12F
    
    もともと扱おうとしていた「8.85418782E-12F」という値は、
    2 番と 3 番の間になり、Single の精度では表現しきれません。
    そのため、より近い値である 3 番の表記に変換されたということです。
    (有効桁数ってそういうものですよね)
    
    
    > Doubleでも試してみたのですが
    
    同様に、「8.85418782E-12」の Double 値による近似値表現を見てみます。
    こちらの場合は、3 番が同一値となります。(格納誤差はありません)
    
    
    《Double のバイナリ表現》
    1: 0b0011110110100011011110000111011011110001011001000110011010111010
    2: 0b0011110110100011011110000111011011110001011001000110011010111011
    3: 0b0011110110100011011110000111011011110001011001000110011010111100
    4: 0b0011110110100011011110000111011011110001011001000110011010111101
    5: 0b0011110110100011011110000111011011110001011001000110011010111110
    
    《上記を 10進小数で表現した値》
    1: 0.0000000000088541878199999971451928483766392647021092887626991796423681080341339111328125
    2: 0.00000000000885418781999999876077998226927144218532939046184537801309488713741302490234375
    3: 0.000000000008854187820000000376367116161903619668549492160991576383821666240692138671875
    4: 0.00000000000885418782000000199195425005453579715176959386013777475454844534397125244140625
    5: 0.0000000000088541878200000036075413839471679746349896955592839731252752244472503662109375
    
    《R 書式によるラウンドトリップ出力》
    1: 8.8541878199999971E-12
    2: 8.8541878199999988E-12
    3: 8.85418782E-12
    4: 8.854187820000002E-12
    5: 8.8541878200000036E-12
    
    
    そして先述した通り、Double 型で E-12 の範囲は小数表記されるため、
     Public Const Sample1 As Double = 8.8541878199999971E-12R
     Public Const Sample2 As Double = 8.8541878199999988E-12R
     Public Const Sample3 As Double = 8.85418782E-12R
     Public Const Sample4 As Double = 8.854187820000002E-12R
     Public Const Sample5 As Double = 8.8541878200000036E-12R
    と書いても
     Public Const Sample1 As Double = 0.0000000000088541878199999971R
     Public Const Sample2 As Double = 0.0000000000088541878199999988R
     Public Const Sample3 As Double = 0.00000000000885418782R
     Public Const Sample4 As Double = 0.000000000008854187820000002R
     Public Const Sample5 As Double = 0.0000000000088541878200000036R
    に変換される結果になりますね。
記事No.85804 のレス /過去ログ147より / 関連記事表示
削除チェック/

■87820  Re[3]: Windowsのrunasコマンド をC#から
□投稿者/ Ante -(2018/07/02(Mon) 16:57:15)
    うーーーん。

    VBS をCallして時間差で入力すればとりあえず実現できたね。
    でも、これ超イケてない気がする…。

    -----------------------------------------------------------------
    'Shell関連の操作を提供するオブジェクトを取得
    Set objShell = WScript.CreateObject("WScript.Shell")

    Dim exeCmd
    exeCmd = "runas /user:test02 ""RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255"""
    REM Call Msgbox(exeCmd)

    '先ほどのrunasコマンドを発行
    objShell.Run exeCmd

    '3秒まつ
    WScript.Sleep 3000

    'パスワード文字列を送信
    objShell.SendKeys( "1qaz2wsx" )
    'Enterキーの入力情報を送信
    objShell.SendKeys( "{ENTER}" )
    -----------------------------------------------------------------

    ベター案、引き続き募集中
記事No.87814 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87821  Re[4]: Windowsのrunasコマンド をC#から
□投稿者/ shu -(2018/07/02(Mon) 17:21:48)
    No87820 (Ante さん) に返信
    >
    > ベター案、引き続き募集中
    >
    No87815 PANG2さんの提示したリンク先に
    ユーザー、パスワード指定の方法がありますが
    駄目なのでしょうか?
記事No.87814 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87822  Re[4]: Windowsのrunasコマンド をC#から
□投稿者/ Jitta -(2018/07/02(Mon) 20:59:11)
    No87820 (Ante さん) に返信

    > ベター案、引き続き募集中
    >

    runas を使うことが目的なのか、
    異なるユーザーで実行させることができれば良いのか、

    どっち?
記事No.87814 のレス /過去ログ151より / 関連記事表示
削除チェック/

■87826  Re[5]: Windowsのrunasコマンド をC#から
□投稿者/ Ante -(2018/07/03(Tue) 14:13:28)
    No87822 (Jitta さん) に返信
    > ■No87820 (Ante さん) に返信
    >
    >>ベター案、引き続き募集中
    >>
    >
    > runas を使うことが目的なのか、
    > 異なるユーザーで実行させることができれば良いのか、
    >
    > どっち?

    すんません。遅なリました。

    「異なるユーザーで実行させることができれば良い。」
    がしかし、実行時、そもそも、ローカルユーザーのパスワードがわからんので、runasだろうが、Process.Startだろうが、無理な気がしてきた。
記事No.87814 のレス /過去ログ151より / 関連記事表示
削除チェック/

■94626  Re[26]: 圧縮・解凍をメモリ上で行う方法
□投稿者/ gegege -(2020/04/25(Sat) 22:11:51)
    何度もすいません。

    ZipArchiveを使っているのですが、
    バイナリデータを書き込みしながら、Zip圧縮を行うよりも、
    一度MemoryStreamにバイナリデータを保存してから
    そのMemoryStreamを使ってZip圧縮を行った方が5倍くらい処理時間が短くなるのですが
    これってこういうものですか?
    ファイルサイズはほぼ同じになります。
記事No.94584 のレス /過去ログ164より / 関連記事表示
削除チェック/

■102082  Re[4]: ajaxによるjason形式のdata格納方法
□投稿者/ あああ -(2023/06/27(Tue) 08:02:47)
    No102081 (WebSurfer さん) に返信

    申し訳ありません。勉強不足でした。
    モデルをjson形式にシリアライズ化してjavascriptでparseすることで実現できました。
    ありがとうございました。
記事No.102078 のレス /過去ログ178より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -