2015年12月19日土曜日

C#でODBC

前回オラクルODBCドライバをインストールしたので
C#で使ってみる。
(まだ、オラクルDB繋げてないけど。)

using System;
using System.Data.Odbc;
public class ODBCTest
{
  public static void Main(string[] args)
  {
try
 {
string conString = "driver={Oracle in instantclient_12_1}";
OdbcConnection con = new OdbcConnection(conString);
con.Open();
 }
catch(Exception ex)
 {
System.Console.WriteLine(ex.ToString());
 }
  }

}

実行するとこんな感じのエラー

TNSがないって怒られる。オラクルに繋げるのは次回以降で

ちなみに、32ビット版
csc odbc.cs /platform:x86
でコンパイルすると、ドライバがないと怒られる。

Oracle Instant ClientでODBC

  1. Oracle Client一式を全部ダウロードする
  2. オラクルインスタントクラインとのダウンロードサイト(Windows x64) 

  3. 解凍して全部一箇所に配置する

  4. コマンドプロンプトを管理者として実行する

  5. 解凍した箇所に移動して、odbc_install.exe JAを実行する
  6.   (成功していることを確認)

  7. コントロールパネルを起動して、ODBCで検索


  8. ODBCデータソースのセットアップを確認

2015年12月10日木曜日

C#でMid

C#でMidを使う。
コンパイル時は、下記

csc MidTest.cs /r:Microsoft.VisualBasic.dll

プログラムはこんな感じ。

using Microsoft.VisualBasic;
public class MidTest
{
  public static void Main()
  {
string src = "ABCDEF";
string dst;
dst = Strings.Mid(src,1,2);

System.Console.WriteLine(dst); /* result AB*/
  }
}

2015年12月3日木曜日

床井先生のテクスチャ関連のOpenGLへのリンクメモ

床井先生の研究室の記事で
テクスチャ関連の記事リンク
全部マスターしてみたい。

2004年09月13日 [OpenGL][テクスチャ] 第1回 画像の読み込み
2004年09月14日 [OpenGL][テクスチャ] 第2回 テクスチャの割り当て
2004年09月15日 [OpenGL][テクスチャ] 第3回 テクスチャの合成
2004年09月16日 [OpenGL][テクスチャ] 第4回 アルファテスト
2004年09月17日 [OpenGL][テクスチャ] 第5回 テクスチャ座標
2004年09月20日 [OpenGL][テクスチャ] 第6回 投影マッピング
2004年12月28日 [OpenGL][テクスチャ] 第7回 テクスチャ座標の自動生成
2004年12月29日 [OpenGL][テクスチャ] 第8回 テクスチャの投影方向の変更
2004年12月30日 [OpenGL][テクスチャ] 第9回 視点マッピング
2005年01月07日 [OpenGL][テクスチャ] 第10回 スフィアマッピング
2005年01月14日 [OpenGL][テクスチャ] 第11回 スフィアマッピングで Phong シェーディング
2005年01月21日 [OpenGL][テクスチャ] 第12回 キューブマッピング
2005年01月31日 [OpenGL][テクスチャ] 第13回 キューブマッピングでテクスチャを回転
2005年02月28日 [OpenGL][テクスチャ] 第14回 環境テクスチャを光源に使う
2005年03月01日 [OpenGL][テクスチャ] 第15回 キューブマッピングで Phong シェーディング
2005年06月10日 [OpenGL][テクスチャ] 第16回 テクスチャの部分的な置き換え
2005年06月11日 [OpenGL][テクスチャ] 第17回 部屋の中心であたりを見回す
2005年06月14日 [OpenGL][テクスチャ] 第18回 テクスチャオブジェクト
2005年06月15日 [OpenGL][テクスチャ] 第19回 マルチテクスチャ
2005年06月16日 [OpenGL][テクスチャ] 第20回 グロスマッピング

2015年12月2日水曜日

C#で配列を構造体へコピー

C#で配列を構造体にコピーしたいだけなのに
面倒だったのでメモ

やりたいことは、Cでこんな感じ

#include<stdio.h>
#include<string.h>

struct Hoge{
  char a[6];
  char b[4];
};

int main(){
  char src[10];
  struct Hoge dst;
  src[9] = 127;
  memcpy(&dst,src,sizeof(struct Hoge));
  printf("%d\n",dst.b[3]);  //127
  return 0;
}

C#だとこんな感じ。面倒だ。
コンパイル時は、/unsefe  オプションをつける。

using System;
using System.Runtime.InteropServices;

class Test
{
  unsafe struct Hoge
  {
public fixed byte a[6];
public fixed byte b[4];
  }

  unsafe public static int Main()
  {
byte[] src;
Hoge dst;
src = new byte[10];
src[9] = 127;
//srcのポインタを取得
GCHandle gch = GCHandle.Alloc(src,GCHandleType.Pinned);
IntPtr ptr = gch.AddrOfPinnedObject();
//srcのコピー
dst = (Hoge)Marshal.PtrToStructure(ptr,typeof(Hoge));
gch.Free();
System.Console.WriteLine(dst.b[3]); //127
return 0;
  }