2012年10月14日

TeeChar(TChart)のヘルプファイル取得

ありそうでなさそうなTeeChart(VCL)用のヘルプファイル。

http://www.steema.com/files/public/teechart/vcl/

TeeChart2011CHMHelp.zip
がヘルプファイルな模様。

ただし、WidnowsVista以降はヘルプ形式が異なるので、古いヘルプ コンテンツ用のコンポーネントをインストールする必要がある。
http://support.microsoft.com/kb/917607/ja
posted by すら at 13:12| プログラミングなこと

2012年09月29日

tee chart 使い方。

以下、C++BuilderXE付属のTeeChartの使い方例。
横軸が時間のグラフの場合。


1.貼り付ける
TChartを貼り付ける。以下コード例ではChart1


2.設定変更
たぶんプログラムでどれもが弄れるはず。

・グラフの追加
右クリック→EditChart
→SeriesでAdd、このとき3Dでなく2Dの場合は下の3Dチェックを外す
→とりあえずLineを選択
→Series※ができるので、Title..ボタンで適当にいい名前に変更する

・横軸を時刻のグラフにする
作成したSeries※を左側で選択し、Generalタブを選択
→HorizontalAxisのDateTimeにチェックを入れる→時間のグラフになる
左側でChart→Axis→BottomAxisを選択し、Labels→Styleタブを選択
→Angle で時間表示の傾きを指定
左側でChart→Axis→BottomAxisを選択し、Labels→Formatタブを選択
→DateTimeFormatでh:mm:ssを指定し時間軸を時分秒表示にする


・凡例非表示
左側でChart→Legendを選択し、Styleタブを選択
→凡例非表示のためVisibleのチェックを外す
作成したSeries※を左側で選択し、Generalタブを選択
→ShowInLegendのチェックを外す→グラフに右側に出ていたデータ凡例が消える

・フォント指定
左側でChart→Generalを選択し、Fontタブを選択
→左側から対象の文字列を選び、右側で設定する

・パネルの色
左側でChartPanelを選択し、Colorタブを選択
→Colorを変える

・グラフ線の太さ色の指定
作成したSeries※を左側で選択し、Formatタブを選択
→Borderで線の太さ、色を指定する。

・グリッドの線
左側でChart→Axis→BottomAxis(LeftAxis)を選択し、Gridタブを選択
→Gridボタンを押して設定する

・グラフタイトルの表示
左側でChart→Titleを選択し、Styleタブ→Textにグラフ名を入れる
プログラムからは
 Chart1->Title->Text->Clear();
 Chart1->Title->Text->Add("グラフの名前");

・グラフを書く
プログラムから
 Chart1->Series[0]->Clear();
 Chart1->Series[0]->AddXY( now, y, "", clBlue );
 ただし、
 double now = (double)Now(); 横軸時間の場合のサンプル。
 y :yの値
 3つめ、X軸に表示したい名前
 4つ目:線の色

・印刷
プログラムから
用紙縦指定で印刷
 Chart1->PrintPortrait();
用紙横指定で印刷
 Chart1->PrintLandscape();
既存設定で印刷
 Chart1->Print();
まぁグラフなら用紙横だよな、大抵。
posted by すら at 20:18| プログラミングなこと

2012年08月21日

C++Builder2007以前orC++Builder2009以降の判定

C++Builder2007以前は AnsiString が標準文字列
C++Builder2009以降は  UnicdeString が標準文字列

どちらでも動くようにコードを書く場合は判定が必要

#ifdef _DELPHI_STRING_UNICODE

がTrueの場合はC++Builder2009以降となる。
posted by すら at 16:16| プログラミングなこと

2012年08月09日

Presonus FaderPort をMIDIコントロール。

FaderPortを買って自作MIDIモニタプログラムを通してわかったこと。

・デフォルトの入出力はMackieのHUIプロトコルに準拠。
 0x90, 0x00, 0x00 でPing。
 0xb0, 0x0c, ZZ / 0xb0, 0x2c, 0x4P でLED On ただし、ZZ:Zone P:Port

入力もまぁ似た感じ。
スイッチによっては1つ押しても複数のZone/Portの信号が出てくるものがある。

ただし、フェーダー/パンポット関係のIOだけが不明。
特にフェーダーはシンプルなはずなのだが。
posted by すら at 22:55| プログラミングなこと

2011年10月29日

UDP の原因不明な読み込みミス

T-KernelでのUDP受信において。
2KByte以上だと、なぜかそのパケット自体が無視される。
まったくないものとしてタイムアウト(selectで設定した場合)するので、
サイズが原因であることになかなか気が付きにくい。

受信バッファが2Kしかないのか?
posted by すら at 21:21| プログラミングなこと

2011年03月01日

C++BuilderXEのライセンス

以下、サポートから聞いた内容です。

C++BuilderXEを複数台のPCにインストールすることは問題ない。
ただし、条件は同時に使用しないことが条件となる。

2台目以降のアクティベーションは1台目のインストールで行った内容と同じ内容を指定すること。

------

複数台にインストールできるのはありがたいです。
そこらへん、ダメだと思ってました。

ライセンスの話だから、他のエンバカデロの開発系製品も同じなんでしょうね、きっと。
posted by すら at 10:11| プログラミングなこと

2011年02月25日

newの罠(C++)

new は単にあいたところからメモリを確保しているだけ。

たとえば
char *p = new char[ size ];

char をsize回確保しているにすぎず。

となると、p[]でアクセスするときは問題ないが
*p が連続である前提とすると、こけることがある


ということらしい。
posted by すら at 10:43| プログラミングなこと

2010年10月20日

ソフトウエアエンジニアリング

独立行政法人 情報処理推進機構(IPA)の
ソフトウエアエンジニアリングの研究成果。

http://sec.ipa.go.jp/publish/index.html#emb


組込みソフトウェア開発向けコーディング作法ガイドが素敵。
ダウンロードは会員登録が必要(無料)なようです。
posted by すら at 09:23| プログラミングなこと

2009年12月16日

STL C++ / dequeサンプル

STL C++ / dequeサンプル。
トータルallcnt個のデータで最大、最小それぞれunuse個のデータを除いて平均する。

STLを使うときの注意として。
・イテレータの種類に気をつけること。
・関数の実装がdequeやlistなどの機能によってあったりなかったりするので確認必要。

以下、<>は全角になっている。注意。
ヘッダ ------------------------------

#include <deque>
#include <algorithm>
#include <numeric>

typedef std::deque<double> DataContainer;

class CFilter
{
private:
DataContainer dcDat; // データ実体
public:

// 汎用フィルタ ---------------------------------------
// allcnt点中 max:unuse点、min:unuse 点を除いて平均する。
bool calc_nmvMaxMinFilter( int allcnt, int unuse, double value, double *filterValue );

};

CPPファイル ------------------------------
// allcnt:全データ点数
// unuse:平均から除くMax側,Min側各点数(共通)
// value:今回与える値
// filterValue:平均値(出力:ポインタ)
// ※データ点数が変化すれば初期化、入力値でパディング
bool CFilter::calc_nmvMaxMinFilter( int allcnt, int unuse, double value, double *filterValue )
{
DataContainer dcTmp;
DataContainer::iterator st, ed;

if( allcnt < unuse * 2 + 1 ) // データ数指定がおかしい?
return false;

if( dcDat.size() != (unsigned int)allcnt ) // データ数が変化した?
{
dcDat.clear(); // 今までのデータをクリア
for( int i =0; i < allcnt; i++ ) // 初期データとしてパディングする
dcDat.push_back( value );
}

// データを追加する
if( dcDat.size() == (unsigned int)allcnt )
dcDat.pop_front();
dcDat.push_back( value ); // データを保持

// 壊してよいデータ領域にコピーしてソート
dcTmp = dcDat;
sort( dcTmp.begin(), dcTmp.end() ); // ソート実施

// 先頭/末尾をそれぞれ指定個数、平均範囲から削除
st = dcTmp.begin(); // スタートのイテレータ取得
advance( st, unuse ); // 平均に使用しない指定数分、イテレータを進める

ed = dcTmp.end(); // 末尾のイテレータ取得
advance( ed, -(unuse) ); // 平均に使用しない指定数分、イテレータを戻す

// 平均の実行
*filterValue = accumulate( st, ed, 0 ) / distance( st, ed );
// 0を初期値としてトータル計算、加算個数で割る
return true;
}
posted by すら at 18:27| プログラミングなこと

2009年11月10日

バイトオーダー変換

バイトオーダ変換
htol
  バイト整数をWindow形式からネットワークバイトオーダー形式に変換
htos
  2バイト整数をWindow形式からネットワークバイトオーダー形式に変換
htohl
  4バイト整数をネットワークバイトオーダー形式からWindow形式に変換
htohs
  2バイト整数をネットワークバイトオーダー形式からWindow形式に変換

Window形式:リトルエンディアン
ネットワークバイトオーダー形式:ビッグエンディアン
posted by すら at 14:34| プログラミングなこと

2009年09月07日

fmlのメンバー配信停止のマニュアル設定

spool/ml/メーリングリスト名 のホルダにおいて。

actives
members
members-name

の各ファイルにおいて。
停止したいメンバーの前に
##BYE をつける。(BYEの後ろのスペースも忘れずに)

たぶん# だけでもいいと思うが。
念のためBYEもつけた(^^;

設定後、ダミーでメールを1件メーリングリストへ投げて。
spool/ml/メーリングリスト名/var/log で _smtplog を開き。
##BYE をつけたメンバーに配信していないことを確認して終了。
posted by すら at 10:00| プログラミングなこと

fml を ○○連絡網もどきに設定する、その4

Soft○ankからのレスには、件名になぜかBcc:が付く。(機種依存?)
うっとーしいので、これも消すように改造。
以下、config.phについて。$START_HOOK部分への追記は同じ。


&use('member_name');
$START_HOOK = q#
$s = &CheckMemberNameFile($From_address);

$BodyOld = $Envelope{'Body'};
$SubOld = &mimedecode( $Envelope{'h:Subject:'} );
if( $SubOld =~ /re:/i )
{
$SubOld =~ s/re://gi;
$SubOld =~ s/bcc://gi;
$SubOld =~ s/cc://gi;
$SubOld =~ s/\[.*\]//g;
$SubOld =~ s/^(?:\s)+//o;;
$SubOld = "Re:" . $SubOld;
}
else
{
$SubOld =~ s/bcc://gi;
$SubOld =~ s/cc://gi;
$SubOld =~ s/\[.*\]//g;
$SubOld =~ s/^(?:\s)+//o;;
}

if( $s )
{
$BodyOld = "from " . $s ."\n\n". $BodyOld;
$SubOld = "[" . $s . "]" . $SubOld;
}
else
{
$BodyOld = "from " . $From_address ."\n\n". $BodyOld;
$SubOld = "[" . $From_address . "]" . $SubOld;
}

$Envelope{'fh:from:'} = $MAIL_LIST;
$Envelope{'h:Subject:'} = &mimeencode( $SubOld );
$Envelope{'Body'} = $BodyOld;

#;
posted by すら at 09:54| プログラミングなこと

2009年07月24日

アイコンを探せ!

http://www.iconfinder.net/browse

アイコン色々。
商用利用可も結構ある。
posted by すら at 18:11| プログラミングなこと

2009年07月14日

T-Kernel の malloc

Tカーネルモードだとmallocは使えないようだ。
Vmalloc, Smallocなどに変更必要。


なんか、いけてない。
posted by すら at 16:44| Comment(0) | プログラミングなこと

2009年07月03日

fml を ○○連絡網もどきに設定する、その3

続き。
その2までの、とりあえず差出人を[]でくくって先頭につけるのは
レスが溜まってくると件名が長くなるので、その対策をした。
re:があればre:も含めて、[ から ] までを全部削除。
先頭の不要スペースも削除の上、元がre:付きなら改めて付け、
その前に差出人名称を[] でくくって追加とした。
以下、config.phについて。

&use('member_name');
$START_HOOK = q#
$s = &CheckMemberNameFile($From_address);

$BodyOld = $Envelope{'Body'};
$SubOld = &mimedecode( $Envelope{'h:Subject:'} );
if( $SubOld =~ /re:/i )
{
$SubOld =~ s/re://gi;
$SubOld =~ s/\[.*\]//g;
$SubOld =~ s/^(?:\s)+//o;;
$SubOld = "Re:" . $SubOld;
}
else
{
$SubOld =~ s/\[.*\]//g;
$SubOld =~ s/^(?:\s)+//o;;
}

if( $s )
{
$BodyOld = "from " . $s ."\n\n". $BodyOld;
$SubOld = "[" . $s . "]" . $SubOld;
}
else
{
$BodyOld = "from " . $From_address ."\n\n". $BodyOld;
$SubOld = "[" . $From_address . "]" . $SubOld;
}

$Envelope{'fh:from:'} = $MAIL_LIST;
$Envelope{'h:Subject:'} = &mimeencode( $SubOld );
$Envelope{'Body'} = $BodyOld;

#;

Bodyの from:... は、携帯で本文ナシ+画像添付だと消える。
原因不明、画像encodeの都合かいな?
posted by すら at 12:24| プログラミングなこと

2009年05月12日

fml を ○○連絡網もどきに設定する、その2

続き。
画像を添付すると、本文に追加したはずの差出人名が消えるので、タイトルにも追記するように変更する。
以下、config.phについて。

&use('member_name');
$START_HOOK = q#
$s = &CheckMemberNameFile($From_address);
if( $s )
{
$Envelope{'Body'} = "from " . $s ."\n\n". $Envelope{'Body'};
$Envelope{'h:Subject:'} = "[From:" . $s . "]" . $Envelope{'h:Subject:'};
}
else
{
$Envelope{'Body'} = "from " . $From_address ."\n\n". $Envelope{'Body'};
$Envelope{'h:Subject:'} = "[From:" . $From_address . "]" . $Envelope{'h:Subject:'};
}
$Envelope{'fh:from:'} = $MAIL_LIST;
#;



あと。
ログを見るとIPv6で接続できん、とエラーが出ていたので。
1001行目あたりコメントアウトされているものを修正
# $USE_INET6 = 1;
をコメントを外し、=0とする。
$USE_INET6 = 0;
posted by すら at 10:48| プログラミングなこと

2009年05月07日

fml を ○○連絡網もどきに設定する

携帯で運用時、メーリングリストのメールだけを管理したい場合に、Fromヘッダを変更する必要がある。
が、Fromヘッダを変更すると誰から来たメールなのか解らないので、送信者名をメールの先頭に記載する。
送信者名は元からある機能を使って管理とする。


fml でメーリングリストを作成して以下カスタマイズ
(メーリングリストの作成自体はレンタルサーバーのサーバーコントロールパネル等で実施)

spool/ml/メーリングリスト名ホルダ下において。

1)config.phにおいて以下をSection: LOCAL CONFIGのあたり(1525行あたり?)に追加。
&use('member_name');
$START_HOOK = q#
$s = &CheckMemberNameFile($From_address);
if( $s )
{
$Envelope{'Body'} = "from " . $s ."\n\n". $Envelope{'Body'};
}
else
{
$Envelope{'Body'} = "from " . $From_address ."\n\n". $Envelope{'Body'};
}
$Envelope{'fh:from:'} = $MAIL_LIST;
#;


2)config.phにおいてメンバー名リストの使用を指定する
$USE_MEMBER_NAME=1;とする
(1217行目あたり:コメントアウトされているのを編集)

3)ユーザーリストを作成、Upする。
 自動登録時 ('confirm','subscribe' コマンドによる登録も含む)なら不要(と思われる:未確認)。
 手動でするなら、members-nameを作成、config.phと同じホルダに保存すること。
 このファイルの内容は
 メールアドレス<タブ>表示名<LF>

 aaa@bbbbb すら1号
 ccc@ddddd すら2号
:
 といった感じ。

注意事項)
メンバーは、members と members-name の両方に登録なこと。
また、members-name はJISで、改行はLFで。JISじゃないと以降が文字化けを起こす(事が端末によってある)
posted by すら at 15:01| プログラミングなこと

2009年03月03日

8.5以降の歴代クリスタルレポート(Crystal Reports)のサービスパック

販売元のAG-TECHのサイトにはどこをどう探してもサービスパックの情報は今も昔(4年前)もどこにも無いので。
(少なくとも、30分調べてみつからんやった)
不具合情報の中には平気で、「Hot Fix やサービスパックを適用していない環境では・・・」って。そんあものがあるんかい!?


結局、Crystal Reports v10 update でぐぐった方が早かった。

http://resources.businessobjects.com/support/additional_downloads/service_packs/crystal_reports_en.asp#CR10

英語版なようだが・・・使えるかなぁ?
posted by すら at 15:18| プログラミングなこと

2009年03月02日

MS Forms2.0 のインストール(VB)

いまさら使わないかもしれないが、FM20.DLLの入手方法。

FM20.DLLはMicrosoft Office 97などに付属のコンポーネント集であり、再配布不可らしい。
なので、FM20.DLLを使ったアプリをインストールする必要がある。


Office97などが無い場合は、
Microsoft ActiveX Control Pad なるものを入れるのが一番早い様子。
2009/03/02現在、以下よりダウンロードできた。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaxctrl/html/cpad.asp



使わないのが一番良いそうだ。
posted by すら at 18:18| プログラミングなこと

HASP + VirtualPC

VirtualPC上にWindowsXPのっけて。
HASPドライバ入れて。
LPT1を物理LPT1へ接続して。

・・・でもHASPがちゃんと認証できないみたい。

VirtualPC上では使えない、ということみたいだった。


案外不便な子やなぁ。
HASPって。
posted by すら at 18:11| プログラミングなこと