HAMLOG プログラム開発室


新着表示
タイトル
記事No
投稿日
投稿者

Re: データ新規登録イベント
596
2014/10/13(Mon) 15:39:29
JO1SIM・出島
> 外部プログラムで、ハムログにおいて新規交信データが登録された(ハムログ入力ウィンドウのSAVEボタンが押された)ということを検知するにはどうすればよいでしょうか。

新規交信データの追加かどうかは分からないかもしれませんが、hamlog.hdbのタイムスタンプに変化が起きることを検知してみるというのはいかがでしょうか?(定期的なポーリングが必要ですが)

容量も見ていれば「追加」も分かるかもしれません。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

データ新規登録イベント
595
2014/10/12(Sun) 22:18:28
JA7UDE 大庭
外部プログラムで、ハムログにおいて新規交信データが登録された(ハムログ入力ウィンドウのSAVEボタンが押された)ということを検知するにはどうすればよいでしょうか。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
594
2014/10/05(Sun) 11:07:24
JO1SIM・出島
うまくいったようでなによりです。
またなにかありましたら!

> >
> > CStringはLPCTSTRへのキャストが利きますので(一部冗長ですが)、
> >
> > WideCharToMultiByte(CP_ACP, 0, CString(_T("なにがし")), -1,buf, sizeof(buff), NULL, NULL);
> >
> > といった感じで1発変換可能ですよ。
> 本当ですね。思い込みでした。うまくいきました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
593
2014/10/05(Sun) 07:31:36
JA9AOB 銅子
>
> CStringはLPCTSTRへのキャストが利きますので(一部冗長ですが)、
>
> WideCharToMultiByte(CP_ACP, 0, CString(_T("なにがし")), -1,buf, sizeof(buff), NULL, NULL);
>
> といった感じで1発変換可能ですよ。
本当ですね。思い込みでした。うまくいきました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
592
2014/10/04(Sat) 23:12:19
JO1SIM・出島
銅子OM
でしまです。

CStringはLPCTSTRへのキャストが利きますので(一部冗長ですが)、

WideCharToMultiByte(CP_ACP, 0, CString(_T("なにがし")), -1,buf, sizeof(buff), NULL, NULL);

といった感じで1発変換可能ですよ。


> > CSTRINGとの変換ですが、
> >
> > WideCharToMultiByte/MultiByteToWideCharで変換すればよいと思いますが、検索結果をSJISのまま直接ファイルに吐き出したり、GDI等で画面に描画をするような場合ならば、邪道ですが、Wideにわざわざ変換せず、ANSIのAPIを直接呼び出してしまうような手もあると思います。
> >
> 一発で CString から char[] に変換方法ありますか。
>
> TCHAR sBuf[256];
>
> char buf[512];
>
> int wLen;
>
>
> wLen = wsprintf(sBuf, TEXT("%ls"), *b);
>
> wLen = WideCharToMultiByte(CP_ACP, 0, sBuf, -1, buf, (sizeof buf) - 1, NULL, NULL);
>
> return THW_seek(a, buf, c);
> の様に CString を TCHAR さらにchar[]の2段階でやむなくやっています。逆も同じく
> char[] を TCHAR  TCHARからCStringは = の代入で変換していますがやはり2段階でやっています。いい方法があるなら教えてください。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
591
2014/10/04(Sat) 06:34:10
JA9AOB 銅子
> CSTRINGとの変換ですが、
>
> WideCharToMultiByte/MultiByteToWideCharで変換すればよいと思いますが、検索結果をSJISのまま直接ファイルに吐き出したり、GDI等で画面に描画をするような場合ならば、邪道ですが、Wideにわざわざ変換せず、ANSIのAPIを直接呼び出してしまうような手もあると思います。
>
一発で CString から char[] に変換方法ありますか。

TCHAR sBuf[256];

char buf[512];

int wLen;


wLen = wsprintf(sBuf, TEXT("%ls"), *b);

wLen = WideCharToMultiByte(CP_ACP, 0, sBuf, -1, buf, (sizeof buf) - 1, NULL, NULL);

return THW_seek(a, buf, c);
の様に CString を TCHAR さらにchar[]の2段階でやむなくやっています。逆も同じく
char[] を TCHAR  TCHARからCStringは = の代入で変換していますがやはり2段階でやっています。いい方法があるなら教えてください。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
590
2014/10/03(Fri) 22:09:09
JO1SIM・出島
CSTRINGとの変換ですが、

WideCharToMultiByte/MultiByteToWideCharで変換すればよいと思いますが、検索結果をSJISのまま直接ファイルに吐き出したり、GDI等で画面に描画をするような場合ならば、邪道ですが、Wideにわざわざ変換せず、ANSIのAPIを直接呼び出してしまうような手もあると思います。

見た目の汚さや将来の互換性を考えなければですが…。

> 。
> >
> > http://blogs.konuma.org/blog/2007/04/c_b43e/
> > http://www.ne.jp/asahi/hishidama/home/tech/vcpp/dllusage.html
> >
> > DEFファイルを使うとか、ググるといろいろあるみたいですが、
> > なんでご本家のVisual C++は、こんなにややこしいのでしょう!?
> 参考になりました。やはりDEFで解決でした。
> 後は、CString TCHAR char の変換が大変ですね。
> 多少重くなりますが、無事Hamlog50をVS2013VC++で使える様になりました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: VC++ Run-Time Check Failure #0
589
2014/10/03(Fri) 21:57:51
JO1SIM・出島
うまくいったみたいですね。私もホッとしています。

よくよく考えると、Windowの初期からの仕様なので本来は間違えようもなく、すぐに答えが出ると思ったのですが、ネットを調べると誤った情報ばかりで、なかなかコレというまともな答えが出てこないのもにも困ったものです…。

でも、正しい答えが出ましたので、この掲示板は健全ということでしょうか!(笑)

改めて勉強になりました。

> __stdcall を指定すると extern "C"を付けても名前修飾が付くので
> 更にDEFで指定することで、名前修飾を取ることが出来ました。
> Lib作成時にこの手法で行い、このLibでLinkを行うと無事静的にLink出来ました。もちろん、Hamlog50の関数はextern "C" や__stdcall を付けたHamlog50.hを作成しての話ですが。
> やっと安心して続けられます。スタックOverなんて心配で本気になれませんでした。ではまたご指導ください。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: enum freq_tag のMAXBAND SATELLITEの件
588
2014/10/02(Thu) 21:32:08
JA9AOB 銅子
>
> あれー? なぜか間違ってたみたいです。
> 以下のとおりお願いします。
>
> enum freq_tag { 
>  X19MHZ,
>  X35MHZ, //3.5MHz~3.8MHz
>  X7_MHZ,
>  X10MHZ,
>  X14MHZ,
>  X18MHZ,
>  X21MHZ,
>  X24MHZ,
>  X28MHZ, // 28MHz ~ 29MHz
>  X50MHZ,
>  X144MHZ,
>  X430MHZ,
>  X120MHZ,
>  X240MHZ,
>  X560MHZ,
>  SATELLITE,
>  MAXBAND };

些細な事で申し訳ありません。こちらで直して使えばいいだけですが。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: enum freq_tag のMAXBAND SATELLITEの件
587
2014/10/02(Thu) 19:07:12
JG1MOU浜田
> Hamlog50の FreqPCheck()で得る結果が
> enum freq_tag の中で、SATELLITE とMAXBAND の関係がどうしても逆の結果になるような気がするのですが、如何でしょうか。
>
> 0.135 0.500 等を入れると 16 
> 145/435 435/145 等で   15 
> が返ってくるのですが。これでいいのですか???。

あれー? なぜか間違ってたみたいです。
以下のとおりお願いします。

enum freq_tag { 
 X19MHZ,
 X35MHZ, //3.5MHz~3.8MHz
 X7_MHZ,
 X10MHZ,
 X14MHZ,
 X18MHZ,
 X21MHZ,
 X24MHZ,
 X28MHZ, // 28MHz ~ 29MHz
 X50MHZ,
 X144MHZ,
 X430MHZ,
 X120MHZ,
 X240MHZ,
 X560MHZ,
 SATELLITE,
 MAXBAND };
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop