読者です 読者をやめる 読者になる 読者になる

VB.NETでもMidステートメントで文字列を置き替えたい

はじめに Mid関数の引数について調べていたらふとこんなものを見つけました。 Mid ステートメント 同じ名前で関数とステートメントの両方があるだなんてVBはなんて素敵な言語なんでしょう。 サンプルコード 使う使わないは置いておいてとりあえず使い方を確…

VB.NETでも静的なローカル変数を使いたい

はじめに この前、ふとVBのキーワード一覧を見ていたらStaticなる物を見つけました。 Static (Visual Basic) どうも静的なローカル変数を宣言する時に使うもののようです。 正直VBがオブジェクト指向言語を標榜しているならこんなものは要らないはずですが、…

VB.NETでも処理を高速化したい

はじめに まぁ、今回のテーマは高速化なんですけど『こうすればコードが超高速化される1111111』みたいな即効的なテクニックっていうよりはパフォーマンスに問題がある場合はこうして問題を解決すればいいんじゃないかな〜的なトピックです。 ちなみ…

VB.NETでもアンマネージドリソースを解放したい

はじめに 今回はアンマネージリソースを抱えるクラスの設計の話ではなく、アンマネージリスースを含むクラスを使い終わって破棄するときのお話です。 ちょっと前にこんなコードを見かけました。 Function Hoge() as Integer Dim connection = New SqlConnect…

VB.NETでも3項演算子を使いたい

はじめに 最近はVBでもPythonみたいに関数内に関数を定義できねーかなぁと考えている弊社です。 あと、出来ればVBでもカリー化関数を扱いたい。 もっとカジュアルに関数をホイホイ扱いたいのでMicrosoftさんオナシャス。 えっ?F#を使えばいいじゃない?うるせ…

For Eachは縮小変換されるのか?最終鬼畜言語VB.NET

はじめに なんか結構このタイトルが使いやすいのでこれから積極的に使おうかなと思っております今日この頃です。 我らが啓典msdnを眺めていたところ、For Eachについて気になる記述がありました。 For Each...Next ステートメント (Visual Basic) Option Str…

VB.NETでもAsc関数で文字コードを取得したい

はじめに Visual Studioのインテリセンスを眺めているとAscやAscWといった関数を目にします。 説明文をざっと見る限り文字に対応する文字コードを返すとあるのですが、 文字コードとは一体どのコード体系を指してるのか AscとAscWは何が違うのか 当該コード…

Mid$は高速なのか?最終鬼畜言語VB.NET

はじめに 今回は特に何かの目的を達成するというものではなく、ちょっと気になったことの確認程度です。 ふとその辺のVBのコードを見ていたらMidとMid$の2種類が使われているのに気付きまして、VBマスターを目指している弊社としましては何か違いがあるのか…

VB.NETでもReDimで配列の大きさを変更したい

はじめに 適当に『UnicodeはUnix Codeの略でUnixで使われている文字コード体系なんですよ〜』なんてホラ吹いていたら本気にされました。 多分バレたら殺されます。 さて今回は使いどころが正直思いつかないReDimステートメントのお話です。 ReDim ステートメ…

他言語転向組が知るべきVB.NETのこと

初めに VBという言語に触れてから暫くたったのですがVBがJavaやC#、Pythonなどの言語とはかなり違った作法を持ち、その辺に苦しめられたのでそれに関するメモ的な何かです。 結論から言うと、VBが不愉快な挙動をしたら速攻でIL逆アセンブラを起動してアセン…

C#でもVB.NETの超便利なメソッドを使いたい111111111

はじめに いろいろごめんなさい。 超便利メソッド VB.NETにはLen(int)とかLen(char)とかLen(string)とかの超便利メソッドがたっくさんありますよね。 でもそれらのメソッドはC#では使えない。不便だと思いません? それらをC#でも使えるようにするためのメモ…

VB.NETでもジェネリックなメソッドを実装したい

気分の問題 これまた特に需要なんてものはないんですが、VBで型パラメータで指定したインスタンスを生成したりするメソッドを定義したくなったのでちょっと調べてみました。 リフレクションと組み合わせたら泥沼のコードをいっぱい書けるんじゃないかなーっ…

VB.NETでもCType演算子をオーバーロードして値を変換したい

生ハムメロンパン これまた特に需要は無かったんですが、意味なくクラスを別のクラスへ変換したかったんでCTypeについて調べてみました。 演算子と関数 なんか調べてみると自分でオーバーロードするCType演算子と変換を実行するCType関数の二種類があるみた…

VB.NETでもリフレクションで(途中略)メソッドを実行したい

タイトル補足 特に需要なんてものは無かったんですが、自作の属性をメソッドに付与してその属性が付与されたメソッドをリフレクションを用いて実行時に取得して一括実行するにはどうすればいいのか気になったので調べました。 流れ 大体以下の流れで処理を記…

VB.NETでも独自のエンコーディングを実装したい(後編)

いきなり最終話 最近は再び艦これにハマりだした弊社です。 榛名殿がワンパンで駆逐艦を沈めたのち戦艦からのワンパン大破で即撤退という流れが一般化しつつあります。 そんなこんなでVB.NETでエンコーダ・デコーダを実装するというお話は規模を縮小してその…

VB.NETでも置換フォールバックで無限ループしたい

タイトル 意味不明なタイトルで大変恐縮ですが、要するに置換フォールバックって指定したエンコードスキームでエンコできない文字に当たった時に大体の文字を指定するフォールバック戦略でしたよね。 それだったら置換先にそのエンコードスキームでエンコで…

VB.NETでもLinqでGroupByしたい

あっちの進捗 ここ数回の記事を見返してサブカルネタを多用しすぎではないかと一人反省している弊社です。 今回は使わないように頑張ります。 どうもエンコーダ・デコーダはCOM連携としてポインタを引数としてとるメソッドも定義しないといけないみたいで、…

VB.NETでも独自のエンコーディングを実装したい(前編)

さぁエディタが下からグイッとパンしてビルドエラーがどーん 窓際で軽く・・・じゃなくてどうもこんにちは。 最近は名前空間の別名だ等値演算子だのよくある『VB.NETお助けまとめサイト』の内容の様なフツーにmsdnを読めば分かるようなちょっとしたテクニッ…

VB.NETでもLenメソッドを・・・

お願い VisualBasic相談室 VB.NET特有*1のMicrosoft.VisualBasic.Strings.Lenメソッドってありますよね。 Strings.Len メソッド (Microsoft.VisualBasic) 正直弊社はアレは好きになれないんですよね。 説明文が正直意味がよくわかんないし。 文字列内の文字…

VB.NETでも名前空間に別名を付けたい

別名 VB.NETは(無論C#もですよ)名前空間に別名を付けられます。 Imports コンソール = System.Console Imports AAB = ImportAlias.Hoge.AAA Imports BBA = ImportAlias.Hoge.Fuga.BBB Module Module1 Sub Main() Dim bba = New BBA() bba.SubBBB() Dim aab…

VB.NETでも独自の等値演算子を実装したい

謝意二ング all work and no play makes jack a dull boy ではなく、前回の記事を書いていた時私はとんでもない勘違いをしていました。 正直今まで真面目にVB.NETでオブジェクト指向プログラミンをした事がなく、そうなると真面目にクラスを実装したことがあ…

VB.NETでも等値演算子で文字列を比較したい

言い訳 もしかしたら生粋のVBプログラマなら常識的なことなのかもしれませんが、等値演算子『=』(で呼び方あってますよね?)で文字列を比較するときに空文字とNothingの比較でつまずいたのでそれのメモ。 なんで違う? 以下のC#とVB.NETのコードを見て、実…

Pythonでもオレオレ文字コードを実装したい (4)

使い方 さて、前回はコーデックを実装した状態で終わりましたので今回は実際に使ってみたいと思います。 import jyuch_kana import codecs def main(): fin = codecs.open('text.txt', encoding='jyuch-kana') fout = codecs.open('text2.txt', 'w', encodin…

Pythonでもオレオレ文字コードを実装したい (3)

実装の流れ 自作エンコードをPythonで扱うための実装の手順は以下の感じっぽいです。 7.2. codecs — codec レジストリと基底クラス — Python 3.3.6 ドキュメント エンコーダ・デコーダの実装 エンコーダ・デコーダとcodecsモジュールに含まれているStreamWri…

Pythonでもオレオレ文字コードを実装したい (2)

符号化文字集合と文字符号化方式 符号化文字集合を定義する前に符号化文字集合と文字符号化方式について簡単に触れます。 符号化文字集合 コンピュータで扱う文字を取りまとめ、各文字に一意な符号を割り当てたものです。 ここで注意すべき点は、文字とは特…

Pythonでもオレオレ文字コードを実装したい (1)

やりたいこと 最近の弊社は符号化文字集合や文字符号化方式にとても興味があります。 と言うのも、今まではJavaやC#などの言語がメインでテキストファイルのエンコードスキームなどはそこまで気にしなくても動いていたのですが、Pythonで日本語を扱うように…

IronPythonとShift_JIS

鉄のヘビさん オレオレツールを作った際にCPythonとIronPythonの違いに詰まった時のお話です。 弊社はなんちゃってマカーなので、自宅ではMacを使用しています。 同じPython2.7系だし、基本的に同じコードでMac OS 10.10 + CPython 2.7.6とWindows 8.1 + Iro…

VB.NETだってDecimalの小数点以下の桁数を知りたい

ばっど☆のうはう System.Deciamlの小数点以下の数字を取得する方法について少し調べたことがあったので、それについてのメモです。 結論的にはいささかバッドノウハウ感が漂う感じになります。 いくらAPIが内部データ構造を公開しているからってそれを取り出…

VB.NETでも部分適用された関数を返す関数を書きたい

部分適用された関数 私は関数型プログラミングについてそこまで精通しているわけではないので間違ったことを言っちゃうかもです。 って前置きをしておいてからの本題ですが、今書いているプログラムであらかじめ値を適用された関数を受け取り、その関数をす…

Option Strict On ノススメ

Option Strict VB.NETにはOption Strictステートメントがあります。 暗黙的な型変換をコンパイル時に検出してくれるみたいですが、具体的にどんなことをやってくれるのか気になったので調べてみました。 困ったときのmsdn頼み とりあえずmsdnの該当ページを…

VB.NETだってLinqしたい

Linqとは Linq(統合言語クエリ)とはとかって書こうと思ったけど、どうせWikiなり他のサイトにたっくさん書いてあるんでまぁ書かなくても良いかなとおもいました。 いくつか種類のあるLinqですが、ここでは Linq to Object(コレクションに関する操作)につ…

Hello World

こんにちは世界 最初の記事なので、最初らしくHello Worldから始めます。 環境 ここではコマンドプロンプトとエディタで開発をします。 コンパイラまでのパスが通してあるコマンドプロンプトとお好きなメモ帳を起動します。 コンパイルからの実行 Option Str…