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

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

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

全過去ログを検索

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>
■982  コントロールの動的生成
□投稿者/ BOUBOU -(2005/08/05(Fri) 18:11:37)

    分類:[C#] 


    分類:[C#] 

    ボタンを押すたびにパネルなどのコントロールを,新たなINDEXとして
    既存のINDEXの最大値+1として生成したいと思っています.

    今のところ大きな要素数で宣言(要素数+1に対応できなくなるので問題ですが)
    して.

    Panel []P = new Panel[10000];
    P[0] = new System.Windows.Forms.Panel();
    this.Controls.Add(P[0]);
    P[0].Location = new System.Drawing.Point(100,100);
    P[0].Size = new System.Drawing.Size(100, 100);
    P[0].BackColor = System.Drawing.Color.Pink;

    というかんじでやっているのですが1つめも生成できません.

    どなたかわかるかたお願いします.

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

■3364  ファイルの名前をデータから取得し保存
□投稿者/ たろぽん -(2006/04/30(Sun) 02:07:36)

    分類:[VB.NET] 


    分類:[VB.NET] 

    2006/04/30(Sun) 02:10:59 編集(投稿者)
    2006/04/30(Sun) 02:10:39 編集(投稿者)

    ファイルの内容を選別して別々のファイルに新しく書き込んで
    名前を付けて保存させたいのですが

     mo720031208200312060606010610000
     ma72002122120010902010202128131997110263 
    こんな内容のtxtファイルがあります


    最初の2桁から
    mo.txt
    ma.txt
    を作りたいのですが

    mo72003120820031206だと
    最初の2桁のmoと
    左から12桁〜20桁の20031206(日付です)で
    mo2003/12/06.txt

    ma72002122120010902だと 
    最初の2桁のmaと
    左から12桁〜20桁の20010902
    ma2001/09/02.txt

    と名前を付けて保存させたいのですが
    教えて下さい
親記事 /0過去ログ3より / 関連記事表示
削除チェック/

■3049  Re[5]: JIS->Shift JIS変換
□投稿者/ Ken -(2006/04/07(Fri) 17:30:34)

    分類:[VB.NET] 

    みなさんすいません。
    いろいろ確認していたらEBCDICコードでした。

    元ファイルが
    F0-F3-F1-F1-F1-F0-F0-F0-F0-F0-F0-F0-F0-F1-40-3B
    です

    期待しているデータは、
    30-33-31-31-31-30-30-30-30-30-30-30-30-31-90-B9

    「03111000000001聖」というデータを取得したいのですが、
    どのようにしたらよいかわかりません。

    System.Text.Encoding.GetEncoding(20290)として読みこんで
    みたのですが「聖」が化けてしまいます。

記事No.3041 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■2639  Re[14]: VC++6.0での動作につきまして
□投稿者/ daisuky -(2006/02/24(Fri) 09:40:34)

    分類:[VC++] 

    2006/02/24(Fri) 09:41:43 編集(投稿者)
    2006/02/24(Fri) 09:41:34 編集(投稿者)

    スイマセン、柘植さんのように全て読めていませんが、問題は解決したのでしょうか?

    桁数がずいぶんと大きいようです。

    解答の方向が見当違いであれば申し訳ないのですが、
    こうしたデータを取り扱うのであれば、外部文書の丸め等々確認される前に、
    標準の仕様を確認されたほうが良いと思います。ネットではなく、Excelのヘルプに仕様は記載されています。
    エクセルのマニュアルを見た限り、以下のような仕様が記載されていました
    ・列の幅 255 文字
    ・有効桁数 15 桁
    ・処理できる正の最大値 9.99999999999999E307

    頭が良くない私は、指数表示が良くわかりませんが、取り扱う数値の範囲はこれを超えているようです。
    エクセルに
    1001011101100001100
    を普通に入力しても桁落ちしています。
    元々、数値としては処理できる量を超えています。

    一方、仕様のひとつとして、「列の幅255文字」(列の幅に、文字っておかしな表現ですが)が記載されています、つまり、15桁の数値より多くなっても、255文字までなら文字として取り扱えるということだと思います。
    残念ながら、数値として計算させるなら、Excelというアプリケーションを選択すべきではなったと言わざるを得ない状況かと思います。


    ただ、一方で、Excelのような物自体を作るとおっしゃっています。
    桁数を超えるところでの動きを実現できるといいですね。C++でそのようなアプリを作ろうとされるのはうらやましいです。


    希望されている仕様は、ちょっと伝わりづらくなっていますが、次のような感じでしょうか。
    「業務アプリでCSVを出力している。それはお客様に渡したい。お客様が自由にこのファイルを開いて欲しい。それはReadonlyで一度きりの文書ではなくて、そのまま編集に使われる。」
    >このとおりであれば、仕様にかかるので、Excelでは無理ってことですね…。

    数値としてデータを扱うつもりが無いなら、セルの書式設定であらかじめ、
    文字列書式にしておけばすむ問題な気もします。(CSVじゃなくて、そういう書式付のデータとして生成しておく)

    何度も言いますが、数値としてExcelで取り扱うのは無理ですよ。


    正常な「'」は、Excelの特殊機能の文字列宣言としてのシングルクヲート以外に、通常のデータとして入力されることがあると思います。データとしての「'」ということです。Replace関数で一気にやっちゃうと、それも失われるよ、ってことをお伝えしたいのだと思います。


    散文、駄文失礼しました…。
記事No.2593 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■2636  Re[13]: VC++6.0での動作につきまして
□投稿者/ 柘植 -(2006/02/24(Fri) 00:34:49)

    分類:[VC++] 

    2006/02/24(Fri) 00:37:45 編集(投稿者)

    あ、どうも。柘植です。
    思い通りいったようですね。おめでとうございます。

    で、てこなさんの長〜いお返事、ざっと読ませていただきました。
    どうやら、「CSVファイルをエクセルで開いたときに何が起こっているか」、「エクセルから保存の操作をしたときに何が起こっているか」ということが全く分かっていらっしゃらないようですね。(CSVファイルとエクセルのファイルの違いもわかっていないご様子)
    簡単に少しだけ説明しますと、ダブルクリックでCSVファイルを開いた場合、カンマで区切られた項目について、エクセルが勝手に処理を施しています。
    例えば、
    「住所」,「番地」というレイアウトの住所録をCSVで作ったとして、

    1件目:C県D町,12-3Eアパート6号室
    2件目:A県B町,1-1

    の2件のデータだったとします。
    これをダブルクリック等でエクセルで開くと、2件めの2項目めは「エクセルが勝手に」日付と判断して、「平成18年1月1日」とか表示してくれるはずです。(未確認)
    それをそのまま保存すれば、当然データは

    1件目:C県D町,Eアパート6
    2件目:A県B町,平成18年1月1日

    自分は会社の健康診断担当者さんとか地方自治体職員さんとか相手の仕事が多かったもので、データとしてこういったものをもらってよく泣いています。(汗)

    掲示板で全部説明するのは無理ですし、場合によっては某電気屋さんのパソコン教室で金とって教えてる内容な気がするので、このようなヒント程度にとどめておきます。(掲示板で質問しなくても勉強できるはずだと思います。google先生と1日語り合ってみるとか)

    ちなみに、中博俊さんご指摘の

    >そのCSV使い物にならなさそうな感じはしますが(^^;

    に関しては、エクセルで開く以外には使えない、という意味です。
    折角VC++の勉強をしてらっしゃるのですから、CSVファイルを読み込んで集計するプログラムでも作ってみてはいかがでしょう?
    で、サンプルデータの中に
    ="1001011101100001100"
    の形で出力したデータが紛れ込んでいたら、、、(創造するだけで恐ろしい。そんな仕事したくない、、、)
    ついでにこんなデータを入れておくと更に勉強になるでしょう。
    1200,"1200",'1200,'1,200,="1200",="1,200"

    か、可能な限り手短にレスしたつもりです、、、

    では、がんばってください。
記事No.2593 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■2634  Re[12]: VC++6.0での動作につきまして
□投稿者/ てこな -(2006/02/23(Thu) 22:23:00)

    分類:[VC++] 

    こんばんは、てこなです。

    ご指摘くださったみなさま、大変お待たせして申し訳ございません。
    この文章を作成した際は整形してますが、掲示板に反映した際正しく
    表示される自身がなく、その点におきましてご容赦頂ければ幸いです。
    (正しくとは、段落とか etc)

    まず管理者様へ
    結論と致しましては「解決」ですが、まだてこなにご指摘くださった方へ
    調査し可能ならば報告したいと考えておりまして、
    それが報告できた(できないと判断した)際に「解決(表示)」をしたいと考えておりますがいかがでしょう
    か?
    投稿した当初は削除命令が来るのではないか・・と、ビクビクしておりましたが、
    今となって、てこなにこのような機会を与えてくださり、まことにありがたく思って
    おります。

    ご指摘くださったみなさまへ
    皆様のご指摘内容は、次の<試行錯誤>に記載してありますが、
    指摘したとおり認識してくれてない!などございましたら、
    よろしければ再度ご指導頂ければ幸いなのですが・・・・・、
    皆様の貴重なお時間をこれ以上割いていただくのも申し訳ないようにも感じます・・
    ・・。
    相変わらずうまく表現できず、みなさまに伝わっているか大変不安ではありますが、
    あくまで、みなさまの都合最優先で、
    もし都合がよろしければご指南していただけるとうれしいです。

    急いでおりませんので、お手すきの際にでもご指南していただけると幸いです。
    よろしくお願い致します。

    「解決」を表示させるタイミングで再度お礼申し上げたいと思っております。


    <試行錯誤>

    【L/Dさまご指摘につきまして】

    L/Dさまのご指摘にしたがって確認したつもりですが、認識の相違などございました
    ら、
    その都度よろしければご指摘をお願い致します。

    ⇒ 下記ファイル(txt)を作成し、次のように作業をしてみました。
    (1レコードにカンマで区切られた2つのデータ × 4レコード)

    1001011101100001100,1001011101100001100, // 現状のCSV
    '1001011101100001100,1001011101100001100, // 前のみシングルクォート付加
    1001011101100001100,'1001011101100001100, // 後のみシングルクォート付加
    '1001011101100001100,'1001011101100001100, // 前後ともに付加

     ダブルクリックで開かずに、
     [データ]-[外部データの取り込み]-[テキストファイルのインポート]で実行してみ
    ました。
     テキストファイルウィザードが起動しまして、
    1/3 [ データのファイル形式:カンマや〜を選択 ]
    2/3 [ 区切り文字:カンマにチェック ]-[ 文字列の引用符:『'』シングル
    クォート選択 ]
    3/3 [ 完了]
     
     文字列の引用符の指定(2/3)において、次の観点から実行してみました。
    @『'』シングルクォートを選択しない場合
    <結果:セル表示>
    A        B
    1 1.00101 E+18        1.00101 E+18
    2 '1001011101100001100        1.00101 E+18
    3 1.00101 E+18        '1001011101100001100
    4 '1001011101100001100        '1001011101100001100

    ・セルA1をクリックして数式バーに内容を表示させてみると、
     「1001011101100001100」→「1001011101100000000」となりデータが欠落して
     しまってますが、セルA2では『'』シングルクォートにより、データが欠落し
    ていませんでした。

    A『'』シングルクォートを選択する場合
    <結果:セル表示>
    A        B
    1 1.00101 E+18        1.00101 E+18
    2 1001011101100001100,1001011101100001100,        なし
    3 1.00101 E+18        1001011101100001100,
    4 10,010,111,011,000,000,000,000,000,000,000,000,000,        なし

    ・セルA1をクリックして数式バーに内容を表示させてみると、
     「1001011101100001100」→「1001011101100000000」となりデータが欠落して
     しまってます。
    ・セルA2はデータが削られていないものの、
     1つ目と2つ目の間のカンマは区切り文字として認識されていないように感じました。
    ・セルA4ですが、書式が自動的に通貨になってしまい・・・・・
     セル8個の書式を全て確認しましたが、セルA4以外は標準でした。
     セルA4の書式を標準に戻しても、1.0010111011E+37となり・・・・・
    ・セルB2とセルB4は空でした。

    <考察>
    『'』シングルクォートを付加することで、データの欠落はなくなったように感
    じていたのですが、
    考慮が漏れていまして、連続するデータの場合思惑通りにいかない様に感じまし
    た。

    【Okuminさまご指摘につきまして】

    『'』シングルクォートを外すマクロ(VBA)のようですが、
    てこなの認識が間違っていたらその都度ご指摘をお願い致します。

    記載してくださったマクロで範囲は別途拾うとして、
    『'』シングルクォートを消すことは出来ると思いますし、
    やり方として、次のように感じました。

    @CSVファイルをダブルクリックEXCELに展開し、マクロを記述して実行させ
    る。
    この場合マクロになれていない方がCSVファイルの中身を参照するには、
    少し手間がかかってしまうような気がしました。

    A先にマクロを登録しているEXCELファイルを作成しておいて、
    CSVファイルをマクロ登録済みファイルにドラッグ・・・・・できませんでし
    た。

    B先にマクロを登録しているEXCELファイルを作成しておいて、
    作成したEXCELファイルをダブルクリックして、[ファイル]-[開く]で対象CSVを開
    き、
    展開が終わったら、マクロを実行する。
    但し、対象のCSVファイルを開く際に、テキストファイルウィザードが立ち上
    がり、
    区切り方法を設定しなければならなく、出来ればその辺の操作は避けたいと感じ
    ています。
    (避けたい→てこながやる分には問題ないのですが、
     てこな以外の使用者を考慮・・・・・考慮できるほどの実力がてこなにはない
    ような・・・・)

    Okuminさまはマクロに詳しそうなので、恐縮ですがよろしければお伺いさせてくださ
    い。
    C(コンソールアプリ程度のLV)でEXCELを操作することは出来るのでしょう
    か?
    操作というのは、単に「cells(1,1).value = "お願いします"」や「マクロの自動記
    述」、
    出来れば「マクロ実行と同様の動きを行わせる」など・・・・
    インターネットで検索してもなかなか望みどおりのページを見つけることが出来ませんでした。
    CとEXCEL関連の参考書もいろいろ探してみましたが、見つけることが出来ませんでし
    た。

    余談ですが、
    前にマイクロソフトの技術者情報?で、「VC++6.0 MFCでEXCELを作成するには・・
    ・(英語)」を
    見つけることが出来たぐらいです。
    (この記事がCを始めたきっかけの1つです。完全な機能を有するEXCELではなく、
     セル構造と列の最大256を増やしたい。EXCELがインストールされていなくても
    表示ぐらいは
     出来るようなEXCELもどき?がつくれれば、どんなに業務的に楽になるか・・・・
    ・って考えてました。
     そのようなフリーソフトも見つけることが出来ず(インストール有はありましたが、

     インストール無は見つけることが出来ませんでした)・・・・・些細な情報でも構いませんのでよろしければ
    ご指摘いただければ、
     うれしいです)
    閑話休題(とりあえずMFC関連と思いますので)

    ロータス云々の話はとても興味深かったです。
    周りにこういう背景を知っている方が殆どおらず、非常にためになりました。
    ありがとうございます。

    【中博俊さまご指摘につきまして 】

    申し訳ございません。
    ご気分を害されないかとても不安ですが、わからないことを放置するのがちょっと嫌
    なので、
    書きます。ご指摘内容で「正常な『'』」という表現が勉強不足でちょっとピンとき
    ていません。
    皆様がご指摘してくださった内容の検証は、業務の合間などで時間を見つけて
    進めることが出来るのですが、平日は調査(書店で参考書を漁ったり)する時間が取
    れそうもなく、
    週末日曜でもお休みが取れれば、読み漁ってこようと思いますので、
    検証は少しお時間を頂ければと思い書き込ませていただきました。

    【柘植さまご指摘につきまして】

    「Excelファンクラブ」はてこなもよく拝見させていただいているサイトです。
    特にVBA関連では大変勉強になりました。

    「="」で実施してみました。思惑通りにいきました。ありがとうございます。

    当初の目的が、汎用ホストの帳票を紙に出力した場合大量になってしまい、
    見づらいのでEXCELで見やすく出来れば・・・でしたので、大変感謝しております。

    ただ、中博俊さまがご指摘してくださっている「そのCSV使い物にならなさそう」・
    ・・
    というのが気になり次のような検証をして見ました。そもそも認識が違う!!
    とかございましたら、適宜お手すきの際にご指摘いただけると幸いです。

    ⇒ 次のようなCSVファイルを作成しました。

    ="1001011101100001100",="1001011101100001100"

    そのCSVファイルをダブルクリックし、EXCELに展開しますと次のように表示され
    ます。
    <結果:セル表示>
    A        B
    1 1001011101100001100        1001011101100001100

    セルA1をクリックして数式バーを見ると、「="1001011101100001100"」となって
    います。

    但し、そのまま保存しようとすると「〜CSV(カンマ区切り)と互換性のない機能が含まれて〜」
    との警告が出て、
    そのまま保存すると、次のようになってしまいます。
    (機能を保存するには、「いいえ」をクリックしてから、最新のExcelのファイル形
    式で保存します。
     とありますが、最新のExcelファイルっていったい・・・・)

    保存ファイルをテキストエディタで参照してみると、

    1001011101100001100,1001011101100001100

    となってしまい、このCSVファイルをダブルクリックしEXCELに展開すると次のよ
    うになってしまいます。
    <結果:セル表示>
    A        B
    1 1 E+18        1 E+18

    セルA1をクリックし、数式バーで確認してみると、
     「1001011101100001100」→「1001011101100000000」となりデータが削られて
    しまいます。

    <考察>
    表示するまでは正しく見えるが、表示されているデータを修正して保存して
    しまうと、
    CSVファイルとしては使い物にならなくなってしまう・・・・・・で認識
    はよろしいのでしょうか?

    【daisukyさまご指摘につきまして】

    テキストファイルの作成〜のご指示通り実施し、思惑通りの表示内容になることが確
    認できました。ありがとうございました。

    また、「再現できなかった」とご指摘がございましたが、申し訳ございません。
    てこなの方で値(桁数)はあまり影響がないような気がしまして、
    ご指摘を下さる方に対し少しでも負担を減らせないかと、
    簡略してしまいました。事象が出てしまったケースとは異なる記載をしておりまし
    た。
    申し訳ございません。てこなの考えが間違っておりました。

    記載ケース        事象ケース
    「10000000300」 → 「1001011101100001100」 でよろしければお願い致します。

    お手数おかけいたしまして、申し訳ございませんでした。

    以上

記事No.2593 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■2628  Re[10]: VC++6.0での動作につきまして
□投稿者/ daisuky -(2006/02/22(Wed) 14:42:02)

    分類:[VC++] 

    一度に書かずスイマセン。
    ぜひとも、テキストファイルを作成して、

    10000000300,="10000000300"

    とだけ記載して、ANSI文字コードにて、.csvの形式で保存して実行していただきたいと思います。
    その差を埋める対処をすれば解決…かと。
記事No.2593 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■2627  Re[9]: VC++6.0での動作につきまして
□投稿者/ daisuky -(2006/02/22(Wed) 14:34:13)

    分類:[VC++] 

    はじめまして。

    ははは。
    ="10000000300"は、どんな動作するのだろう?
    と思い、やってみました。そういう数式ということですね。
    アイディアな解決策ですね。

    冒頭の問題ですが、柘植(つげ)さん同様、私のところでも再現できなかったですよ。
    丸め誤差とおっしゃっているところで軽くネットを調べると、やはり、
    それは小数点のお話。
    Windows2000, Excel2000SP3です。
    デフォルトから設定をいじってませんが、指数表示は1E+10と表示されています。
    文字の書式系の問題?でしょうか。あるいは、少数が含まれるデータのお話?
    なにかの環境依存が発生しているように感じます。
記事No.2593 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■2620  Re[7]: VC++6.0での動作につきまして
□投稿者/ 柘植 -(2006/02/21(Tue) 23:28:07)

    分類:[VC++] 

    はじめまして。柘植(つげ)と申します。

    ="1000000300"

    と出力されてはいかがでしょう?
    ダブルクリックで(エクセルで)開くことを前提にするなら上手く行くと思います。

    自分も仕事で、「csvで出力するが、お客様はダブルクリックで開くに違いない」ものを出力しないといけなくて、

    Excelファンクラブ

    というサイトで調べた結果、そういうカキコを見つけたもので。ご参考になれば。

    ちなみに、自分の環境(OS:Win2000、Office2000)で、メモ帳で以下のように記述し、ダブルクリックで開いたら2つとも「10000000300」だったんですが、、、

    10000000300,="10000000300"


記事No.2593 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■2594  Re[1]: VC++6.0での動作につきまして
□投稿者/ 中博俊 -(2006/02/19(Sun) 19:06:29)
>

    分類:[VC++] 

    Excelでうまくいってほしいだけなら、'1000000300とシングルクォートをつけて出力するだけでうまくいくでしょう。
記事No.2593 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■2593  VC++6.0での動作につきまして
□投稿者/ てこな -(2006/02/19(Sun) 11:54:42)

    分類:[VC++] 


    分類:[VC++] 

    てこなと申します。はじめまして

    まず、管理者様へ、当発言が不適切と判断された場合は、
    お手数おかけいたしますが、削除をお願い致します。

    今年からC言語を学びながらつい先日以下のような
    コンソールアプリケーションを作成いたしました。
    (まだMFC関連の把握までいたっておりません)

    <作成したツール>
    汎用ホストから出力される帳票ですが、紙に出力すると、
    何千枚も使ってしまいますので、イメージ?をPCに落としてそれを入力とし
    全項目(データ)をCSV形式で出力するツールを作成しました。

    <問題点>
    CSVファイルをEXCELで開くと、
    特定項目について丸め誤差が自動的に行われてしまう。
    (CSVファイルをテキストで開き確認してみると、
     帳票で設定された値が正しく入っていることを確認済み)
    「10000000300」→「1.0xE10」→列の幅を広げても「10000000000」と
    元のデータが失われてしまう。
    この点でネットで検索や書店で立ち読みなどしましたが、
    どうやらWindows使用している限り仕方のないことらしいです。
    またこれを対応するには数値計算の知識が必要とのことで挫折。

    <対応>
    これをない知恵絞って下記のように対応できないかと考えてみました。
    あくまで帳票のデータは参照のみの使用なので、
    次のような変換を考えています。
    「0(半角数字ゼロ)」を「O(半角英字O)」に変換する。
    ただ、各項目をなめて変換しなければならないと考えましたが、
    うまくバイトを指定できませんでした。

    そこで、ネット検索を行うとこのサイトにたどり着くことが出来ました。
    VC++6.0ではありませんが、「文字数をバイト数〜」があり、
    早速ソースに貼り付けて見ましたが、クラスのシーケンシャルエラーなど
    スムーズにはいきませんでした。今ここでMSDNと格闘しています。
    まだクラスを理解しきっていないことも原因の1つと思ってます。

    <お伺い>
    上記壁を乗り越えられればいいのですが、うまく表現できませんが、
    答えを教えてください、というよりも、相談にのってほしい、
    という表現の方が今の自分の心境としてはあっているような気がします。
    残念ながらまわりにC++関連の質問に答えられる人がおらず、
    業務的に言語はCよりCOBOLでJCL云々・・しょうがないのですが
    お忙しい中申し訳ございませんが、
    お手すきの際にでも、ご指摘ご指導を頂ければ幸いかと存じます。
    直接解決に結びつかなくてもかまいません。
    ここのHPを見て考えなさい、とか、この参考書がいい、とかでも構いません。

    よろしくお願い致します。

    <環境>
    XPproでVC++6.0の環境で少しでも上達できればと歩んでおります。
    ちなみにCSVを展開するEXCELは2000ですが、
    CSVにバージョンは関係しないような・・・・・わかりません。

    以上、よろしくお願い致します。

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

■2542  VISIO編集用アプリをShellで呼び出した際のエラー
□投稿者/ よし -(2006/02/15(Wed) 14:36:19)

    分類:[ASP.NET] 


    分類:[ASP.NET] 

    VS2002,VISIO2003で開発しております。

    VISIOファイルオープン、編集、別場所に保存という
    VB Windowsアプリケーションを、ASPアプリケーションで
    Shell実行したところ、CreateObjectで固まってしまい
    VISIOプロセスが残ったままの状態になってしまいます。
    このVISIO編集用アプリを直接コマンドで実行すると問題なく終わります。
    ASPアプリにするときに何か注意点はありますでしょうか。

    ASPアプリ 呼び出し時

     ID = Shell(pBinPath & "appSaveVisio.exe", , true,10000)

    VISIO編集用アプリ
    Imports Microsoft.Office.Interop
    Imports Microsoft.Office.Interop.Visio.SaveAsWeb

    Module appSaveVisio

    Dim pVisApp As Visio.Application
    Dim pVisDoc As Visio.Document
    Dim pVisPage As Visio.Page
    Dim pVisShape As Visio.Shape
    Sub Main()
    Try
    pVisApp = CreateObject("visio.invisibleapp")
    ......
    Finally
    pVisApp.Quit()
    End Try
    End Sub

    よろしくお願いします。
親記事 /0過去ログ3より / 関連記事表示
削除チェック/

■2531  Re[4]: Listの更新について
□投稿者/ 中博俊 -(2006/02/13(Mon) 15:24:42)
>

    分類:[C#] 


    this.listView1.BeginUpdate();
    this.listView1.Items.Clear();
    for (int i = 0; i < 10000; i++)
    {
    this.listView1.Items.Add(i.ToString());
    }
    this.listView1.EndUpdate();


    this.listView1.VirtualMode = true;
    this.listView1.VirtualListSize = 10000;

    private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
    {
    e.Item = new ListViewItem(e.ItemIndex.ToString());
    }

    あくまでイメージね
記事No.2527 のレス /0過去ログ3より / 関連記事表示
削除チェック/

■4335  Re[8]: VB2005への移行についておたずねします。
□投稿者/ YM -(2006/06/15(Thu) 20:54:56)

    分類:[VB.NET] 

    思い起こせば、パソピア、8801、MR、VXと購入しデイスプレイとプリンター等
    をあわせれば、この段階で100万円を超えてしいました。今はなんと幸せな環境
    かと思います。

    YAS 様
    VBの約0.6秒に対して、 0.017秒前後(自宅)となっています。
    この数字には驚きました。早くできる処理方法もあるんですね。

    * 私はESC/Pを操作するプログラムは、今も FBASICV63 を使用しています。

    Jitta 様

    Dim s As Long
    Dim L As Long
     For L = 1 To 100000000 '1億回
    s = L * 3
    Next

    を会社で10回連続(手動クリック)を実行したところ

        VB6(long)  VB2005(Integer) VB2005(long)

    Min 0.171 0.218 2.321
    Max 0.235 0.375 2.937
    Ave 0.186 0.282 2.737

    でした。

    メモリブロック共有について
    AD変換およびIOボード使用の評価プログラムはVB2005でと考え部品
    作りを始めました。マネージコードのボード用DLL(?)が用意されていな
    い現状で無理にVB2005で動かす必要もないのですが、VB2005も覚
    えなくてはとの気持ちで始めました。しかしデータの印刷はTwip単位で、デー
    タの総数も数十万にもおよぶことからメモリブロック共有を行いVB6で簡単に
    印刷を行うこととしました。本末転倒したプログラムになりますが、量産用で
    はないのでまあいいかと考えています。

    msdn ライブラリについて
    私には従来マイクロソフトのレファレンスをみても敷居が高く、他の書籍を購入
    していました。まだ部分的にしかみていないのですが、これは私でもわかる説明
    かもしれないと思っています。

    YAS 様 Jitta 様 どうもありがとうございました。
記事No.4255 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■4280  Re[6]: VB2005への移行についておたずねします。
□投稿者/ YM -(2006/06/13(Tue) 21:02:08)

    分類:[VB.NET] 

    名無しぃシャープ 様
    ありがとうございました。

    YAS 伍長 様
    ご配慮感謝致します。ありがとうございました。

    Jitta 曹長 様
    ご意見ありがとうございます。

    私は、VB6からVB2005への部品作りの段階で、VB2005は遅いなとの印象
    を持っています。下記が速度テストとして適当かどうかわからませんが、例の
    ひとつとして
    (私は97のMDBを使用した検査プログラムの作成とデータ処理を行っています)

    For L = 1 To 100000000 '1億回
    S = L * 3
    Next

    を実行した場合、 VB6 0.203秒 VB2005 0.328 です。

    MDBへのアクセス方法が、VB6 ADO を、VB2005 で使用しているせいか、データ
    が多すぎるせいか、管理の都合でいまだアクセス97を使用しているせいか体感と
    しては2倍近く時間がかかるのかなと思っています。

    たとえば、会社では毎朝、女の子が、十数ベンチの集計処理(BackUpを含む)
    を行っていますが、1.5倍に処理時間が増すのは困ります。もちろんC等使えば
    速いのでしょうが、私のレベル内でしか行えません。

    ご存知ないかもしれませんが、「N88BASIC」でホビーから、プログラムを
    始め、それをそのままひきずっています。ご紹介いただいた「msdn ライブラリ.
    ....」 や今後も書籍を購入し .NET Framework上 での知識を得たいと思っ
    ています。そうすれば処理速度も違ってくるのかなと思っています。

    ありがとうございました。 






記事No.4255 のレス /0過去ログ4より / 関連記事表示
削除チェック/

■7107  Re[2]: C++のDLLからVBで値を受け取るには?
□投稿者/ シープラ -(2006/10/03(Tue) 14:50:49)
記事No.7104 のレス /0過去ログ7より / 関連記事表示
削除チェック/

■7105  Re[1]: C++のDLLからVBで値を受け取るには?
□投稿者/ Blue -(2006/10/03(Tue) 14:40:33)
記事No.7104 のレス /0過去ログ7より / 関連記事表示
削除チェック/

■1728  非同期コールバックについて
□投稿者/ Hirotow -(2007/03/04(Sun) 22:06:46)
>

    分類:[C# (Windows)] 

    次のようなコード

    // using ディレクティブ省略

    namespace Application
    {
    class DownloadItem
    {
    // フィールド・プロパティ宣言省略。

    /// <summary>
    /// ダウンロードを開始します。
    /// </summary>
    /// <param name="resume">リジュームを試行する場合は true、さもなければ false。</param>
    public void Start(bool resume)
    {
    //==============================
    // 状態更新
    //==============================
    MyState = DownloadState.Download;

    //==============================
    // 初期化
    //==============================
    MyTotalBytes = 0;
    MyRecievedBytes = 0;
    MyRecieveSpeed = 0;

    MyStopWatch.Reset();

    CallStatusChanged();

    //==============================
    // リクエスト生成
    //==============================
    try
    {
    MyRequest = (HttpWebRequest)WebRequest.Create(MyUrl);
    }
    catch
    {
    MyState = DownloadState.Failure;
    CallStatusChanged();

    return;
    }

    //==============================
    // リジュームフィールド追加
    //==============================
    if (resume)
    {
    FileInfo locinfo = new FileInfo(MyLocation);

    if (locinfo.Exists)
    {
    long length = locinfo.Length;
    if (length > 0)
    {
    MyRequest.AddRange((int)length);
    string etag = GetETag();
    if (etag != null)
    MyRequest.Headers.Add("If-Range", etag);
    }
    }
    }

    //==============================
    // 全般フィールド追加
    //==============================
    MyRequest.KeepAlive = false;
    MyRequest.Headers.Add("Pragma", "no-cache");
    MyRequest.Headers.Add("Cache-Control", "no-cache");

    //==============================
    // リクエスト送信
    //==============================
    MyRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), null);
    }

    private void GetResponseCallback(IAsyncResult ar)
    {
    MyResponse = null;

    //==============================
    // レスポンス取得
    //==============================
    try
    {
    MyResponse = (HttpWebResponse)MyRequest.EndGetResponse(ar);
    }
    catch
    {
    MyState = DownloadState.Failure;
    CallStatusChanged();

    return;
    }

    //==============================
    // エンティティタグ保存
    //==============================
    string etag = MyResponse.GetResponseHeader("ETag");
    if (!string.IsNullOrEmpty(etag))
    SetETag(etag);

    //==============================
    // ストリーム取得
    //==============================
    MyGetStream = MyResponse.GetResponseStream();
    MyOutStream = File.Open(MyLocation, FileMode.OpenOrCreate, FileAccess.Write);

    //==============================
    // 保存ストリームシーク処理
    //==============================
    long pos = 0;

    if (MyResponse.StatusCode == HttpStatusCode.PartialContent)
    {
    string crstr = MyResponse.GetResponseHeader("Content-Range");
    Match rm = Regex.Match(crstr, @"bytes\s+(?:(?<first>\d*)-(?<last>\d*)|\*)/(?:(?<len>\d+)|\*)");
    if (int.TryParse(rm.Groups["first"].Value, out pos))
    pos = first;
    else
    pos = 0;

    }

    MyOutStream.SetLength(pos);
    MyOutStream.Position = pos;

    //==============================
    // 全体バイト数取得
    //==============================
    MyTotalBytes = MyResponse.ContentLength;

    //==============================
    // 受信開始
    //==============================
    MyBuffer = new byte[4096];
    MyGetStream.BeginRead(MyBuffer, 0, MyBuffer.Length, new AsyncCallback(BeginReadCallBack), null);

    MyStopWatch.Start();
    }

    private void BeginReadCallBack(IAsyncResult result)
    {
    int len = MyGetStream.EndRead(result);

    //==============================
    // 受信終了
    //==============================
    if (len == 0 || MyCancelationPending)
    {
    MyCancelationPending = false;

    MyOutStream.Close();
    MyGetStream.Close();

    if (MyResponse.ContentLength > 1000000)
    MyState = DownloadState.Complete;
    else
    MyState = DownloadState.Failure;

    CallStatusChanged();

    return;
    }

    //==============================
    // 受信
    //==============================
    MyOutStream.Write(MyBuffer, 0, len);

    //==============================
    // 状態更新
    //==============================
    MyRecievedBytes += len;
    MyRecievedParcentage = (double)MyRecievedBytes / (double)MyTotalBytes;
    double ms = MyStopWatch.Elapsed.TotalSeconds;
    MyRecieveSpeed = (long)((double)len / (ms - MyLastRecieved));
    MyLastRecieved = ms;

    CallStatusChanged();
    }

    /// <summary>
    /// 保存されているエンティティタグからこのダウンロードに一致するものを取得します。
    /// </summary>
    /// <returns>一致したエンティティタグ、または null。</returns>
    private string GetETag() //省略

    /// <summary>
    /// 受信したエンティティタグを保存します。
    /// </summary>
    /// <param name="etag">エンティティタグ</param>
    /// <returns>エンティティタグが上書きされた場合は true、新規登録された場合は false。</returns>
    private bool SetETag(string etag) //省略

    /// <summary>
    /// ダウンロードを停止します。
    /// このメソッドの実行には数秒かかることがあります。
    /// </summary>
    /// <returns>現在ダウンロードが実行されていなければ true、さもなければ false。</returns>
    public bool Cancel()
    {
    if (MyState == DownloadState.Download)
    {
    if (MessageBox.Show(string.Format("{0} のダウンロードを停止しますか?", Title), "中断確認", MessageBoxButtons.YesNo) == DialogResult.No)
    return false;

    MyCancelationPending = true;
    while (MyState == DownloadState.Download) ;
    }

    CallStatusChanged();

    return true;
    }

    public bool StandBy()
    {
    if (Cancel())
    {
    MyState = DownloadState.StandBy;
    CallStatusChanged();
    }
    }

    public bool Suspend()
    {
    if (Cancel())
    {
    MyState = DownloadState.Suspend;
    CallStatusChanged();
    }
    }

    // 以下省略
    }
    }

    のCancel()メソッドが怖いのですが、安全かつ確実に処理を停止させるにはマルチスレッドで実行したほうがよいのでしょうか?
    どなたかご教授願います。
親記事 /過去ログ10より / 関連記事表示
削除チェック/

■2104  DateGridViewへのキーブレイク編集
□投稿者/ ありんこ -(2007/03/19(Mon) 11:06:16)

    分類:[VB.NET (Windows)] 

    はじめまして、ありんこと申します。

    VB.net2005[Windowsフォーム]と SQL-Server2005-Express を使い、
    親子関係にある2つのテーブルを組み合わせ DateGridView に結果を表示させます。

    この場合、内容が重複して繰り替えされる親データは、
    ブレイク時にだけ表示させ、重複時は空白表示を図ります。
    -----------------------------------------------------------
    [テーブル:伝票見出し]主キー:伝票NO
    伝票NO^計上日
    ------^------
    100001^07/3/1
    100002^07/3/3

    [テーブル:伝票明細]主キー:伝票NO,NO
    伝票NO^NO^コード
    ------^--^------
    100001^01^HK-001
    100001^02^HK-002
    100001^03^HK-003
    100002^01^MR-001
    100002^02^MR-002

    [DateGridView]
    伝票NO^計上日^NO^コード
    ------^------^--^------
    100001^07/3/1^01^HK-001
    ^^^^^^^^^^^^^^^^^^^02^HK-002
    ^^^^^^^^^^^^^^^^^^^03^HK-003
    100002^07/3/3^01^MR-001
    ^^^^^^^^^^^^^^^^^^^02^MR-002
    -----------------------------------------------------------

    重複分も表示する場合のSQL文を元に
    プログラム内で『DateGridViewに1行ずつ編集セット』する方法以外に、

    (1).SQL文でキーブレイク編集させる
    (2).DateGridViewの機能を使いキーブレイク編集させる

    上記のキーブレイク編集を実現する手段(1)や(2)の方法をご教授願います。
親記事 /過去ログ10より / 関連記事表示
削除チェック/

■4003  文字列のフォーマット方法について
□投稿者/ あら -(2007/05/31(Thu) 14:30:52)

    分類:[C# (Windows)] 

    お世話になっております。
    下記のように記述した場合の結果は"1.110000e-006"となります。
    これを"1.11e-6"のように値に影響がない"0"は表示されないよう
    にしたいのですが、どのように記述すればよいのでしょうか?

    ご教授、アドバイス等お願いします。
    (.NET 2005 C#)
    -------------
    static void Main(string[] args)
    {
    double i = 1.11;
    double j = Math.Pow(10, -6);

    double k = i * j;
    Console.WriteLine(k.ToString("e"));
    }
親記事 /過去ログ13より / 関連記事表示
削除チェック/

次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>

ヒット件数が多いので過去ログ1〜103 までの検索結果 / 過去ログ104からさらに検索→

パスワード/

- Child Tree -