トップページ⇒tech
1001コメント340KB

VB.NET質問スレ(Part35)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/09/14(火) 09:20:53
前スレ

VB.NET質問スレ(Part34)
http://hibari.2ch.net/test/read.cgi/tech/1270998481/

テンプレは >>2-4 あたり
0153デフォルトの名無しさん2010/10/04(月) 15:19:37
>>152
あ、すまん、textboxは、たしかに面倒だw
0154デフォルトの名無しさん2010/10/04(月) 17:59:32
いちいちコメントにレスつけて自分の意見を主張している様子から察するに、
手を動かして、実際に何かを学ぼうと思っていないだろう。
2chで適当な返答返しながら、どんぴしゃな答え、誰かがコード書いて貼ってくれるの待ってるんでしょ。

2chに来る割合をもう少し減らして、開発に時間割けば?
0155デフォルトの名無しさん2010/10/04(月) 18:03:40
154は忘れて
0156デフォルトの名無しさん2010/10/04(月) 18:03:56
また訳分からん因縁つける奴が
少なくとも言われたことは試してると思うが?
0157デフォルトの名無しさん2010/10/04(月) 18:04:46
156も忘れて(^^;
0158デフォルトの名無しさん2010/10/04(月) 20:15:26
既に誰か指摘してると思うけど、そもそもウィンドウの全ての要素の大きさを
クライアント領域のサイズに比例させる必然性が何もないし、苦労してやっても
気持ちの悪いUIになるだけだよなあ。

昔のネオジオの格闘ゲームじゃないんだからさあ。

VS2010のエディタ部分なんかデバッグ時微妙にフォントサイズが変わるけど、
あれってちょっと気持ち悪いでしょ?
0159デフォルトの名無しさん2010/10/04(月) 21:31:21
こんなコード書いて、
やるで
おわったで
と出力されるにもかかわらずディレクトリが出来ません
どうやって調査すれば良いのでしょうか

System.Console.WriteLine("やるで")
Try
System.IO.Directory.CreateDirectory("d:\temp\トップ")
Catch ex As Exception
System.Console.WriteLine(ex.ToString())
System.Console.WriteLine("いきなりディレクトリつくれんです")
End Try
System.Console.WriteLine("おわったで")
01601592010/10/04(月) 21:45:33
自己解決。ウィンドウが更新されてなかっただけでした
別プロジェクトでコードを作り直しても同じ結果になり悩んでたんですが
ウィンドウを閉じて再度表示させると治りました

エクスプローラのwindowが更新されないとか、
今まで経験したことがなかったのでちょっと驚き
ウィンドウを再表示後は、上の減少は再現しなくなりました・・
0161デフォルトの名無しさん2010/10/05(火) 14:10:02
http://ideone.com/Pg1mD

のようなコードで
1秒間にどれだけ処理(ループ)できるか書いているのですが
妥当ですかね?
0162デフォルトの名無しさん2010/10/05(火) 14:59:05
何を測りたいのかはっきりさせてくれ
そのコードだと、ループ内で行ってる処理の中ではたぶん
Console.WriteLineが一番重いので、Console.WriteLineの処理時間を計測してるだけ。
測りたい処理よりもコストのかかる処理をループ内に入れてしまうと何の意味もなくなる。
文字列連結や文字列比較の速度を調べたいのでなければ、
同じ理由で文字列の操作も避ける。GC.Collectも同様。
パフォーマンス計測にはStopwatchクラスを使う。
ループ開始前にStartして終了後にStop。最後に経過時間を出力。
一秒間にどれだけ処理できるか調べたいんだったら最後に一秒当たりに換算すればいい。
0163デフォルトの名無しさん2010/10/05(火) 15:26:36
>>162
そのものズバリ Stopwatch クラスですかありがとうございます。

何を計りたいかですが…
1〜15桁の文字列(パス)の生成に掛かる時間を、
調べたいと思っています。
0164デフォルトの名無しさん2010/10/05(火) 21:26:04
一文字づつ文字列を連結するのは典型的な非効率糞コード
StringBuilderを使う
0165デフォルトの名無しさん2010/10/05(火) 23:58:01
HttpWebRequestとHttpWebResponseで末尾が.のURLリクエストしてるのに
実際は末尾の.がないURLに代わってリクエストされるんだけど
対処法おしえてください
0166デフォルトの名無しさん2010/10/06(水) 00:40:09
https://connect.microsoft.com/VisualStudio/feedback/details/386695/system-uri-incorrectly-strips-trailing-dots
現状、TcpClientとかSocketとか使うしかないんじゃないかな
0167デフォルトの名無しさん2010/10/06(水) 22:22:47
CrLf区切りのテキストファイルから
何行目と指定してテキストを取り出したり、
同じように指定してその部分を置き換えたりしたいのですが、
できるとしたらどんな方法で出来るでしょうか?
0168デフォルトの名無しさん2010/10/06(水) 22:32:28
簡単なのはFile.ReadAllLines
ファイルの行を置き換えたかったら全部消して書き直せばいい
0169デフォルトの名無しさん2010/10/06(水) 23:03:49
レスありがとうございます。
行数が多くて一行あたりの処理が簡単なため一気に何千行の処理を行うことになるのですが
そうなると1行ごとに全部を書き換えるというのは避けた方が良いですよね?
変数に読み込んで処理すれば良いのですが、メモリの占有が大きくなるのと
プログラムが予期しない終了の仕方をした時にせっかく途中まで処理したものが
どこにも記録が残っていないという状態になってしまうので、
ファイルをピンポイントで修正していきたいと思ったのですがそういうアクセスはあまり一般的ではないでしょうか?
0170デフォルトの名無しさん2010/10/06(水) 23:12:24
>行数が多くて一行あたりの処理が簡単なため一気に何千行の処理を行うことになるのですが
これ、他人が読んで意味が通じると思う?
0171デフォルトの名無しさん2010/10/06(水) 23:26:35
高々何千行程度のテキスト読み込んでおくのにどんぐらいのメモリ食うと思ってんだ?
0172デフォルトの名無しさん2010/10/07(木) 04:43:55
9Gくらい?
0173デフォルトの名無しさん2010/10/07(木) 04:49:23
1 行につき 1 MB 使えば 1000 行で 1 GB だから、だいたいそのくらい・・・
ってばかあっー!
0174デフォルトの名無しさん2010/10/07(木) 07:49:52
>>169
>ファイルをピンポイントで修正していきたいと思ったのですが
>そういうアクセスはあまり一般的ではないでしょうか?
一般的うんぬん以前に、ファイルの任意の位置にデータを挿入する事は出来ないので無理。
元々の一行の長さと、書き込もうとする一行の長さが同じなら、その場所だけ上書きすればよい。

一気に何千行も書きかえるなら、一行ずつランダムアクセスするとかえって遅くなるかもよ。
0175デフォルトの名無しさん2010/10/07(木) 15:16:12
いったん別の一時ファイルに書き出せばいいんじゃね
StreamReaderで一行ずつ読みながらStreamWriterで平行して書き出せばいい
0176デフォルトの名無しさん2010/10/07(木) 15:53:02
本当に困っています。
OKWaveのほうにも質問していますが、TransparencyKeyでフォーム中身を透過させて、そのフォームを最大化、そしてまた元のサイズに戻すなど、
一定のサイズ変更操作をすると、フォームのタイトルバーなどがつかめなくなってしまいます。
サイズ変更もできなくなります。
本当に困っています。何か回避方法などをご存じの方がいましたら教えてください。お願いします。
http://okwave.jp/qa/q6233258.html

(マルチみたいで申し訳ないです)
0177デフォルトの名無しさん2010/10/07(木) 17:59:50
とりあえずそのソースうpして
0178デフォルトの名無しさん2010/10/07(木) 18:06:11
みたいってマルチそのものでしょw
01791762010/10/07(木) 18:24:20
>>177
ソースも何も、フォームデザイナで、BackColoerとTransparencyKeyを同一にしただけです。
他の設定は一切いじらずとも、百発百中でなります、
VS2008でも、VB2010 Expressでも。
01801762010/10/07(木) 19:03:33
http://www.youtube.com/watch?v=sARJjxKedS8&fmt=18
こんな感じです。
最大化したっきり、上にあるフォームのタイトルバーがつかめない・・・。
0181デフォルトの名無しさん2010/10/07(木) 20:04:57
うちは問題ないなー
0182デフォルトの名無しさん2010/10/07(木) 20:19:18
自分で使うわけじゃないので、環境依存ならいいんですけどね。。。
ちなみにWinXPじゃ問題は起きません。Vista以降で、aero有効時にのみ起きるようです。
0183デフォルトの名無しさん2010/10/07(木) 20:21:50
うちはVistaSP2だけど問題ないなー
0184デフォルトの名無しさん2010/10/07(木) 20:58:57
ディスプレイドライバの相性とか
0185デフォルトの名無しさん2010/10/07(木) 21:12:23
自分のフォームだけaeroオフで起動とかできないですか?
aeroがなければ上手くいくのになぁ。。。
0186デフォルトの名無しさん2010/10/07(木) 21:25:35
>>185
プロジェクトのプロパティニXPの視覚効果の有効、無効の設定があったと思うけどそれじゃだめ?
うちはvista無いから試せん
0187デフォルトの名無しさん2010/10/07(木) 21:28:25
>>186
そのチェック外しても、なんにも変わりませんでした。。。
0188デフォルトの名無しさん2010/10/07(木) 21:32:13
うちでも再現したよ。
でも下記のコードにしたら固まらなくなったよ
private void Form1_Load(object sender, EventArgs e)
{
//大きさを適当に変更
this.Size = new Size(300, 300);
Bitmap bmp = new Bitmap(1, 1);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(Brushes.WhiteSmoke, g.VisibleClipBounds);

//透明にする色
Color transColor = bmp.GetPixel(0, 0);
//画像を透明にする
bmp.MakeTransparent(transColor);
//背景画像を指定する
this.BackgroundImage = bmp;
//背景色を指定する
this.BackColor = transColor;
//透明を指定する
this.TransparencyKey = transColor;

this.TopMost = true;

}
0189デフォルトの名無しさん2010/10/07(木) 21:33:20
タイトルバーはつかめるがウィンドウ境界が透明扱いになってるな
OnSizeChangedで前回のWindowStateと違ってればRecreateHandleとか乱暴なことでもする?
0190デフォルトの名無しさん2010/10/07(木) 21:57:55
>>189
タイトルバーも境界もどっちも掴めません。。。

>>188
つまり画像を挟むってことですかね?
いまdsiから書き込んでるので、明日VB的文法に翻訳してみたいとおもいます。
0191デフォルトの名無しさん2010/10/07(木) 22:58:27
得意気にC#でw
0192デフォルトの名無しさん2010/10/07(木) 23:30:45
C#にコンプレックス持ってんのかw
仕事はVB.NETで趣味アプリはC#でやってて
今、家だからPCにはC#しか入ってないんだよw
0193デフォルトの名無しさん2010/10/08(金) 05:47:58
バカ?
ここは何スレだっつの
0194デフォルトの名無しさん2010/10/08(金) 11:59:10
じゃあ、わざわざC#スレでレスしろってかw
めんどいだろJK
0195デフォルトの名無しさん2010/10/08(金) 13:45:25
質問です。
VB2010でVBの勉強をしているのですが、
ボタンを押すことによってテキストボックスに入力されている文字をテキストファイルに出力したいのですが
以下のコードではうまくいきません

Dim Writer As New IO.StreamWriter("C:\vb.txt")
Writer.WriteLine(TextBox1.Text)

Writer.Close()

デバッグしてもエラーは出ないし、ボタンを押しても何も起きない状況です
どなたかご教示お願いします
0196デフォルトの名無しさん2010/10/08(金) 14:02:16
2010は知らないけど
http://dobon.net/vb/dotnet/file/writefile.html
じゃだめなの?
0197デフォルトの名無しさん2010/10/08(金) 14:21:48
>>188
だめです。
GUIデザイナのプロパティからTranceparecyなどの設定を削除して、フォームリロード時にお示しのコードを実行するようにしましたが、
やはりタイトルバーなどがつかめない状態になりました・・・。
0198デフォルトの名無しさん2010/10/08(金) 14:29:13
>>197
>>189じゃダメ?
0199デフォルトの名無しさん2010/10/08(金) 14:41:21
>>198
>>189をやると、正常になりますが、最大化したときだけじゃなく、
普通にサイズ変更しただけでもなる場合があるので、いくらかは問題は軽減しますが、全解決とはなりません・・・。
0200デフォルトの名無しさん2010/10/08(金) 14:43:48
resizeendイベントでもやればいいんじゃないの?
0201デフォルトの名無しさん2010/10/08(金) 14:44:46
なるほど。。。
瞬間にチカチカするのは代償と考えてあきらめるしかないですかね。
0202デフォルトの名無しさん2010/10/08(金) 14:46:51
フォームが透明になるだけでもありがたく思わないと
0203デフォルトの名無しさん2010/10/08(金) 14:49:13
でもまぁ、そうですけど、何も問題がない人との違いは何なのかと・・・。
まぁ、設定で、おかしくなる人ようの設定かなんかをもうけてもいいですし、その辺は臨機応変にやろうと思います。
0204デフォルトの名無しさん2010/10/08(金) 14:50:17
問題ないって書いたのは全部俺だけど
全部うそだよw
0205デフォルトの名無しさん2010/10/08(金) 14:50:35
>>195
ファイル名にコロンや垂直タブって無理じゃね?
0206デフォルトの名無しさん2010/10/08(金) 14:51:31
>>196さん
これでできました。ありがとうございました!
0207デフォルトの名無しさん2010/10/08(金) 14:57:08
>>204も嘘かもしれないので、信じないとしても、
何とか例の現象は解決(?)いたしました。
リサイズができなくなったときのために一応つけておいたステータスバーも取り払うことができ、
当初意図していたとおりのソフトができそうです。
皆様、アドバイス等ありがとうございました。
0208デフォルトの名無しさん2010/10/09(土) 23:22:31
For i As Integer = 1 To 100
Next

の中でiを1から100の間で戻したり進めたりするのは何も問題ないでしょうか?
0209デフォルトの名無しさん2010/10/09(土) 23:25:12
気になるんだったら別の書き方すればいいのに
0210デフォルトの名無しさん2010/10/09(土) 23:49:26
問題ないけどそういう使いかたするならあえてfor nextを
使わないのがいいと思う
0211デフォルトの名無しさん2010/10/10(日) 22:41:57
>>209-210
トンクス
0212デフォルトの名無しさん2010/10/14(木) 11:32:35
宇宙語を話す皆さんに質問です
プログラミング用語の『スロー』ってどういう意味?(”投げる”とか答える人はまだ地球人)

なんか、こう、イメージの掴める解説ってないのかね
0213デフォルトの名無しさん2010/10/14(木) 12:34:30
マルチ乙
0214デフォルトの名無しさん2010/10/14(木) 13:07:36
異常系世界へgotoするってこと
その際のスペースカプセルが例外
0215デフォルトの名無しさん2010/10/14(木) 15:43:35
linux上でunixを使いCUIの環境で、日の丸の国旗の画像を作るプログラミング、教えてください
0216デフォルトの名無しさん2010/10/14(木) 16:20:31
スレチ
0217デフォルトの名無しさん2010/10/14(木) 22:36:51
http://www.mediafire.com/?78a7las051tizi0

↑こんな感じでどう?
即席で作ってみたけど
0218デフォルトの名無しさん2010/10/15(金) 01:19:03
プリンタドライバをインストールしたいのですが、「プリンタ名が無効です」と表示されて上手くいきません。
どこがまずいかご教授お願いします。

必要なファイルは事前に C:\Windows\system32\spool\DRIVERS\W32X86 にコピー済みで、
ファイルをフルパスで指定しても同じ結果になります。

Public Shared Function DriverInstall(ByVal strDriverName As String) As Boolean
Dim di As New DRIVER_INFO_3
With di
.cVersion = 3
.pConfigFile = "ps5ui.dll"
.pDataFile = strDriverName & ".ppd"
.pDependentFiles = "pscript.ntf" & vbNullChar _
& "pscript.hlp" & vbNullChar _
& "ps5ui.dll" & vbNullChar _
& strDriverName & ".ppd" & vbNullChar _
& "pscript5.dll"
.pDriverPath = "pscript5.dll"
.pEnvironment = "Windows NT x86"
.pHelpFile = "pscript5.hlp"
.pMonitorName = String.Empty
.pName = strDriverName
.pDefaultDataType = "RAW"
End With

If AddPrinterDriver(String.Empty, 3, di) = 0 Then
Dim ExcptWin32 As New Win32Exception(Marshal.GetLastWin32Error())
MessageBox.Show(ExcptWin32.Message, "Win32Err", MessageBoxButtons.OK)
Return False
End If
Return True
End Function
0219デフォルトの名無しさん2010/10/15(金) 01:26:27
一応、APIの宣言部分も貼っておきます。
AddPrinterDriverW を AddPrinterDriverA に変えると、エラーメッセージは「パラメータが間違っています」になります。

Private Declare Function AddPrinterDriver Lib "winspool.drv" Alias "AddPrinterDriverW" _
(ByVal pName As String, _
ByVal Level As Integer, _
ByRef pDriverInfo As DRIVER_INFO_3) As Integer

Public Structure DRIVER_INFO_3
Public cVersion As Long
Public pName As String
Public pEnvironment As String
Public pDriverPath As String
Public pDataFile As String
Public pConfigFile As String
Public pHelpFile As String
Public pDependentFiles As String
Public pMonitorName As String
Public pDefaultDataType As String
End Structure
0220デフォルトの名無しさん2010/10/17(日) 00:05:45
あげとく
0221デフォルトの名無しさん2010/10/20(水) 16:20:40
じゃ、俺は下げとく。
0222デフォルトの名無しさん2010/10/21(木) 01:16:55
C#だと拡張メソッドでenumを拡張できるけど、VBはできるん?
0223デフォルトの名無しさん2010/10/21(木) 11:05:07
VBでは拡張メソッド専用の構文を準備していないため次のように属性を直接指定する。
Imports System.Runtime.CompilerServices
Module StringExtensions
    <Extension()> _
    Public Sub Print(ByVal aString As String)
        Console.WriteLine(aString)
    End Sub
End Module

同じ要領でenumでも出来るはず、やってみて。
0224デフォルトの名無しさん2010/10/21(木) 23:34:28
>>223
なるほど、試してみる
0225デフォルトの名無しさん2010/10/26(火) 20:28:20
DLL改ざん出来ないように厳密名付けたんだけど、
この場合バージョン管理ももれなく付いてくるの?
アセンブリバージョン上げたら呼び出し側でエラーが出るんだけど…
対処法としてはバージョン固定にするか、GACに登録してバージョンリダイレクトさせるかって事でOK?
0226デフォルトの名無しさん2010/10/26(火) 21:57:25
基本的には厳密名つける=バージョン管理を行う。

>対処法としてはバージョン固定にするか、GACに登録してバージョンリダイレクトさせるかって事でOK?
もしくはconfigファイルでバージョンリダイレクト。
もしくは全ビルド。
0227デフォルトの名無しさん2010/10/26(火) 21:58:25
>DLL改ざん出来ないように厳密名付けたんだけど、
実はあんまり意味ないよね。
0228デフォルトの名無しさん2010/10/27(水) 00:18:19
>もしくはconfigファイルでバージョンリダイレクト。
これは"呼び出し側exe.config"にバージョンポリシーを記述して配置するイメージですよね?

>実はあんまり意味ないよね。
えw
0229デフォルトの名無しさん2010/10/27(水) 18:23:08
すみません、初歩的で申し訳無いのですが
横2列のcsvを二次配列に入れるプログラムが作れません。

field()でテキストをReadlineして
field-Aに二次配列で入れるループを書いてます。
untilのループ内に変数Xを利用すると下記のエラーが出ます
「Exception.InnerException を参照してください。エラー: オブジェクト参照がオブジェクト インスタンスに設定されていません。」

Dim field() As String
Dim field-A(,) As String
Dim reader As New System.IO.StreamReader("field.csv", System.Text.Encoding.Default)
Dim X As Integer

X = 0

Do Until reader.EndOfStream

line = reader.ReadLine()
field = line.Split(",")

field-A = Nothing
field-A(X, 0) = field(0)
field-A(X, 1) = field(1)

X = X + 1

Loop

csvの中身
フィールドA-01,フィールドB-01
フィールドA-02,フィールドB-02
フィールドA-03,フィールドB-03
0230デフォルトの名無しさん2010/10/27(水) 18:25:30
field-A(X,0)の行でどうもエラーが出るようです。

・他にもっと簡単な方法があると思うが浮かばない
・変数Xのuntil内での使い方がおかしいorスコープがおかしいが、原因がわからない
(UNTIL内でX=0とするとエラーが起きないんですがループでリセットするわけにはいかない)

上記2点、わかる方いらっしゃいますでしょうか?
宜しくお願いします。
0231デフォルトの名無しさん2010/10/27(水) 19:05:03
>>230
>field-A(X,0)の行でどうもエラーが出るようです。
field-Aを使用する前(Do Loopの前)にあらかじめ2次元配列を作成する
field-A = New String(2, 1) {}

>他にもっと簡単な方法
2次元配列使わないでいいのならListとか使ったほうが楽

>変数Xのuntil内での使い方がおかしいorスコープがおかしい
どうおかしいのか分からない
0232デフォルトの名無しさん2010/10/27(水) 19:10:21
>>231
オブジェクト参照がオブジェクト インスタンスに設定されていません。

というエラーが出てフォームも立ち上がらない状態です。
untilの外側で宣言したXがインスタンスオブジェクトと認識されてるとかなんとか

そこまでしか情報がわかりませんでした。
Nothingで解決かと思ったら解決せず。
0233デフォルトの名無しさん2010/10/27(水) 20:33:20
配列っていうのは事前にメモリを確保してから使うんだよ?
確保するコードを追加しよう。

だけど、行数わかる?ファイル読み込まないと分からないよな?
つまりこの処理に配列は合わない。
随時メモリを拡張してくれるListの方が適切
0234デフォルトの名無しさん2010/10/27(水) 21:14:07
太古の時代では一行目にデータ数書いたりしてたな
0235デフォルトの名無しさん2010/10/27(水) 21:22:19
>>実はあんまり意味ないよね。
>えw
あんまり役に立つ場面てないよね、に言いかえよう。
0236デフォルトの名無しさん2010/10/27(水) 21:43:46
>>233
ありがとうございます!
配列の最大数を宣言しないとだめなんですね。

Dim field-A(10,2) As String

と数値を入れて宣言したら思い通り動作しました。
それからListが良いということですので使ってみます。

全て解決です。皆さんありがとうございました。
0237デフォルトの名無しさん2010/10/28(木) 01:54:46
>>233-234
配列が向かないのはまあ同意するが
たまには ReDim Preserve の事も...いや、思い出さなくてもいいか
0238デフォルトの名無しさん2010/10/28(木) 08:22:50
>>237
msdnによると
ttp://msdn.microsoft.com/ja-jp/library/w8k3cys2(VS.80).aspx
>Preserve を使った初期化。Preserve 修飾子を指定した場合、Visual Basic では、
>既存の配列から新しい配列に要素がコピーされます。
とあるから、結局はコピー、つまり遅いんでしょ?
0239デフォルトの名無しさん2010/10/28(木) 10:38:43
一要素ずつ拡張してたら糞遅いわな
List(Of T)は容量があふれるたびに内部の配列のサイズが2倍になる
同じことを自分でやってもいいけど時間の無駄
0240デフォルトの名無しさん2010/10/28(木) 12:49:22
拡張と見せかけた再割り当てってのが嫌なんだよ。
VB6では桁違いに速い。
0241デフォルトの名無しさん2010/10/28(木) 19:46:52
いや再割り当てはどっちみち必要だろ
VB6は内部でListみたいなことをやってるだけ
0242デフォルトの名無しさん2010/10/28(木) 20:48:49
そうなの?
実はその辺自信無くて試したんだけど、10倍ぐらい違ったからそうだろって…
0243デフォルトの名無しさん2010/10/28(木) 20:52:08
>>239-240
なんか物凄く馬鹿っぽいご意見ですいこと....
0244デフォルトの名無しさん2010/10/28(木) 21:09:43
>>239は間違ってないよ
List(Of T)は再割り当て時には現在の倍の容量を確保して新しい領域に現在の要素をすべてコピーする
要素が追加されるたびに再割り当てというような馬鹿なことはしない
0245デフォルトの名無しさん2010/10/28(木) 22:17:26
一般的なListの伝統ですな
02462422010/10/28(木) 23:27:06
もう一度やってみたら、
確かに要素数の増加に伴って拡張に必要な時間が増えますね・・・

にしても.net遅すぎる気が・・・
.netはinteger、VBA(VBが手元に無い為)はlongの一次元配列で、
要素数を0から350000まで1づつ増やすコードをそれぞれで実行した結果、
書くのも恥ずかしいぐらいの差がついちゃいました。

コード間違えたかなぁ・・・
0247デフォルトの名無しさん2010/10/28(木) 23:45:54
.NETでは確実に額面通りの動作をするから不自然なのはVBAの方だろう
ループの中でRedim Preserveしたりするバカが多いから変な最適化してるんじゃないの
0248デフォルトの名無しさん2010/10/30(土) 00:48:22
たまたま空きが後ろにあればそのまま拡張できる実装になってるんじゃない?
.NETの場合はメモリ管理上確実に再確保とコピーが必要。
0249デフォルトの名無しさん2010/10/31(日) 01:26:31
VB2010、.Net Framework4.0で、Byte型変数の値を、10進数に変換し、Integer型の
変数に代入したいと思っています

Dim BBB As Byte
Dim III As Integer

という宣言で、BBBに「10」と入っている時に、IIIにどうにかして「16」と、10進数に
変換した結果を代入させたいと思っているのですが、どうしたらよいのでしょう?

III = CInt(BBB)とかIII = ToInt16(BBB)とかやってみたのですが、うまくいかず…

ToInt16とかを実行するために、2バイトのバイト列とかにしないとダメなのでしょうか?
0250デフォルトの名無しさん2010/10/31(日) 01:38:32
>>249
III=BBB
0251デフォルトの名無しさん2010/10/31(日) 01:46:55
>>250
それは何度も試しててムリぽ…と思ってもう一度やってみたら、できました…

ありがとうございました

何でできないって思ったんだろ?
もう寝ます…
0252デフォルトの名無しさん2010/10/31(日) 07:39:59
>>251
できなくね?
何か勘違いしてると思われ
16進数というのは16進数表記の事で、中身の数値じゃないよ。
5という数値を表す場合、"5"、"�X"、"五"、"○○○○○"、
といろいろあるが、そのひとつが16進数で、どれもStringで表現される。
III = Convert.ToInt32("10", 16)
が正解。
>III = CInt(BBB)とかIII = ToInt16(BBB)とかやってみたのですが、うまくいかず…
ToInt16の16は16bit整数型(Short)で16進数という意味は無いよ。
■ このスレッドは過去ログ倉庫に格納されています