(15) VB2003:固定長文字列変数が使えない。んだからいいかげんあきらめろ。
検証環境 自作ATX(PenIII1.2GHz/GA-6VTXE/512MB)
WinXPPro(2002)SP2/VS.NET2003(7.1.3091) & .NET Framework1.1(1.1.4322SP1)/MSDN-Lib Oct,2004
VB.NETでは固定長文字列変数は使えません。
よく取り沙汰されるVBFixedString属性ですが、
<VBFixedStringAttribute(99)> Public aaa As String ←こんな風に書くやつ
これはファイル入出力の際のバッファサイズを指定するものであって、格納文字列に上限を設けるものではない。らしいです。
このへんは時間がある時に検証・反証をやっておきたいんですが、まぁ現時点では鵜呑みにしておくこととして。
で、APIに引き渡す文字変数のバッファを使いたい時なんかは、
Private aaa As String = New String(CChar(" "), 99)とかで先に欲しいサイズの空文字列を突っ込んでおけばOKなわけです。てことで私としては別に不便はないわけなんですが、
と自己の中心でわがままを叫ぶ人がいるのはなぜだ。
Private aaa As String * 3 = "abcde" → 結果:aaa = "abc"とでもしたいってことなんでしょうか。だったら、
Private aaa As String = Strings.Left("abcde", 3)とでもしとけばいいじゃん。
あと、どーしても固定長文字列でないばいかん理由が思いつきません。
明示的な文字列編集がめんどくさいだけのよぅな気がするんですけれども。
言語が変われば当然文法も変わり、できるできないも変わってくるんです。これは別に今回の旧VB→VB.NETへの変遷に限らず、あらゆる局面で頻繁に起こってきた事柄です。
代替手段があるのに、従来の手法が使えないことを嘆いて「昔はよかった」ってのは違うと思うんですけどねぇ。
コメント
全角どうすんだ?バーカ…
投稿者: 通りすがり | 2007年11月02日 00:55
?全角と固定長文字列がどうつながるとお考えなのか、よくわかりません。
何かお困りですか?
投稿者: さるべーじ | 2007年11月02日 13:18
構造体で固定長文字列宣言を出来ればC言語で作成した関数への引数私で悩まなくて済みます。
大体方法はもちろんありますが、出来ると楽ですよね?
投稿者: すらり | 2008年07月11日 09:24
誤字は気にしないで…
安全な代替方法として、私は文字コードを変換してからバイト配列にして渡すようにしていますが引数が増えてしまいます。
構造体にバイト配列を入れる方法もありですが、少しメンドウなので・・・
構造体の代わりに、複数の配列を使用してます。
投稿者: すらり | 2008年07月11日 09:29
あなたの取引先の8割の売上を締めているボクを見捨てないでください。
コンピュータオタクのマイクロソフトは、本当は顧客のビジネスとか興味ないんだろうね。
投稿者: 固定長ファイル | 2008年11月17日 23:05