久々のDelphiネタ!!です
バーーーン!!
グリッドインデックス が範囲を超えています.
レコードを最後に移動すると出るんですよ。
うーん。
ペタペタペタしかしていないので、
Delphi2005のバグなんだろうけど
数十件のレコードしか入っていないし
自分用のアプリなので、OK押せばよく 特に困っていないので、
まぁいいかと 1年ほど放置状態でしたが修正してみました。
lastで 最後に送るとエラーが発生するので
コアの内部インデックスがおかしいのだろうから
とりあえず
接続直後に
ClientDataSet1.First;
はい、これだけで、直りました。
もっと早く修理しておけばよかったかな。
公式サイトの別解がありましたが、まぁいいでしょう。
そして、この作業中
以前からなんとなく違和感を感じていたIDEの差分表示。
その正体が判明しました。
こ これは、 またしても バグだ。
変更を差分表示すると...
削除が+ 追加が- 記号で表示されるではないですか
↓↓↓こんな感じ
↑↑↑
ほんとひどいIDE品質。
歴代ワーストIDEに入るだけあって最悪づくめ。
別の件では、「不明な内部エラーが起きました」とコンパイルできないこともしばしば。
そういうときは、半分は再起動。それでもだめなときは、コマンドコンパイラでコンパイル。
それでもだめなときは、「不明な内部エラーなので」お手上げ。
これは、直されることなく 次期バージョンへ、そして、開発会社変更と忘れ去られていったのであった。
どっとネットの時代に
いまさらDelphiなんて ほとんど使わないから、どうでもいいのですけどね!
いま打ち間違いましたよhをoにしてしまって、delpoi でるぽい おーすばらしい名前。
でるぽい でるぽい でるぽい
ポイしましょ。
ついでに DelphiXE2 ネタ!!
そろそろDelphi XE2の発売時期ですが
昔買った値段の2倍以上するような案内を送ってきても絶対買ってあげません。
高いお金払って pascalライブラリのバグに振り回されるのはごめんですよ。
無料のマイクロソフト製の C++, C#を使った方がバグが無くて非常にいいですしネ。
私としては、
Delphiを使っていない人・使おうとする人・使っている人
には、マイクロソフト製の言語をおすすめします。
理由は、
・ヘルプファイル
・書籍
・掲示板
どれをとっても充実しています。
圧倒的なユーザー数なので、わからなかったら掲示板で即解決ってこともありますよ。
Pascal言語の役目は終わりました
さようなら Pascal言語
時代の風は、 どっとねっと
どっと どっと ドッド・ネット
C++ , C# , basic お好きな言語で
どどど どどど ドッド・ネット
それいけ .Net !!
バーーーン!!
グリッドインデックス が範囲を超えています.
レコードを最後に移動すると出るんですよ。
うーん。
ペタペタペタしかしていないので、
Delphi2005のバグなんだろうけど
数十件のレコードしか入っていないし
自分用のアプリなので、OK押せばよく 特に困っていないので、
まぁいいかと 1年ほど放置状態でしたが修正してみました。
lastで 最後に送るとエラーが発生するので
コアの内部インデックスがおかしいのだろうから
とりあえず
接続直後に
ClientDataSet1.First;
はい、これだけで、直りました。
もっと早く修理しておけばよかったかな。
公式サイトの別解がありましたが、まぁいいでしょう。
そして、この作業中
以前からなんとなく違和感を感じていたIDEの差分表示。
その正体が判明しました。
こ これは、 またしても バグだ。
変更を差分表示すると...
削除が+ 追加が- 記号で表示されるではないですか
↓↓↓こんな感じ
↑↑↑
ほんとひどいIDE品質。
歴代ワーストIDEに入るだけあって最悪づくめ。
別の件では、「不明な内部エラーが起きました」とコンパイルできないこともしばしば。
そういうときは、半分は再起動。それでもだめなときは、コマンドコンパイラでコンパイル。
それでもだめなときは、「不明な内部エラーなので」お手上げ。
これは、直されることなく 次期バージョンへ、そして、開発会社変更と忘れ去られていったのであった。
どっとネットの時代に
いまさらDelphiなんて ほとんど使わないから、どうでもいいのですけどね!
いま打ち間違いましたよhをoにしてしまって、delpoi でるぽい おーすばらしい名前。
でるぽい でるぽい でるぽい
ポイしましょ。
ついでに DelphiXE2 ネタ!!
そろそろDelphi XE2の発売時期ですが
昔買った値段の2倍以上するような案内を送ってきても絶対買ってあげません。
高いお金払って pascalライブラリのバグに振り回されるのはごめんですよ。
無料のマイクロソフト製の C++, C#を使った方がバグが無くて非常にいいですしネ。
私としては、
Delphiを使っていない人・使おうとする人・使っている人
には、マイクロソフト製の言語をおすすめします。
理由は、
・ヘルプファイル
・書籍
・掲示板
どれをとっても充実しています。
圧倒的なユーザー数なので、わからなかったら掲示板で即解決ってこともありますよ。
Pascal言語の役目は終わりました
さようなら Pascal言語
時代の風は、 どっとねっと
どっと どっと ドッド・ネット
C++ , C# , basic お好きな言語で
どどど どどど ドッド・ネット
それいけ .Net !!
カテゴリー: ぷろぐらみんぐ/メモ
2011.08.23
PDO::mysql_client_encodingが 無くてSQLで発行すると不便なので実装してみた。
PDO::mysql_set_charset($charsetname)
PDO::mysql_client_encoding()
PDO::mysql_select_db($dbname)
使い方
$dbh->mysql_set_charset('utf8');
echo $dbh->mysql_client_encoding();
同じことをsqlで発行するには
$dbh->exec('SET CHARACTER SET utf8 ');
show variables like 'character_set_client' で Value列を取得
SQLレベルでPDOに実装をまねるなら PDOクラスを継承するといい。
もし、外部から値を受け取る場合は、
その際は、外部から値を受け付けないようにSQLインジェクション対策が必要だろう。
SHOW CHARACTER SETを使うと一覧がとれるので、その中と照合して、設定するようにすれば、よい。
今回は、PDO_MysqlのCソースレベルで対応した。
PHP_ME , PHP_METHOD の PHP_をZEND_にするようにとヘルプにはあったが、
・名前が嫌い、銘銘方法がきにくわない(企業名だし)
・他のPDOが使っていない
ということで今回は使うのは避けた。
有効桁の低い+中途半端なスクリプト言語に期待しても意味がないし、
わざわざ、PDO Cソースレベルので改造は、
コンパイルなどの手間がかかるので
素直に、適当な関数を作るか、PDOを継承したクラスにスクリプトコードで実装するほうが現実的だろう。
「実行結果」
sql: mysql_client_encoding: latin1
get_class :PDO
is_a($dbh ,'PDO') :true
is_a($dbh ,'PDO_MYSQL') :false
$dbh instanceof PDO_MYSQL :false
PDO::ATTR_DRIVER_NAME :mysql
PDO::ATTR_SERVER_VERSION :5.1.31-community
PDO::ATTR_CLIENT_VERSION :5.0.67
check encoding
mysql_client_encoding: latin1
set utf8 :true
mysql_client_encoding: utf8
mysql_select_db true
PDO::mysql_set_charset($charsetname)
PDO::mysql_client_encoding()
PDO::mysql_select_db($dbname)
使い方
$dbh->mysql_set_charset('utf8');
echo $dbh->mysql_client_encoding();
同じことをsqlで発行するには
$dbh->exec('SET CHARACTER SET utf8 ');
show variables like 'character_set_client' で Value列を取得
SQLレベルでPDOに実装をまねるなら PDOクラスを継承するといい。
もし、外部から値を受け取る場合は、
その際は、外部から値を受け付けないようにSQLインジェクション対策が必要だろう。
SHOW CHARACTER SETを使うと一覧がとれるので、その中と照合して、設定するようにすれば、よい。
今回は、PDO_MysqlのCソースレベルで対応した。
PHP_ME , PHP_METHOD の PHP_をZEND_にするようにとヘルプにはあったが、
・名前が嫌い、銘銘方法がきにくわない(企業名だし)
・他のPDOが使っていない
ということで今回は使うのは避けた。
有効桁の低い+中途半端なスクリプト言語に期待しても意味がないし、
わざわざ、PDO Cソースレベルので改造は、
コンパイルなどの手間がかかるので
素直に、適当な関数を作るか、PDOを継承したクラスにスクリプトコードで実装するほうが現実的だろう。
「実行結果」
sql: mysql_client_encoding: latin1
get_class :PDO
is_a($dbh ,'PDO') :true
is_a($dbh ,'PDO_MYSQL') :false
$dbh instanceof PDO_MYSQL :false
PDO::ATTR_DRIVER_NAME :mysql
PDO::ATTR_SERVER_VERSION :5.1.31-community
PDO::ATTR_CLIENT_VERSION :5.0.67
check encoding
mysql_client_encoding: latin1
set utf8 :true
mysql_client_encoding: utf8
mysql_select_db true
» 続きを読む
カテゴリー: ぷろぐらみんぐ/メモ
2011.02.14
phpのバグ dirname関数は日本語対応未熟(php 5.3)
php6は、正常に動作しましたが
現行のバージョンは以下のコードでエラーが起きます
UTF8の文字に対してdirnameは、問題ないですが
現状 utf8でファイル名を取得できるのか?
// bug: php 5.3.3 , 5.2.14
// (php6:ok)
mb_language("ja");
mb_internal_encoding("SJIS");
$path = "c:\\tmp\\".chr(0x83).chr(0x8b); // japanese common charset (katakana ru)
$file = $path."\\test.txt"; // c:\tmp\ル\test.txt
printf(" \$file : %s\n" , $file);
printf(" dirname(\$file) : %s\n\n" , dirname($file));
if ( strcasecmp($path , dirname($file)) != 0 ) exit(" error : bug\n");
print "ok \n";
?>
php6は、正常に動作しましたが
現行のバージョンは以下のコードでエラーが起きます
UTF8の文字に対してdirnameは、問題ないですが
現状 utf8でファイル名を取得できるのか?
// bug: php 5.3.3 , 5.2.14
// (php6:ok)
mb_language("ja");
mb_internal_encoding("SJIS");
$path = "c:\\tmp\\".chr(0x83).chr(0x8b); // japanese common charset (katakana ru)
$file = $path."\\test.txt"; // c:\tmp\ル\test.txt
printf(" \$file : %s\n" , $file);
printf(" dirname(\$file) : %s\n\n" , dirname($file));
if ( strcasecmp($path , dirname($file)) != 0 ) exit(" error : bug\n");
print "ok \n";
?>
» 続きを読む
カテゴリー: ぷろぐらみんぐ/メモ
2010.11.29
Perl バイナリモジュールの追加 覚え書き
・目次 ・インストール ・ ・ |
||||
エラー |
レンタルサーバーでエラー:さくら |
|||
仮想 OS内で再現することを確認 モジュールがインストールされていないことに起因する。 スクリプト実行 Can't locate Digest/SHA.pm in @INC (@INC contains: /home/username/lib/perl/ /usr/local/lib/perl5/5.8.8/BSDPAN Can't locate loadable object for module Digest::SHA in @INC (@INC contains: /home/username 【結論】 足りないモジュールをインストールして push(@INC, 'パス'); で追加する サーバー会社サポートに追加してほしいと要望するのが一番楽で確実。 以下は、応急処置的な方法 |
||||
Step1 | まず共通の読み込みできるファイルを作ります。 これは、パス変更時に1回の修正で済ませることができるようにするためです。 (例) |
|||
push(@INC, "/home/username/local/perl/lib/perl5/site_perl/".sprintf("%vd", $^V).'/mach'); push(@INC, '/home/username/local/perl/lib/perl5/site_perl/5.8.9/mach'); |
||||
注: perlがバージョンアップした場合のために上記のように変数と 定数固定の2つを用意する # UNIX $ENV{HOME} # Windows $ENV{HOMEPATH} は、apacheのconfで定義されていない場合があるので使用しない方が無難。 |
||||
Step2 |
既存のスクリプトに上記のファイルを読み込むように設定します require "上の内容のファイル"; |
|||
Step3 |
cpanを実行して初期値を代入 cpanの初期設定でインストール先を指定します (cpan初回起動時に表示されます) If you don't understand this question, just press ENTER. Parameters for the 'perl Makefile.PL' command? Typical frequently used settings: PREFIX=~/perl non-root users (please see manual for more hints) Your choice: [] PREFIX=~/local/perl LIB=~/local/perl/lib/perl5/site_perl/5.8.9/mach Parameters for the 'make install' command? Typical frequently used setting: UNINST=1 to always uninstall potentially conflicting files 最後までいくと 設定を保存するコマンドが書いてあるので 実行すると次回から聞いてこなくなります。 (2回目の実行からは聞いてこないので間違わないように。) |
|||
Step4 |
|
|||
例 |
例1 cpan Digest::SHA 例2 cpan install Digest::SHA 更新 cpan cpanを実行後 ? でコマンド説明を表示して update /regexp/ でアップデートするといいでしょう update /.*/ 自動更新方法は、不明 |
|||
tips |
更新する名前を1行ずつ書いたファイルを用意します 例: cpan-install-list.txt Digest Digest::SHA 次に cat cpan-install-list.txt | xargs cpan を実行するとまとめてインストールできます |
cpanの再設定 |
|
cpan |
|
cpan> | o conf init |
非推奨 | 全部手動更新 | |||
仮想 OS内で再現することを確認 push(@INC,"/home/username/lib/perl/"); スクリプト実行 Can't locate Digest/SHA.pm in @INC (@INC contains: /home/username/lib/perl/ /usr/local/lib/perl5/5.8.8/BSDPAN cp -Rp blib/lib/* /home/username/lib/perl/ Can't locate loadable object for module Digest::SHA in @INC (@INC contains: /home/username cp -Rp blib/arch/* /home/username/lib/perl/ 正常実行 【結論】 ~/lib/per直下に置く場合 perl -I$HOME/lib/perl Makefile.PL PREFIX=~/lib/perl make cp -Rp blib/lib/* /home/username/lib/perl/ cp -Rp blib/arch/* /home/username/lib/perl/ |
||||
Step1 | cpanのホームページで検索して、 圧縮ファイルを取得 (ソースコード単体ではないので注意) (cpanのソフトでのインストールは不明。) |
|||
Step2 |
圧縮ファイルの展開 |
|||
Step3 |
|
|||
注意 |
make installだと ~/local/perl/lib/perl5/site_perl/5.8.9/mach/Digest/SHA.pm みたいになるので注意。 @INCに追加するスクリプト書いてそれをrequireすると簡単に指定できます。 |
カテゴリー: ぷろぐらみんぐ/メモ
2009.06.22
おもいのでいらないときは起動しない。
・常駐解除
MySQL起動.bat
MySQL停止.bat
・常駐解除
コントロールパネル>管理ツール>サービス
MySQLを 手動 にかえる
MySQL起動.bat
net start MySQL
MySQL停止.bat
net stop MySQL
カテゴリー: ぷろぐらみんぐ/メモ
2005.06.13