HAMLOG プログラム開発室


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

Re: hdb append 時の DX Falg
800
2017/08/04(Fri) 08:57:53
JA2BQX 太田
浜田さん、度々ありがとうございます。出来ました。

> 文字列ではなく数値の代入です。

StrPcopy() にこだわっていました。文字列では無いのでStrPcopy() は使えない、 Hi

> Th.QSO.Flag := 8; // Pascal <== これだとエラーになる。

Th.QSO.Flag1: = 8;  <== これだとエラーにならない。DXフラグにレ点が付く。 OK

StrPCopy(Th.QSO.Calls,thw_call); の書式にばかりこだわっていましたが
Th.QSO.Calls:=thw_call; でもテストしてOKでした。
どちらでも良いのでしょうが何か差が出るでしょうか?


Pascal 講座みたくなってしまいましたが、もう一つ教えて下さい。

function HamlogOpen(Func: Pointer; var Th: TThLog; const fname: PChar; const isComp: Integer): Integer;

Hamlog.hdb のパスは PChar で与えるとなっています。
そこで hamlog_hdb_path:= 'C:\Hamlog\Hamlog.hdb'; の時に

var
buffs: array [0..255] of Char;

Begin
StrPCopy(buffs,hamlog_hdb_path);

sd := HamlogOpen(nil, Th, @buffs[0], 0); ...としても転送されません。

Hamlog.hdb のパスを直接 sd := HamlogOpen(nil,Th, 'C:\Hamlog\Hamlog.hdb', 0); とするのでは無くて
変数で指定するにはどう書けば良いのでしょうか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: hdb append 時の DX Falg
799
2017/08/04(Fri) 07:07:06
JG1MOU 浜田
> 浜田さん、ありがとうございます。
>
> > Th.QSO.Flag := 8;
>
> まだつまずいています。
>
> StrPCopy(Th.QSO.Flag,8); でも StrPCopy(Th.QSO.Flag:=8); でもエラ-。

え? 太田さんらしくない勘違いですね。
文字列ではなく数値の代入です。

Flag は、16ビットの整数です。文字列ではありません。

Th.QSO.Flag := 8; // Pascal
Th.QSO.Flag = 8  ' VB
Th->QSO.Flag = 8; // C言語
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: hdb append 時の DX Falg
798
2017/08/04(Fri) 05:27:44
JA2BQX 太田
こんにちは。
Hwnd2 := SendMessage(Hwnd1, WM_COPYDATA, Form1.Handle, LPARAM(@cds));  の方は

.... callsign から順にセットしてから
ttmp:= ttmp + thw_rkm2 + #$0D;
ttmp:= ttmp + '' + #$0D;
ttmp:= ttmp + '8' + #$0D; で出来ました。

このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: hdb append 時の DX Falg
797
2017/08/03(Thu) 21:59:17
JA2BQX 太田

浜田さん、ありがとうございます。

> Th.QSO.Flag := 8;

まだつまずいています。

StrPCopy(Th.QSO.Flag,8); でも StrPCopy(Th.QSO.Flag:=8); でもエラ-。

Hwnd2 := SendMessage(Hwnd1, WM_COPYDATA, Form1.Handle, LPARAM(@cds));
で送る時はどう書いたら良いですか。
ttmp:= ttmp + '8' + #$0D; //転送されない。

TH.QSO. として出てくる項目リストには var Flag1 : Word があります。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: hdb append 時の DX Falg
796
2017/08/03(Thu) 21:38:33
JG1MOU浜田
> [FLAG 2 DXの場合8~10 数値で保存] とありますが
> StrPCopy(Th.QSO.Flag,'8'); とかでは書き込まれないようです。

Th.QSO.Flag := 8;

です。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
hdb append 時の DX Falg
795
2017/08/03(Thu) 20:10:19
JA2BQX 太田

こんばんは。
JT65 の HB9HQX 版のソース修正で直接 Hamlog へQSOデータの転送する
基本機能のテストは完了しました。
過去ログにも HAMLOG50.txt にも説明は無いように思うので質問させて下さい。
Free Pascal で、

sd := THW_append(Th, IsQSOdata, mes); を使用時に

StrPCopy(Th.QSO.Calls,'JA2BQX'); で各項目をセットして Hamlog.hdb に直接書き込む際に
DX Flag を 0 や 8 にするにはどうしたら良いでしょうか?

[FLAG 2 DXの場合8~10 数値で保存] とありますが
StrPCopy(Th.QSO.Flag,'8'); とかでは書き込まれないようです。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: lazarus-1.6.4 , Pascal
794
2017/08/02(Wed) 11:00:26
JA2BQX 太田

長野さん、お手数をお掛けしました。

> 解決なさったようで安心いたしました。

階段を1段登れました。 VB6 ( もう長く VB2010 ですが ) と違って変数のスコープで悩まされます。グローバル変数、関数になる積りが別の *.pas で認識してくれなかったり。
IF 文、 For 文の制御構造も長く VB 環境だったので思うように行きません、 Hi

別に Pascal に乗り換える訳では無いのですが、 JTDX , WSJT-X のソースも修正、コンパイルにも挑戦したいと
思っていますがまだこちらはウインドウ( Form1 等 )を修正したりが反映されるかのテストもまだです。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: lazarus-1.6.4 , Pascal
793
2017/08/02(Wed) 10:04:13
je6lao
解決なさったようで安心いたしました。

'hamlog50.pas'のpathを通し、usesに追加しておけば、
THDLL2VB.DLLは使わなくてもいいのではないでしょうか。


> そもそも THDLL2VB.DLL はVB用なので SetThBuffer を使う殊に問題がある?
>
> SetThBuffer の定義、使い方が間違えている?
>
> あれこれ考えている内に下記のテストをしたらOKでした。
>
> StrPCopy(Th.QSO.Calls,'JA2BQX'); で全項目をセットして
> sd := THW_append(Th, IsQSOdata, 0); でエラーは出なくてコンパイル成功、メインウインドウも出て [転送]ボタンを押して
> Hamlog に転送されました。
>
> ありがとうございました。 お騒がせしました。
> 後は cty.dat を分解しコールサインから Entity を取得し Hamlog の code を確定する処理を追加します。
>  
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: lazarus-1.6.4 , Pascal
792
2017/08/02(Wed) 07:39:44
JA2BQX 太田

そもそも THDLL2VB.DLL はVB用なので SetThBuffer を使う殊に問題がある?

SetThBuffer の定義、使い方が間違えている?

あれこれ考えている内に下記のテストをしたらOKでした。

StrPCopy(Th.QSO.Calls,'JA2BQX'); で全項目をセットして
sd := THW_append(Th, IsQSOdata, 0); でエラーは出なくてコンパイル成功、メインウインドウも出て [転送]ボタンを押して
Hamlog に転送されました。

ありがとうございました。 お騒がせしました。
後は cty.dat を分解しコールサインから Entity を取得し Hamlog の code を確定する処理を追加します。
 
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: lazarus-1.6.4 , Pascal
791
2017/08/02(Wed) 05:32:39
JA2BQX 太田

長野さん、こんにちは。ご無沙汰しています。 回答ありがとうございます。


> Hamlog起動時は期待通りにデータが転送できていて、Hamlog未起動時に動作しないのなら、Hamlogの起動に問題があるのではないでしょうか。

今回は Hamlog未起動の状態で転送したいです。

> Hamlog未起動時は、
> 1.HamlogOpenで起動。
> 2.SetThBufferでデータ転送
> という手順なのでしょうか?

「1.HamlogOpenで起動。」は無い状況での動作です。

> 2.SetThBufferをコメントアウトしたとき、Hamlogは正常に起動しますか。また、データ入力画面も開いていますか?

SetThBufferをコメントアウトしたとき、ソフトからはHamlogは起動させません。
THW_append() にて Hamlog.hdb に直接QSOデータの追加をしたいので。

> sd := HamlogOpen(nil, Th, 'C:\Hamlog\Hamlog.hdb', 0);
>
> で、sdにSUCCESSが戻ってきていますか。この判定が無いようですが大丈夫ですか。

sd は ゼロ が戻ってきています。

Hamlog50.bas には下記の記載があるので大丈夫と思います。
' 各関数が返すエラーナンバー
Public Const SUCCESS = 0 ' 成功

> 正常に起動しているのであれば、
> 1.起動してからSetThBufferで書き込むまでに、waitは必要ないのでしょうか。Hamlogが完全に起動してからSetThBufferで転送していますか?

Hamlog が起動しデータ入力画面も開いている時には HamlogMs.txt に記載のある
cmmd = 15
●コマンドを数値で指定し、Turbo HAMLOG/Winの入力ウインドウに文字列を送る...でやっています。

sd := HamlogOpen(nil, Th, 'C:\Hamlog\Hamlog.hdb', 0); の前に
sc:= SetDbsShare(1); を追加しましたが、やはりSetThBufferでエラーが出ます。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop