HAMLOG プログラム開発室


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

Re: ファイル・オープン時に Hamlog.hdb のパスを変数にする方法
880
2020/02/21(Fri) 21:53:47
JG1MOU浜田
> lstrcpy(fname, m_hamlogPath); で良いのかな? 明日朝、試してみます。

Win32-APIなので、
LPTSTR lstrcpy(lpszString1, lpszString2);
・・・というプロトタイプなんですが、使えるかどうかわかりません。

HAMLOGでは、ファイル操作はCの標準関数ではなくWin32-APIを使っています。
ファイルを開く、ファイルを作成では、CreateFile();

バイナリ、テキストの読み込みは、ReadFile();

同じく書き込みは、WriteFile();

閉じるのは、CloseHandle();

標準関数の fopen();も、Windows上で使う限りライブラリ内部ではCreateFile();を呼び出しているんですよね。

ちなみに、DOS版HAMLOGでも、標準ライブラリは使わず、
_asm mov ax,3d02h
_asm int 21h
・・・って感じでファンクションコールでした。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: ファイル・オープン時に Hamlog.hdb のパスを変数にする方法
879
2020/02/21(Fri) 21:19:54
JA2BQX 太田
浜田さん、ありがとうございます。

> すみません。QString って、どんな型なのか知りません。

Qt なので QString 、String 型です。


> FILE *fp;
> char fname[MAX_PATH];
> lstrcpy(fname, "C:\\Hamlog\\Hamlog.hdb"); <== ここに変数を使いたいのです。
> fp = fopen( fname, "rb" );

lstrcpy(fname, m_hamlogPath); で良いのかな? 明日朝、試してみます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: ファイル・オープン時に Hamlog.hdb のパスを変数にする方法
878
2020/02/21(Fri) 21:13:42
JG1MOU浜田
> logqso.h に QString m_HamlogHdb_path; を記載。

すみません。QString って、どんな型なのか知りません。
CStringならわかりますけど。


> FILE *fp;
> char *fname = "C:\\Hamlog\\Hamlog.hdb";
> fp = fopen( fname, "rb" );

こちらは昔ながらのC言語ですね。これならわかります。
fname に定数のポインタをコピーしたのでは、パスの内容が変更できませんね。

こんな感じでしょうか。
FILE *fp;
char fname[MAX_PATH];
lstrcpy(fname, "C:\\Hamlog\\Hamlog.hdb");
fp = fopen( fname, "rb" );
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
ファイル・オープン時に Hamlog.hdb のパスを変数にする方法
877
2020/02/20(Thu) 12:37:30
JA2BQX 太田

JTDX の 64Bit 版のビルドをしています。
Hamlo50.DLL が 64Bit 版では使えないので Hamlog.hdb をバイナリーで読み書きしようとしています。

ファイル・オープン時に Hamlog.hdb のパスを変数にする方法を教えて下さい。

logqso.h に QString m_HamlogHdb_path; を記載。

現在は「参照」ボタンにより JTDX.ini にパスを変更、保存は出来ています。
logqso.ui に m_HamlogHdb_path が表示される事は確認済。

logqso.cpp にて JTDX.ini より Hamlog.hdb のパスを取り込み。
JTDX.ini には HamlogHdbDir=C:/HAMLOG/Hamlog.hdb と保存されている。



パスを固定にしてなら動作していますが、m_HamlogHdb_path にするとビルド・エラーが出ます。

FILE *fp;
char *fname = "C:\\Hamlog\\Hamlog.hdb";
fp = fopen( fname, "rb" );

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

Re: 64Bit版にて Hamlog50.dll オープンエラー
876
2020/01/31(Fri) 06:51:33
JA2BQX 太田
こんにちは。
浜田さん、ありがとうございます。

> 考えてみると、32ビットのポインタを渡すべきところを、64ビット
> のポインタを渡すことになるので、無理なような気がします。
>
> アドレス空間が根本的に違うので、型キャストしてもだめなような
> 気がします。

以前に WSJT-X が ver 1.9になった時にソースのフォルダ構造が変更になり
Hamlog50.h の読み込みでエラーになった時に
Hamlog50.h と Hamlog50.DLL を使用しないソースを書いてあったのを
探し出して来ました。
このソースを今回の64bit版に組み込みビルド出来る様になりました。
お手数をお掛けしました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 64Bit版にて Hamlog50.dll オープンエラー
875
2020/01/30(Thu) 20:27:18
JG1MOU浜田
> > 基本的に、Windowsの仕様みたいです。
> > 32ビットでリビルドはできますか?
>
> はい、64Bit のPCで 32ビット版のリビルドは出来てHPに公開しています。
> 同じソースを64Bit版のビルド環境ではエラーになっています。

考えてみると、32ビットのポインタを渡すべきところを、64ビット
のポインタを渡すことになるので、無理なような気がします。

アドレス空間が根本的に違うので、型キャストしてもだめなような
気がします。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 64Bit版にて Hamlog50.dll オープンエラー
874
2020/01/27(Mon) 21:28:19
JA2BQX 太田
浜田さん、こんばんは。ありがとうございます。

> 基本的に、Windowsの仕様みたいです。
> 32ビットでリビルドはできますか?

はい、64Bit のPCで 32ビット版のリビルドは出来てHPに公開しています。
同じソースを64Bit版のビルド環境ではエラーになっています。

ご紹介して頂いたページは後程、見させて頂きます。

Hamlo50.DLL を使わないで直接 Hamlog.hdb に追記するコードをC++で書くのは大変なので。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: 64Bit版にて Hamlog50.dll オープンエラー
873
2020/01/27(Mon) 21:17:34
JG1MOU浜田
> Hamlog50.dll は JTDXのソース・フォルダの中と jtdx.exe のあるフォルダの中にも置いてあります。
> Hamlog50.dll は64Bit版のビルドには使用出来ないのでしょうか?

基本的に、Windowsの仕様みたいです。
32ビットでリビルドはできますか?

https://social.msdn.microsoft.com/Forums/ja-JP/e7ed299e-7e94-4fba-ab7a-69ebb65c419a/64bit-29872226591239112398-32bit-12450125031252212391-loadlibrary?forum=vcgeneralja


https://blog.techlab-xe.net/64bit%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%8B%E3%82%8932bit%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%B8dll%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3/
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
64Bit版にて Hamlog50.dll オープンエラー
872
2020/01/27(Mon) 08:51:10
JA2BQX 太田

こんにちは。お世話になっております。
JTDXの64Bit版が公開されました。苦労はしましたがどうにか64Bit版のビルド環境を構築出来ました。
ビルドも出来ました。

JTDXのソースを修正して Hamlog にQSOデータを直接転送する事を既にJTDXの32Bit版では完成しています。
このソースを64Bit版でビルドしています。ビルドは成功しますが
jtdx.exe を起動して [ Log QSO ] ウインドウのOKボタンをクリックするとソースの下記の部分のエラーが表示されます。

HINSTANCE hInstDll = LoadLibraryA("Hamlog50.dll");
if (hInstDll == NULL)
{ QMessageBox::critical(0, "Critical", "Can not open Hamlog50.dll");
// error!
} else

{
Hamlog50.dll は JTDXのソース・フォルダの中と jtdx.exe のあるフォルダの中にも置いてあります。
Hamlog50.dll は64Bit版のビルドには使用出来ないのでしょうか?
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: HAMLOG連携のQSLmakerはありますか?
871
2020/01/25(Sat) 17:31:26
JA2BQX 太田

こんばんは。

> 電子QSLを検索すると昔HAMLOG連携のQSLmakerなるソフトがあって、それでQSLカードが作れて、Eメールで送付している人がいるそうなのですが、入手先等の情報をお持ちの方はいませんか?

Web検索すると「有料ソフト」としての記事がありますね。

もう1件は

http://hamlog.no.coocan.jp/mou/index.html

上記の「HAMLOG最新版」にリンクの中ほど位に。


------------ 引用開始 -------------------
Ver5.07 2007/01/17
・電子QSLサムネイルで修正ボタンをクリックすると、QSLmaker(by JE6LAO)が
 起動するようにしました。QSLmakerが存在しなければ、他の画像閲覧ソフトが
 起動します。
------------ 引用終了 -------------------


まずはWeb検索をして探して見ると良いですよ。
投稿者の「お名前」もお願いします。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop