2015-01-01から1年間の記事一覧

Mid$とMidって何が違うのさ?

はじめに 今回は特に何かの目的を達成するというものではなく、ちょっと気になったことの確認程度です。 ふとその辺のVBのコードを見ていたらMidとMid$の2種類が使われているのに気付きまして、何か違いがあるのかと疑問に思ったわけですよ。 Let's IL まぁ…

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

はじめに さて今回は使いどころが正直思いつかないReDimステートメントのお話です。 ReDim ステートメント (Visual Basic) | Microsoft Docs なかなかに翻訳がアレですが、軽く確認した感じ 使えるのはプロシージャ(メソッド)内だけ 配列のサイズを変えら…

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

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

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

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

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

はじめに 特に需要なんてものはないんですが、VBで型パラメータで指定したインスタンスを生成したりするメソッドを定義したくなったのでちょっと調べてみました。 Module Module1 Sub Main() Dim a As Generic1(Of HogeA) = New Generic1(Of HogeA)() Dim b …

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

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

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

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

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

はじめい 前回こんな事をしました。 jyuch.hatenablog.com 今回は以下の感じでいい感じにアレをアレします。 フォールバックは例外フォールバックのみ 必要最小限しか実装しない 実装 実装の流れは前の記事でも書いた通り Encoderの実装 Decoderの実装 Encod…

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

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

VB.NETでもLINQでGroupByしたい

Group By 久々にLINQネタです。 今回はフィルタリングしつつ複数のキーでオブジェクトをグループ化しつつオブジェクト内の複数の要素の合計を個別に求めるときになんかこうスマートにできなかったのでそれについてです。 Module Module1 Sub Main() ' パター…

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

はじめに 少し前にPythonで独自の文字コードを実装しました。 jyuch.hatenablog.com あれを今回はVB.NETでやるというという誰も望まないし誰も得しない企画です。 符号化文字集合及び文字符号化方式はPython版から流用します。 ドキュメントは大切に System.…

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

はじめに 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でも独自の等値演算子を実装したい

はじめに 前回の記事を書いていた時私は勘違いをしていました。 正直今まで真面目に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…