2012年4月26日木曜日

C# 2005 dataGridView でエラー

少し前まで問題なく動いていたプログラムが突然動かなくなりました。

次の行でエラーが発生します。

dataGridView1.Columns[0].Visible = false;

もう少し探ってみると、ACCESS からテーブルをロードし、dataGridView に反映するときにエラーが発生していました。

dAdp.Fill(dSet, "DT" + tableName);

以下がエラーの内容です。

{System.IO.FileNotFoundException: ファイルまたはアセンブリ 'System.EnterpriseServices.Wrapper.dll'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
ファイル名 'System.EnterpriseServices.

■解決方法
コントロールパネルのプログラムの追加と削除から、
「Microsoft .NET Framework 3.5 SP1」の「変更と削除」ボタンを押して修復すると治りました。

2011年6月17日金曜日

CORESERVER で 共有SSL にリダイレクトする方法(PHP)

CORESERVER で 共有SSL にリダイレクトする方法(PHP)
例) http://default.com/ → https://ss1.coressl.jp/default.com/


CORESERVER で、共有SSL を設定する方法として
.htaccess の RewriteRule で行う方法があります。

RewriteEngine on
RewriteRule ^(.*)$ https://ss1.coressl.jp/%{HTTP_HOST}%{REQUEST_URI}/ [L,R]

しかし、ループエラーが発生して、どうしてもうまくいきませんでした。
xampp ではうまく置換してくれるのに、coreserver ではダメです。

原因ははっきりわかりませんが、サーバー側のドメイン名の置換のときにへんなループに陥っているような感じでしょうか・・・

■そこで、meta タグの refresh でやってみました。

if( $_SERVER['SERVER_PROTOCOL'] != 'HTTP/1.0' ) { // http のとき
print '<meta http-equiv="refresh" content=";URL=https://ss1.coressl.jp/default.com/">';
}

これだとうまくいきました。

補足説明:<HTML>の<META>タグを PHP で動的に書き換えています。
http・・・でアクセスしたときは、https・・・で refresh します。そして
https・・・でアクセスしたときには、refresh しない仕組みにしておけばOKです。

2010年6月30日水曜日

coreserverのphpmyadminにログオンできない解決方法

coreserverのphpmyadminにログオンできない解決方法

1.以下のサイトにてユーザー名とパスワードを新規で作成する
http://www.chama.ne.jp/access/index.htm

2. FTP で /public_html/log/.htpasswd の内容を 1.で作成した内容で上書きする

これでログオンできるようになります。

2009年10月16日金曜日

smarty & pear インストール方法

■smartyインストール設定
http://www.smarty.net/
Smarty-2.6.26 をクリックしてダウンロードする

libs以下の部分を"smarty"にフォルダ名を変更後、以下のように配置する
C:\xampp\php\Smarty\

■pearインストール
1.DOSで、C:\xampp\php\ に入り go-pear
2.以下を入力する
pear install pear_info
3.続いて、以下を入力する
pear install MDB2
pear install MDB2_Driver_mysql
pear install -f HTTP_Session2
pear install -f -a HTTP_Client
pear install -f -a XML_Serializer

2009年7月1日水曜日

PHPデバック環境

PHPデバック環境

理想のPHPデバック環境が整いました。
いろいろ試して、以下の環境が一番いいと思います。

・XAMPP(無料)
・Peggy for PHP(有料)
・WindowsXP

■特徴
・環境を整えるのが非常に簡単。(何もない状態からサンプルプログラムでステップ実行するまで15分もかからない)
・動作が速くストレスを感じない。
・ステップ実行、ブレーク、変数ウォッチなどデバック機能が充実している。

■手順
1.XAMPPをインストールする。
2.Peggy for PHPをインストールする。
3.php.iniを以下のように変更する。
(C:\xampp\php\php.ini)
[Zend]の1行目をコメントアウトする。
[XDebug]のコメントを取る。

---------------------------------------------------
[Zend]
;zend_extension_ts = "C:\xampp\php\zendOptimizer\lib\ZendExtensionManager.dll"
zend_extension_manager.optimizer_ts = "C:\xampp\php\zendOptimizer\lib\Optimizer"
zend_optimizer.enable_loader = 0
zend_optimizer.optimization_level=15
;zend_optimizer.license_path =
; Local Variables:
; tab-width: 4
; End:

[XDebug]
;; Only Zend OR (!) XDebug
zend_extension_ts="C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="C:\xampp\tmp"
---------------------------------------------------

4.XAMPPコントロールパネルより、Apacheを再起動する。
5.Peggy for PHPを設定する。
・[ツール]->[オプション]で[デバック]タブを選択する。
・URLルート : http://localhost
・ローカルルート: C:\xampp\htdocs
6.sampleをhtdocsにコピーする。
C:\Program Files\Anchor\Peggy\sample フォルダをコピーして
C:\xampp\htdocs\sample を作成する
7.Peggy for PHPに album.php をドラッグ&ドロップする。
(C:\xampp\htdocs\sample\album.php)
8.Peggy for PHPの[ステップイン]ボタンを押す。
([デバック]->[ステップイン]でもOK)

2008年10月8日水曜日

C#2005/2008 マネージ 線形リスト クラス

C#2005/2008 マネージ 線形リスト クラス

マネージで線形リストが扱えるクラス(List.cs)を作りました。マネージでは new の代わりに gcnew を使用するため、関数のスコープが外れたときでも gcnew で確保した内容が消えないようにしなければなりません。
以下は、線形リストで追加と削除ができるクラスです。先入れ先出のみの対応で、リストの真ん中に対して挿入・削除は対応しておりません。

**** Form1.cs ****

private void button3_Click(object sender, EventArgs e)
{
List list = new List();

ListType input = new ListType(256);
input.buff[0] = 1;
input.buff[1] = 2;
list.addlist(input); // リストへ追加 1
input.Clear();
input.buff[0] = 3;
input.buff[1] = 4;
list.addlist(input); // リストへ追加 2

ListType getd = new ListType(256);
getd = list.deletelist(); // リスト取得後削除 1
getd = list.deletelist(); // リスト取得後削除 2
getd = list.deletelist(); // リスト取得後削除 (nullを返す)
}

**** List.cs ****

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestTest
{
/// <summary>
/// リストタイプ クラス
/// </summary>
class ListType
{
///------------------------------------------------
/// テーブル宣言
///------------------------------------------------
public Int32 no; // リスト番号
public uint[] buff; // 格納データ
public Int32 len; // 文字数
public ListType next; // 次の要素へのポインタ
/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="length"></param>
public ListType( Int32 length )
{
buff = new uint[length];
len = length;
next = null;
Clear(); // バッファクリア
}
public void Clear()
{
for (Int32 ii = 0; ii < len; ii++)
{
buff[ii] = 0;
}
}
}
///--------------------------------------------------------
/// <summary>
/// リスト クラス
/// </summary>
class List
{
///------------------------------------------------
/// テーブル宣言
///------------------------------------------------
public ListType head;
public ListType p;
public ListType q;
public ListType newcell;
public ListType output;
public Int32 No;
/// <summary>
/// コンストラクタ
/// </summary>
public List()
{
head = new ListType(1); // リストヘッダー宣言
No = 0;
}
/// <summary>
/// リスト追加
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public bool addlist( ListType input )
{
p = head.next; // 先頭要素の次のアドレス
q = head; // 先頭のアドレス
while( p != null )
{
q = p; // 追加位置の直前の要素nextを後で設定するため
p = p.next; // 次の要素へ進む
}

newcell = new ListType(input.len);
if( newcell == null )
{
return false; // メモリ不足
}

input.no = ++No;
for (Int32 ii = 0; ii < (input.len); ii++)
{
newcell.buff[ii] = input.buff[ii]; // 新しい要素を設定
}
newcell.len = input.len; // 文字数設定
newcell.next = p; // 新しい要素の次の要素へのアドレス設定
q.next = newcell; // 新しい要素の直前の要素のnextに新しい要素アドレス設定
return true;
}
/// <summary>
/// リスト削除
/// </summary>
/// <returns></returns>
public ListType deletelist()
{
p = head.next; // 先頭要素の次の要素アドレス
q = head; // 先頭要素アドレス

if( p == null )
{
return null;
}
else
{
output = new ListType(p.len); // 取出領域確保
output.no = --No;
for(Int32 ii=0; ii<(p.len); ii++)
{
output.buff[ii] = p.buff[ii];
}
output.len = p.len;
q.next = p.next; // 削除する要素の直前の要素のnextポインタを再設定
p = null;
}
return output;
}
}
}

2008年6月25日水曜日

VC#2008 型 DLL対応について

VC#2008 型 DLL対応について

C#の変数のDLL対応について記述します。

[Windows] : [C] : [C#] : [.NET]
-----------------------------------------
BOOL : long : bool : System.Boolean
BYTE : unsigned char : byte : System.Byte
--- : --- : sbyte : System.SByte
CHAR : char : char : System.Char
--- : --- : decimal : System.Decimal
DOUBLE : double : double : System.Double
FLOAT : float : float : System.Single
SHORT : short : short : System.Int16
INT : int : int : System.Int32
LONG : long : long : System.Int32
UINT : unsigned int : uint : System.UInt32
ULONG : unsigned long : uint : System.UInt32
WORD : unsigned short : ushort : System.UInt16
LPSTR : char* : --- : System.Text.StringBuilder
LPCSTR : const char* : string : System.String