一括表示
タイトル
記事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" );
...以下省略...
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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" );
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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); で良いのかな? 明日朝、試してみます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事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
・・・って感じでファンクションコールでした。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
参照先
:
Re: ファイル・オープン時に Hamlog.hdb のパスを変数にする方法
:
881
:
2020/02/22(Sat) 10:41:21
:
JA2BQX 太田
:
浜田さん、ありがとうございます。
まだお悩み中........
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
参照先
:
Re: ファイル・オープン時に Hamlog.hdb のパスを変数にする方法
:
882
:
2020/02/24(Mon) 09:37:30
:
JA2BQX 太田
:
こんにちは。
お手数をお掛けしました。何とかビルド出来る様になりました。
// JTDX.ini よりパスを取得。
m_HamlogHdb_path = settings.value("HamlogHdbDir").toString();
その後で、
FILE *file;
char *fname = m_HamlogHdb_path.toUtf8().data();
file = fopen( fname, "rb" );
//処理コード
fclose(file);
Web検索で「QStringからcharポインタを取り出す 」を見つけてコードを借用しました。
同様の事は以前にもテストしたと思うのですが、その時は他の部分も絡んだのかビルドエラーでした。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!