テキスト広告:Amazon Primeday

木曜日, 7月 03, 2008

[PHP]WordPressとMySQLのインストール or トラブルシューティング

▼質問
ブログツールのWordPressをWindowsで動かしたいんだ。どうやったらいいか教えてくれ!

▼回答
ここでは、IISでPHPが動いていることを前提に話すから、そこまではやっておいてくれ!

1.MySQLを下記のサイトからダウンロードする。
  今回はバージョン4.1.22のmysql-4.1.22-win32.zipをダウンロードした。
  http://dev.mysql.com/downloads/mysql/4.1.html
2.ダウンロードしたファイルを解凍する。Setup.exeファイルができる。
3.「Setup.exe」をダブルクリックすると対話形式でインストールができる。その手順を下記に示す。
①「Next >」ボタンを押下する。
②「Custom」を選択し、「Next >」ボタンを押下する。
③インストールディレクトリの変更がなければ、「Next >」ボタンを押下する。
 インストールディレクトリを変更したい時は、ここで「Change」ボタンをクリックし指定する。
④インストール内容を確認し、「Install」ボタンを押下する。
⑤「Skip Sign-Up」を選択し、「Next >」ボタンを押下する。
⑥「Finish」ボタンを押下する。
⑦「Next >」ボタンを押下する。
⑧「Detailed Configuration」を選択し、「Next >」ボタンを押下する。
⑨「Developer Machine」を選択し、「Next >」ボタンを押下する。
⑩「Multifunctional Database」を選択し、「Next >」ボタンを押下する。
⑪テーブルスペースのドライブとディレクトリの場所を確認し、「Next >」ボタンを押下する。
⑫「Decision Support(DSS)/OLAP」を選択し、「Next >」ボタンを押下する。
⑬ネットワークオプションを確認し、「Next >」ボタンを押下する。
⑭「Manual Selected Default Character Set / Collation」を選択する。
 Character Setから「sjis」を選択し、「Next >」ボタンを押下する。
⑮Windowsオプションを確認し、「Next >」ボタンを押下する。
⑯「Modify Security Settings」のみがチェックされていることを確認する。
 パスワードを入力し、「Next >」ボタンを押下する。
⑰「Execute」ボタンを押下する。
⑱「Finish」ボタンを押下し、MySQLのインストールは終了です。
4.WordPressを下記のサイトからダウンロードする。
  今回はバージョン2.3.3のwordpress-2.3.3-ja.zipをダウンロードした。
  http://ja.wordpress.org/releases/
2.ダウンロードしたファイルをIISが動いているホームディレクトリに解凍する。
  例: C:\InetPub\wwwroot\wordpress
3.「インターネット インフォメーション サービス」 から仮想ディレクトリの設定をする。
  設定方法については省略する。下記参照。
  http://phponwindows.net/WordPress.aspx
4.WordPress用のデータベースをMySQLに作成する。
  実行した手順を下記に示す。コマンドプロンプトから次の実行を行う。

①ログイン
C:\>mysql -u root -p
Enter password: *****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.22-community-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

②データベースの作成
mysql> create database wordpressdb;
Query OK, 1 row affected (0.02 sec)

mysql> show create database wordpressdb;
+-------------+----------------------------------------------------------------------+
Database Create Database

+-------------+----------------------------------------------------------------------+
wordpressdb CREATE DATABASE `wordpressdb` /*!40100 DEFAULT CHARACTER SET sjis */
+-------------+----------------------------------------------------------------------+
1 row in set (0.02 sec)

③ユーザーの作成
mysql> grant all on wordpressdb.* to 'user'@'localhost' identified by 'pass';
Query OK, 0 rows affected (0.17 sec)

5.

▼質問
次のエラーが出てデータベースに接続できないんだ。どうしてなのか教えてくれ!

C:\Program Files\MySQL\MySQL Server 4.1\bin>mysqladmin ping -u root -p
Enter password: *****
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to MySQL server on 'localhost' (10061)'
Check that mysqld is running on localhost and that the port is 3306.
You can check this by doing 'telnet localhost 3306'

タスクマネージャにもmysql.exeがいるのに?!なぜ、つながらない!!

▼回答
も一度、インストールしなおせばうまくいくかもよ!

もう一回、インストールしてみることにしよう!

うまくつながった!v(^^)v

▼質問
http://localhost/wordpress/wp-admin/install.phpを実行すると次のエラーが出る。
「データベース接続確立のエラー」

▼回答
次のコマンドを試してみてくれ!

SET PASSWORD FOR root@localhost = OLD_PASSWORD('*****')

水曜日, 7月 02, 2008

[C#]ファイル操作

▼質問
C#でファイルを操作したいんだ。どうやったらできるか教えてくれ!

▼回答
主に2通りのやり方があるんだ。そのやり方のサンプルを示しておくから参考にしてくれ!

private void FileTest()
{
if (!System.IO.Directory.Exists("Dir")) System.IO.Directory.CreateDirectory("Dir");
string fileName = string.Format(@"Dir\{0}.txt", System.DateTime.Now.ToString("yyyyMMddHHmmss"));
string contents = "";
for (int i = 0; i < 5; ++i)
{
contents = contents + string.Format("Test file RowNo. {0}\n", i + 1);
}
System.IO.File.WriteAllText(fileName, contents);
}

private void StreamWriterTest()
{
if (!System.IO.Directory.Exists("Dir")) System.IO.Directory.CreateDirectory("Dir");
string fileName = string.Format(@"Dir\{0}.txt", System.DateTime.Now.ToString("yyyyMMdd"));
System.IO.StreamWriter sw = new System.IO.StreamWriter(fileName);
string contents = "";
for (int i = 0; i < 5; ++i)
{
contents = contents + string.Format("Test file RowNo. {0}\n", i + 1);
}
sw.WriteLine(contents);
sw.Close();
}

private void StreamReaderTest()
{
if (!System.IO.Directory.Exists("Dir")) System.IO.Directory.CreateDirectory("Dir");
string fileName = string.Format(@"Dir\{0}.txt", System.DateTime.Now.ToString("yyyyMMdd"));
System.IO.StreamReader sr = new System.IO.StreamReader(fileName);
string line;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
sr.Close();
}

土曜日, 6月 21, 2008

[PHP]WindowsでPHP

▼質問
WindowsにPHPをインストールしたいんだ。インストール手順を教えてくれ!

▼回答
1.PHPを下記のサイトからダウンロードする。
  今回はバージョン3.2.3のphp-4.2.3-Win32.zipをダウンロードした。
  http://jp.php.net/releases/index.php
2.ダウンロードしたファイルをC:\に解凍し、フォルダ名をphpにする。
3.解凍してできた下記のファイルを複製しファイル名をphp.iniに変更する。
4.変更したphp.iniファイルの設定内容を変更する。
①magic_quotes_gpc を修正する。
; Magic quotes for incoming GET/POST/Cookie data.
; magic_quotes_gpc = On
magic_quotes_gpc = Off
②文字コードを修正する。
; As of 4.0b4, PHP always outputs a character encoding by default in
; the Content-type: header. To disable sending of the charset, simply
; set it to be empty.
;
; PHP's built-in default is text/htmldefault_mimetype = "text/html"
;default_charset = "iso-8859-1"
default_charset = "Shift_JIS"
③PHPの拡張関係のディレクトリを設定する。
; Directory in which the loadable extensions (modules) reside.
; extension_dir = ./
extension_dir = "C:\php\extensions"
④マルチバイト(日本語など)が使えるように設定する。
;Windows Extensions;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
;
;extension=php_bz2.dll
;extension=php_ctype.dll
;extension=php_cpdf.dll
;extension=php_curl.dll
;extension=php_cybercash.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
;extension=php_dotnet.dll
;extension=php_exif.dll
;extension=php_fbsql.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
;extension=php_gd.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_ingres.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_ming.dll
;extension=php_mssql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_tokenizer.dll
;extension=php_w32api.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
;extension=php_zlib.dll
⑤マルチバイトを利用する際は「日本語」であると設定する。
[mbstring]
;mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
;mbstring.http_output = SJIS
;mbstring.detect_order = auto
;mbstring.substitute_character = none
;mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
5.作成したINIファイルと下記のファイルをウィンドウズのsystem32フォルダにコピーする。
  C:\php\php.ini
  C:\php\php4ts.dll
  C:\php\dllsの全てのdllファイル
6.IISの設定をする。
①「インターネット インフォメーション サービス」から「既定の Web サイト」を選択し、プロパティ
  ウィンドウを表示する。
② 「ホーム ディレクトリ」タブをクリックする。
③「構成(G)...」ボタンを押下する。
④「追加」ボタンを押下する。
⑤下記の設定をする。
  実行ファイル:「C:\php\sapi\php4isapi.dll」
  拡張子:「.php」
  動詞:制限を選択する。
     :GET,HEAD,POST,TRACE
  ファイルの存在を確認する:チェックを外す。
⑥「OK」ボタンを押下する。
⑦「適用(A)」ボタンを押下する。




■参考サイト
2php : PHPのインストール(Windows)
http://2php.jp/php/install_php_windows.html
Windows で PHP > インストール・設定方法(IIS 編) @みっちーわーるど
http://www1.mahoroba.ne.jp/~mitt/itmemo/php/04.htm

水曜日, 6月 18, 2008

[VB→C#]VB 6 Functions to C#
































VB 6 FunctionsC# code
AbsSystem.Math.Abs
ArrayNew Object() { }
Asc, AscB, AscWMicrosoft.VisualBasic.Strings.Asc
AtnSystem.Math.Atan
ChooseInteraction.Choose
CBoolSystem.Convert.ToBoolean
CByteSystem.Convert.ToByte
CCurSystem.Convert.ToDecimal
CDateSystem.Convert.ToDateTime
CDblSystem.Convert.ToDouble
Chr(char)
CIntSystem.Convert.ToInt32
CLngSystem.Convert.ToInt64
CosSystem.Math.Cos
CommandInteraction.Command
CreateObjectCreateObject or New Instance in .NET
CStrSystem.Convert.ToString
CurDirFileSystem.CurDir
DateDateTime.Today
DateAddMicrosoft.VisualBasic.DateAndTime.DateAdd
DateDiffMicrosoft.VisualBasic.DateAndTime.DateDiff
DatePartMicrosoft.VisualBasic.DateAndTime.DatePart
DateSerialMicrosoft.VisualBasic.DateAndTime.DateSerial
DateValueMicrosoft.VisualBasic.DateAndTime.DateValue
DayMicrosoft.VisualBasic.DateAndTime.Day
DDBFinancial.DDB
DirFileSystem.Dir
EnvironInteraction.Environ
EofFileSystem.EOF
ExpSystem.Math.Exp
FileAttrFileSystem.FileAttr
FileDateFileSystem.FileDateTime
FileLenFileSystem.FileLen
FilterMicrosoft.VisualBasic.Strings.Filter
FixMicrosoft.VisualBasic.Conversion.Fix
FormatCurrencyMicrosoft.VisualBasic.Strings.FormatCurrency
FormatDateTimeMicrosoft.VisualBasic.Strings.FormatDateTime
FormatNumberMicrosoft.VisualBasic.Strings.FormatNumber
FreeFileFileSystem.FreeFile
FVFinancial.FV
GetAllSettingsInteraction.GetAllSettings
GetAttrFileSystem.GetAttr
GetObjectMicrosoft.VisualBasic.Interaction.GetObject
HexMicrosoft.VisualBasic.Conversion.Hex
HourMicrosoft.VisualBasic.DateAndTime.Hour
IIFInteraction.IIf
InputFileSystem.InputString
InputBoxMicrosoft.VisualBasic.Interaction.InputBox
InStr, InstrBMicrosoft.VisualBasic.Strings.InStr
InStrRevMicrosoft.VisualBasic.Strings.InStrRev
IntMicrosoft.VisualBasic.Conversion.Int
IpmtFinancial.IPmt
IRRFinancial.IRR
IsArrayMicrosoft.VisualBasic.Information.IsArray
IsDateMicrosoft.VisualBasic.Information.IsDate
IsEmptyMicrosoft.VisualBasic.Information.IsEmpty
IsMissingInformation.IsNothing
IsNullSystem.Convert.IsDBNull
IsNumericMicrosoft.VisualBasic.Information.IsNumeric
IsObjectInformation.IsReference
JoinMicrosoft.VisualBasic.Strings.Join
LBoundMicrosoft.VisualBasic.Information.LBound
LCaseSystem.String.ToLower
Left, LeftBSystem.String.Substring(0,..)
Len, LenBStrings.Len
LocFileSystem.Loc
LofFileSystem.LOF
LogSystem.Math.Log
LTrimSystem.String.TrimStart
Mid, MidBSystem.String.Substring
MinuteMicrosoft.VisualBasic.DateAndTime.Minute
MirrFinancial.MIRR
MonthMicrosoft.VisualBasic.DateAndTime.Month
MonthNameMicrosoft.VisualBasic.DateAndTime.MonthName
MsgBoxSystem.Windows.Forms.MessageBox.Show
NowSystem.DateTime.Now
NPerFinancial.NPer
PMTFinancial.Pmt
PPMTFinancial.PPmt
PVFinancial.PV
OctMicrosoft.VisualBasic.Conversion.Oct
QBColorInformation.QBColor
RateFinancial.Rate
ReplaceMicrosoft.VisualBasic.Strings.Replace
RGBMicrosoft.VisualBasic.Information.RGB
Right, RightBSystem.String.Substring
RndMicrosoft.VisualBasic.VBMath.Rnd
RoundSystem.Math.Round
RTrimSystem.String.TrimEnd
SecondMicrosoft.VisualBasic.DateAndTime.Second
SeekFileSystem.Seek
SgnSystem.Math.Sign
ShellInteraction.Shell
SinSystem.Math.Sin
SLNFinancial.SLN
Spacenew String(' ',...)
SPCFileSystem.SPC
SplitMicrosoft.VisualBasic.Strings.Split
SqrSystem.Math.Sqrt
StrConversion.Str
StrConvStrings.StrConv
StrCompSystem.String.Compare
StringNew String()
StrReverseMicrosoft.VisualBasic.Strings.StrReverse
SwitchInteraction.Switch
SydFinancial.SYD
TabFileSystem.TAB
TanSystem.Math.Tan
TimeMicrosoft.VisualBasic.DateAndTime.TimeOfDay
TimerMicrosoft.VisualBasic.DateAndTime.Timer
TimeSerialMicrosoft.VisualBasic.DateAndTime.TimeSerial
TimeValueMicrosoft.VisualBasic.DateAndTime.TimeValue
TrimSystem.String.Trim
TypeNameMicrosoft.VisualBasic.Information.TypeName
UBoundMicrosoft.VisualBasic.Information.UBound
UCaseSystem.String.ToUpper
ValConversion.Val
VarTypeMicrosoft.VisualBasic.Information.VarType
WeekdayMicrosoft.VisualBasic.DateAndTime.Weekday
WeekdayNameMicrosoft.VisualBasic.DateAndTime.WeekdayName
YearMicrosoft.VisualBasic.DateAndTime.Year
DoEventsSystem.Windows.Forms.Application.DoEvents()
CallByNameUNSUPPORT
CVErrUNSUPPORT
ErrorUNSUPPORT
GetAutoServerSettingsUNSUPPORT
GetAutoServerSettingsUNSUPPORT
IMEStatusUNSUPPORT
IsErrorUNSUPPORT
LoadPictureUNSUPPORT
LoadResPictureUNSUPPORT
LoadResDataUNSUPPORT
LoadResStringUNSUPPORT


■参考サイト
Netcoole Migration Solutions
http://www.netcoole.com/default.htm

[C#]日付関連(日数・・・)

▼質問
2つあるDateTime型の日付範囲の日数を知りたいんだけど・・・。どうしたらよいの?

▼回答
C#で簡単にやるには次の様にすると良いよ!

Microsoft.VisualBasic.DateAndTime.DateDiff(Microsoft.VisualBasic.DateInterval.Day,fromDate, toDate,Microsoft.VisualBasic.FirstDayOfWeek.System,Microsoft.VisualBasic.FirstWeekOfYear.System)

なぜか?C#では、パラメータの4と5がないとエラーになる。

■参考サイト
DateDiffをC#で使いたい。: DOBON.NETプログラミング掲示板過去ログ
http://dobon.net/vb/bbs/log3-14/7944.html

金曜日, 6月 06, 2008

[C言語]プリプロセッサ命令

__LINE__と__FILE__マクロは現在処理中の行数と現在処理中のファイル名を表す
__DATE__マクロには現在の日付が月/日/年 というフォーマットで入る
__TIME__マクロには現在の時刻が時/分/秒 というフォーマットで入る
_cplusplusはC++のソースコードをコンパイルしているときに定義される
__STDC__はC言語のソースコードをコンパイルしているときに定義される。C++のソースをコンパイルしているときにもおそらく定義される

■参考サイト
プリプロセッサ命令
http://www.cppll.jp/cppreference/preproc_details.html

[C++]エラーメッセージを取得する

▼質問
予期しないエラーでアプリケーションが終了したんだ。

そのときのエラー内容を取得したいんだ。どうしたらいいの?

▼回答
GetLastError関数とFormatMessage関数で次の様に取得できるよ。

#include
#include
#include
using namespace std;

try {
throw "Exception";
bool b;
if (b) throw 10.1;
else throw 100;
}
catch ( ... ) {
LPTSTR lpBuffer = NULL;
BOOL result = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER FORMAT_MESSAGE_FROM_SYSTEM FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, GetLastError(), MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ),
(LPTSTR)&lpBuffer, 0, NULL );
CString str = (LPCTSTR)lpBuffer;
str.Replace( "\r\n", "" );
logprintf( "エラー番号:%d,エラー内容:%s", GetLastError(), str );
// MessageBox( NULL, lpBuffer, "Last Error Message", MB_ICONHANDMB_OK );
LocalFree( lpBuffer );
// cout << "Exception : " << e << '\n'; exit( EXIT_FAILURE );
}


■参考サイト
peslab C,C++
http://peslab.blog70.fc2.com/category5-1.html
FormatMessage 関数
http://msdn.microsoft.com/ja-jp/library/cc428939.aspx
[C/C++]なんとエラーメッセージが取得出来た

http://blogs.wankuma.com/ch3cooh/archive/2008/03/22/129144.aspx


木曜日, 6月 05, 2008

[C++]例外処理(try文)

▼質問
アプリケーションがメッセージを出して死んじゃうんだ。どう対処したらよいの?

とりあえず、途中でメッセージを出して止まらないようにしたいんだ。

▼回答
try文を使ってエラーをキャッチすればエラーで止まることは対処できると思うよ。

次の方法は、あらゆる型の例外を受け取ることができるよ。

try {
}
catch ( ... ) {
}
finally {
}

■参考サイト
例外処理
http://wisdom.sakura.ne.jp/programming/cpp/cpp35.html

月曜日, 6月 02, 2008

[C#]longのキャスト

▼質問
次の様にするとエラーになるんだ。

long型のキャストはどうしたらよいんだい?

DataRow oRow = oDataSet.Tables[0].Rows[0];
long count = (long)(oRow[0]);

▼回答
次の様にすればうまくいくぞ!

DataRow oRow = oDataSet.Tables[0].Rows[0];
long count = Convert.ToInt64(oRow[0]);


変換先の型名→Convertクラス名
int→Convert.ToInt32
uint→Convert.ToUInt32
short→Convert.ToInt16
usort→Convert.ToUInt16
long→Convert.ToInt64
ulong→Convert.ToUInt64
float→Convert.ToSingle
double→Convert.ToDouble
sbyte→Convert.ToSByte
byte→Convert.ToByte
bool→Convert.ToBoolean
char→Convert.ToBoolean
date→Convert.ToDateTime
decimal→Convert.ToDecimal
string→Convert.ToString

■参考サイト
C# の庭園(Data)
http://www.apfield.jp/csgarden/data.html

木曜日, 5月 22, 2008

[C#]構造体

▼質問
構造体(struct)で作成した変数を関数に渡してその中身をその関数の中で取得して
データを取得したいんだけど・・・うまく値がセットされないんだ!?

どうしてだい?

▼回答
C#のstructは、C/C++のstructとは違うものなんだ。

C#での構造体は、値型でクラスは、参照型なんだ。

値型とは、情報を引き渡すときに情報をコピーする方式のデータ型である。
参照型とは、データの実体がある場所を保存しておき、情報を引き渡す必要がある場合は、
データの本体をコピーせず、データの場所だけを伝えるという方式である。

構造体で参照渡しをしたい時は、関数の引数と呼び出し側の引数に「ref」を付けるんだ。

public struct ユーザ定義名
{
public int num;
public string name;
}

public void Test( ref ユーザ定義名 user )
{
user.num = 1;
user.name = "テスト";
}

ユーザ定義名 getUser;

Test( ref getUser );


■参考サイト
@IT:連載 改訂版 C#入門 第5章 C#のデータ型
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_005/cs2_005_03.html
青島のしま~Blue Islands~ : .NET Tips
http://www.takebay.net/~daigo-ao/paddlewiki.pl/title_2E4E45542054697073.html

水曜日, 5月 21, 2008

[C#]object型のキャスト

▼質問
次のプログラムで 「指定されたキャストは有効ではありません。」のエラーが出る。どうして?

string sql = "SELECT * FROM テーブル名";
OracleDataAdapter objAdapter;
objAdapter = new OracleDataAdapter(sql, objOraConn);

DataSet objOraDataSet;
objOraDataSet = new DataSet("objDataSet");

// Fill the DataSet
objAdapter.Fill(objOraDataSet, "テーブル名");

DataRow objRow = objOraDataSet.Tables[0].Rows[0];
int val = (int)objRow["フィールド名"]; ← ここでエラー

▼回答
次の2つを使い分けてやればOK?!
Convert.ToInt32(objRow["フィールド名"]);
((IConvertible)objRow["フィールド名"]).ToInt32(null);

■参考サイト
object型のキャストについて: DOBON.NETプログラミング掲示板過去ログ
http://dobon.net/vb/bbs/log3-16/9607.html

日曜日, 5月 18, 2008

[VB→C#]My.Computer.FileSystem関連

▼質問
「My.Computer.FileSystem」関連の処理をVBからC#に移植しようと思うんだが・・・。

うまくいかないんだ。

▼回答
「My.Computer.FileSystem」を「Microsoft.VisualBasic.FileIO」に変換すれば問題ないよ。

名前空間のインポートに「Microsoft.VisualBasic.FileIO」を宣言すると次のエラーになる。

「エラー 1 'FileSystem' は、'Microsoft.VisualBasic.FileIO.FileSystem' と 'Microsoft.VisualBasic.FileSystem'' 間のあいまいな参照です。 ファイルパス」

「'Microsoft.VisualBasic」と「Microsoft.VisualBasic.FileIO」は共存できないようだ。

そこで考えた。

名前空間のインポートに「using FileIO = Microsoft.VisualBasic.FileIO;」を宣言して、

「My.Computer」を「FileIO」に変換すれば問題ないことがわかった。

土曜日, 5月 17, 2008

[VB→C#]INIファイル関連(WIN32API)

▼質問
INIファイル関連の関数宣言を教えてくれ!

▼回答
サンプルを示しておくから参考にしてくれ!!

[VB]
' INIファイルから値を取得する関数の宣言
Public Declare Auto Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileString" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As StringBuilder, _
ByVal nSize As UInt32, _
ByVal lpFileName As String) As UInt32

' INIファイルから値を取得する関数の宣言
Public Declare Auto Function GetPrivateProfileInt Lib "kernel32" _
Alias "GetPrivateProfileInt" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal intDefault As Integer, _
ByVal lpFileName As String) As UInt32

' INIファイルに値を設定する関数の宣言
Public Declare Auto Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileString" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As String, _
ByVal lpString As String, _
ByVal lpFileName As String) As UInt32

[C#]
// INIファイルから値を取得する関数の宣言
[DllImport("kernel32.dll")]
public static extern uint GetPrivateProfileString(
string lpAppName,
string lpKeyName,
string lpDefault,
StringBuilder lpReturnedString,
uint nSize,
string lpFileName);

// INIファイルから値を取得する関数の宣言
[DllImport("kernel32.dll")]
public static extern uint GetPrivateProfileInt(
string lpAppName,
string lpKeyName,
int nDefault,
string lpFileName);

// INIファイルに値を設定する関数の宣言
[DllImport("kernel32.dll")]
public static extern uint WritePrivateProfileString(
string lpAppName,
string lpKeyName,
string lpString,
string lpFileName);

[C#]VBからの移植でのエラー

▼質問
VBからC#に移植しているんだけど。

次のコードで、次のエラーが出るんだ。どういう意味なのかな?

DataSet objDataSet = new DataSet("objDataSet");
 ~ 略 ~
DataRow objRow = objDataSetOra.Tables(0).Rows(0);

「エラー 1 'System.Data.DataSet.Tables' は 'プロパティ' ですが、'メソッド' のように使用されています。 ファイルパス」

▼回答
VBとC#で配列の文法が違うから気を付けた方がいいよ。

DataRow objRow = objDataSetOra.Tables[0].Rows[0];


▼質問
次のエラーが出るんだ。

「エラー 1 'objRow' は '変数' ですが、'メソッド' のように使用されています。 ファイルパス」

▼回答
これも、上記の回答と同じだよ。

[C#]型変換(キャスト)

▼質問
次のプログラムで

public string cnvString(double data) {
return data.ToString();
}

下記のエラーになるんだ。どうしてなんだ?

「エラー 1 メソッド グループ 'ToString' を非デリゲート型 'string' に変換することはできません。このメソッドを呼び出すことはできません。 ファイルパス」

次の様にするとエラーは出なくなるんだ。何か違う気がする・・・。

public string cnvString(double data) {
string s = data.ToString();
return s;
}

▼回答
VBやC言語で言う共通関数(値を渡して結果を返すだけの処理)のようなものならstaticを
付けてあげれば問題ないと思うよ。

public static string cnvString(double data) {
return data.ToString();
}

静的変数・静的メソッドはクラスごとに唯一つの実体を持ち、すべてのオブジェクトの間で共有される。
また、数学関数や数学定数などのインスタンスを持つ必要のない関数を定義する場合にも使う。

クラス内に処理実態とデータが含む場合はstaticにしてはいけない。

■参考サイト
静的変数・静的メソッド(C# によるプログラミング入門)
http://ufcpp.net/study/csharp/oo_static.html

金曜日, 5月 16, 2008

[C#]Oracle参照エラー

▼質問
下記のエラーが出るんだ。どうしたらいいんだ?!
「エラー 1 型または名前空間名 'Oracle' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 ファイルパス」

▼回答
ソリューション エクスプローラの参照設定から次の手順で設定するんだ。

参照設定を選択し、プロパティウィンドウ(右クリック)から「参照の追加」を選択するんだ。

「.NET」タブからコンポーネント名「Oracle.DataAccess」を選んで「OK」をクリックして終了だ。

ODP.NETのインストールとバージョンに注意してくれ!

■参考サイト
Oracle 散策
http://www.okisoft.co.jp/esc/db/ora04.html

[C#]デファイン or インクルード

▼質問
デファイン(#define)を定義するインクルードファイル(ヘッダファイル)ってないの?

▼回答
C#には、拡張子が(.h)のようなヘッダファイル(インクルード)は存在しないよ。

■参考サイト
C# 言語と .NET Framework の概要
http://msdn.microsoft.com/ja-jp/library/z1zx9t92(VS.80).aspx

[C#]C#の日付型

▼質問
C#にDate型はないの?

▼回答
Date型はないけど日付型を扱うにはSystem名前空間にあるDateTime型を使うんだ。

使用方法には、次に上げる2通りがあるぞ!

プログラムの最初で「using System;」と宣言する方法と、

プログラムの中で「System.DateTime」とする方法だ。

前者の方が、プログラムがスッキリして一般的に使われる

方法だと思うから、その方法をお勧めするよ!

木曜日, 5月 15, 2008

[C#]VBからC#への移植方法

■VBからC#への移植方法
1.「’(シングルコーテイション)」を置換で「//(ダブルスラッシュ)」にする。

2.「Imports」を「using」に変換し、行の最後に「;(セミコロン)」を付ける。

3.「Public」を「public」に「Private」を「private」に置換する。

4.「Public Class クラス名 ~ End Class」を「public class クラス名 { ~ }」にする。

5.「Public Enum 列挙名 ~ End Enum」を「public enum 列挙名 { ~ }」にし、列挙子の間を
「,(カンマ)」で区切る。

6.「Public Structure 構造体名 ~ End Structure」を「public struct 構造体名 { ~ }」にし、
メンバの型を次の様に変換する。
  Public 変数名 As Integer → public int 変数名;
  Public 変数名 As String → public string 変数名;
  Public 変数名 As Long → public long 変数名;
  Public 変数名 As Double → public double 変数名;
  Public 変数名 As Boolean → public bool 変数名;
  Public 変数名 As Date → public System.DateTime 変数名;

7.コンストラクタ「Sub New() ~ End Sub」を「public クラス名() { ~ }」にする。

8.下記の様に置換する。
  「New」 → 「new」
  「True」 → 「true」
  「False」 → 「false」
  「.ToString」 → 「.ToString()」
  「Try ~ Catch ex As Exception ~ Finally ~ End Try」 → 
「try { ~ } catch (Exception ex) {  ~ } finally { ~ }」
  ※注意:using Systemが必要!
  「GoTo」 → 「goto」
  「Nothing」 → 「null」

9.「IsDBNull」関数を下記に置き換え実装する。
public static bool IsDBNull(object data)
{
これよくなかった!
if (data == null) return true;
return false;
return Microsoft.VisualBasic.Information.IsDBNull(data);
}

10.「Format」関数を下記に置き換え実装する。
public static string Format(object data, string format)
{
これ間違えだった!
return String.Format(format, data);
return Microsoft.VisualBasic.Strings.Format(data, format);
}

11.配列宣言の型を次の様に変換する。
  「Dim val(2) As Integer」 → 「int[] val = new int[2];」

12.「Select Case 」文を次の様に変換する。

Select Case 変数名
Case 値
Case Else
End Select

switch ( 変数名 ) {
case 値:
default:
}

13.「For」文を次の様に変換する。

For i as Integer = 0 To 10
Next i

for ( int i = 0 ; i <= 10 ; i++ ) { } 14.「& _」を使った文字列の連結を「+」に変換する。 15.下記に示すものを削除し、プログラムの処理を変更する。   「On Error GoTo」 16.「Err.Number」を「Microsoft.VisualBasic.Information.Err().Number」とするか次の様にする。    ソリューション エクスプローラの参照設定から「参照の追加」より「Microsoft.VisualBasic」を    追加し、「Err.Number」を「Information.Err().Number」とする。    このやり方ではエラーの取得は駄目みたい(>_<)

17.定数宣言を次の様に変更する。
  「Public Const 定数名 As Integer = 0」 → 「public const int 定数名 = 0」

18.VB定数を次の様に変更する。
  「Chr(13)」 or 「vbCr」 → 「\r」 : キャリッジリターン文字
  「Chr(10)」 or 「vbLf」 → 「\n」 : ラインフィード文字
  「Chr(13) + Chr(10)」 or 「vbCrLf」 or 「vbNewLine」 → 「\r\n」 : キャリッジリターンとラインフィードの組合せ
  「Chr(9)」 or 「vbTab」 → 「\t」 : タブ文字
  「Chr(0)」 or 「vbNullChar」 or 「vbNullString」 → 「\0」 : 値 0 を持つ文字
  「Chr(8)」 or 「vbBack」 → 「\b」 : バックスペース文字

土曜日, 5月 10, 2008

[VB2005]コントロールを名前で探す

▼質問
コントロールを名前で探すにはどうしたらいいんだい。

▼回答
次の様にすれば直接コントロールを操作できるようになるよ。

CType(Me.Controls.Find(名前, True)(0), コントロール名)

■参考サイト
VB.NET - フォーム内のコントロールを名前で探して取得する
http://jeanne.wankuma.com/tips/vb.net/form/findcontrol.html