日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

久々の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 !!
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

» 続きを読む

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";
?>

» 続きを読む

2010.11.29

Perl バイナリモジュールの追加 覚え書き

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
必要なモジュールをインストールします
コマンドラインで
cpan モジュール名
cpanの中で install モジュール名

例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
perl  -I$HOME/local/perl/lib/perl5/site_perl/5.8.9/mach Makefile.PL  PREFIX=$HOME/local/perl
make
make install
注意
make installだと
~/local/perl/lib/perl5/site_perl/5.8.9/mach/Digest/SHA.pm
みたいになるので注意。

@INCに追加するスクリプト書いてそれをrequireすると簡単に指定できます。


2009.06.22

おもいのでいらないときは起動しない。

・常駐解除
コントロールパネル>管理ツール>サービス
MySQLを 手動 にかえる


MySQL起動.bat
net start MySQL

MySQL停止.bat
net stop MySQL
2005.06.13



PR

[PR]