HAMLOG プログラム開発室


新着表示
タイトル
記事No
投稿日
投稿者
参照先
Re: C++ JTDX
839
2018/02/03(Sat) 10:21:08
JA2BQX 太田

浜田さん、お手数をお掛けします。 ありがとうございます。

> エラーとは、コンパイルエラーでしょうか? 実行時エラーでしょうか?

コンパイル時です。

> TThLog log; // スコープ外で宣言し、グローバル変数としておく

今、これを追記しているのですが記載場所が悪い様で赤のアンダーラインが引かれてしまいます。

ソースは下記のリンクの src18.1.0.69.zip で
この中の logqso.h の中に Th527api の中の HAMLOG50.H を追記。
logqso.cpp の中で HamlogOpen() を使おうとしています。

void LogQSO::AppendtoHDB_sub()

{ TThLog log;

char *pfName = "C:\Hamlog\Hamlog.hdb";
if (HamlogOpen(NULL, &log, pfName, 0)==SUCCESS)

{
この様にしてビルドしてみましたが画像の様にワーニングで落ちてしまいました。

https://www.release.jtdx.tech/Windows/Windows%20Source/

ビルドは JTDX や WSJT-X なので JTSDK をインストールしています。
ソースは QtCreator で編集しています。
pagetop
タイトル
記事No
投稿日
投稿者

Re: C++ JTDX
838
2018/02/02(Fri) 20:50:39
JG1MOU浜田
> logqso.cpp に
> Hamlog が起動していない時にQSOデータを THW_append() にて追加したいのですが
> 最初の HamlogOpen(0, TThLog, *p, 0) でエラーが出ます。
> C:\Hamlog\Hamlog.hdb をポインタでセットする必要があると思いますが
> この辺りからのサンプルコードをお願い出来ますか?

エラーとは、コンパイルエラーでしょうか? 実行時エラーでしょうか?
こんな感じですけど。C++ではなく、Cですが。

TThLog log; // スコープ外で宣言し、グローバル変数としておく
char *pfName = "C:\\Hamlog\\Hamlog.hdb";
if (HamlogOpen(NULL, &log, pfName, 0)==SUCCESS)
  オッケー!;
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
C++ JTDX
837
2018/02/01(Thu) 10:49:27
JA2BQX 太田

こんにちは。教えて下さい。

JTSDK で JTDX のソースのビルドにトライしています。

logqso.h に Th527api の HAMLOG50.H を追記してのビルドはOKです。

logqso.cpp に
Hamlog が起動していない時にQSOデータを THW_append() にて追加したいのですが
最初の HamlogOpen(0, TThLog, *p, 0) でエラーが出ます。
C:\Hamlog\Hamlog.hdb をポインタでセットする必要があると思いますが
この辺りからのサンプルコードをお願い出来ますか?

その後はHamlog が起動している時の事もやりたいですが。
 
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: Th527API.zip
836
2018/01/02(Tue) 05:25:27
JA2BQX 太田

浜田さん、早速の修正ありがとうございました。

> さっそく修正しました。
> 入力ウインドウのチェックボックスの説明と定義を加えただけです。

確認しました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: Th527API.zip
835
2018/01/01(Mon) 20:57:34
JG1MOU浜田
> [ Tubo HAMLOG 最新版 ] のページの下記の件ですが
> ダウンロードしたファイル名が Th524api.zip となっています。

JA2BQX太田さん、明けましておめでとうございます。
今年もよろしくお願いします。

あらー、旧ファイルをリンクしてましたね。
さっそく修正しました。
入力ウインドウのチェックボックスの説明と定義を加えただけです。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Th527API.zip
834
2018/01/01(Mon) 17:43:36
JA2BQX 太田

明けましておめでとうございます。
今年もよろしくお願いします。

[ Tubo HAMLOG 最新版 ] のページの下記の件ですが
ダウンロードしたファイル名が Th524api.zip となっています。
内容は HamlogMs.txt にコマンド 30 が追加されているので改修版と思います。
ダウンロード後にリネームすれば実害は無いですがお時間のある時に
修正して頂けるとFBかと思います。
 
○ Th527API.zip HAMLOG50.DLLの仕様書 2017/12/27
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: memcpy()
833
2017/11/10(Fri) 19:25:53
JA7UDE 大庭
浜田さん、こちらこそお世話になっております。そうですか、Borland C++ 5.0をお使いということで、わたしも、簡単なプログラムにはC++ Builder 5.0を使っています。ずいぶん古いものになってしまいましたが、動作が軽くて、なかなか手放せません。memcpyは、領域をオーバーランしたり、コピー元とコピー先が重なっているとまずいのですが、手軽なので、つい使ってしまっています。また、いろいろご指導ください。

73
大庭
JA7UDE
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: memcpy()
832
2017/11/04(Sat) 22:11:39
JG1MOU浜田
> これはコンパイラか標準ライブラリにバグがあるということでしょうか?自分はmemcpy()をよく使うもので、心配になりました。

大庭さん、その節は大変お世話になりました。

これは、私が使っている大昔の Borland C++ 5.02Jでの話です。
なんせ1997年製ですから。Hi

バグではないと思うのですが、最適化の過程でおかしなコードが生成
されているのか、メモリリークなのか、わかりません。
私の場合は、数ヶ月に一度、お目にかかれるかどうかのエラーです。

人によっては、ハムログが落ちてしまうそうですので、動作環境に
よるみたいです。

Visual C++に移植すれば問題なくなるのかもしれませんが、定年後に
時間的な余裕ができたら、遊んでみたいと思ってます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: memcpy()
831
2017/11/04(Sat) 21:39:31
JA7UDE 大庭
浜田さん、こんばんは、

これはコンパイラか標準ライブラリにバグがあるということでしょうか?自分はmemcpy()をよく使うもので、心配になりました。

73
大庭
JA7UDE
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

memcpy()
830
2017/11/04(Sat) 19:22:39
JG1MOU浜田
HAMLOG50.DLLからのエラーでは、コンパイラの最適化によりmemcpy関数
からエラーが出ているような気がしまして、気のせいかもしれません
けど、memcpy()をまったく使わないようにしてみました。
メモリブロックをコピーする関数です。

DOS版のときは、Cのソースコードにアセンブラのストリング命令を
入れて、一気にコピーしていたのですが・・・
 asm sub si, ax
 asm sub di, ax
 asm shr cx, 1
 asm rep movsw  ・・・みたいな・・・

今の32ビットコンパイラでは、別途アセンブラを用意しなければ
ならないので、インラインアセンブラが使えません。

そこで、DWORDにキャストして4バイトずつコピーしてやれば少し速い
かなぁーなんて。 次のように・・・
void __fastcall StrLCopy(char *dest, const char *src, int Count)

{ while (Count >= sizeof(DWORD)) 
{  *(DWORD *)dest = *(DWORD *)src; // 4バイトコピー
  dest += sizeof(DWORD);
  src += sizeof(DWORD);
  Count -= sizeof(DWORD);
 }
 while (Count > 0) { // 残り3バイト以下
  *dest++ = *src++;
  Count--;
 }
 *dest = (char)0x00;}



結果、一億回ほどループさせて呼び出してみると、少し速いような気が
しました。
ま、エラーが出なくなれば、それでよろし。
http://hamlog.no.coocan.jp/mou/index.html

以上、晩酌プログラミングでした。Hi
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop