HAMLOG プログラム開発室


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

Re: PythonからHAMLOG DBを操作する
1086
2024/12/29(Sun) 10:38:11
JK1NBV 倉部
JI1JDI 神宮様

ブログの(4)を参考にDBのアップデートもできました。
ありがとうございます。

HAMLOG50.Hにある下記の定数も提示しておいた方が良いかも知れません。
とくに、4番目のUpdateで、突然 KAKUNIN_NOが出てきますので。

Pythonで扱えるようになり、簡単にプログラムが開発できるようになり大変助かっています。

# HAMLOG50.Hで定義されている定数をPython用に書き換えたもの
WKD_STAT = 45
#
HAMLOG.MSTの45バイト目から4バイト
IsQSOdata =
16
IsMASdata =
32
DbsCallDX =
IsQSOdata

#
CALL
DbsCodeDX =
(1 | IsQSOdata)
#
CODE
MasCodeDX =
(2 | IsMASdata)
#
CODE

M1NDX
MasFCodeDX =
(3 | IsMASdata)
#
FLG+CODE
M2NDX
MasFHedEDX =
(4 | IsMASdata)
#
FLG+HED+ERIA
DbsGlidDX =
(5 | IsQSOdata)
#
GL

D3NDX
DbsNoNDX =
(8 | IsQSOdata)
#
NONDX_S
MasNoNDX =
(9 | IsMASdata)
#
NONDX_M
isDXQSO =

8
isCQ_CALLED =
16
Chk1_Checked =
32
Chk2_Checked =
64
DX_SKIP = 256

#
501B 以上をスキップ
DUP__CHECK = 512

#
該当データは複数あるか?








#
Key[0]==0 で帰れば複数あり
Top2Flag_43 =
43

#
flag1の位置まで
SUCCESS =
0

#
成 功
SUCCESS_ = 1

#
成功・書き換えや変更あり
NODBF =
2

#
TDBFhでない
NONDX =
3

#
NDXでない
NODBT =
4

#
DBTでない
NOPEN =
5

#
オープンできない・されていない
NOMEM
= 6

#
メモリーが確保できない
R_IOERR = 7

#
インデックスリードエラー
W_IOERR = 8

#
インデックスライトエラー
TOLRG
= 9

#
ブロックが大きすぎる
DBFEOF = 10

#
TDBFhの終わり
DBFBOF = 11

#
TDBFhのはじめ
NDXEOF = 12

#
NDXの終わり
NDXBOF = 13

#
NDXのはじめ
OUTRG =
14

#
指定番号が範囲外
NOSYC =
15

#
TDBFh と NDX が不整合
NOSET =
16

#
キーポインタが未設定
NOKEY =
17

#
キーが無い
MAYBE =
18

#
キーが部分一致
OUTSZ =
19

#
文字列が長すぎる
CFAIL =
20

#
変換失敗

RD_ERR = 21

#
ディスクリードエラー
WR_ERR = 22

#
ディスクライトエラー
MKIDXERR = 23
#
インデックス構築エラー
NO_DBR = 24

#
データが不整合
NOTEMP = 25

#
作業ファイルが作れない
NO_KEY = 26

#
キー表現式が不正
NO_STK = 27

#
スタックオーバーフロー
EMM_ERR =
28

#
EMSメモリが確保できない
NO_SORT =
29

#
不正なソート、又は重複

LDBF_NOPEN = 40
#
HAMLOG.DBSがオープンできない
MDBF_NOPEN = 42
#
HAMLOG.MSTがオープンできない
KAKUNIN_NO =
0X0010
#
データ登録時確認メッセージ無し
IsQSOdata = 16

> JI1JDI 神宮様
>
> PythonでHamlogをアクセスする情報ありがとうございます。
> この掲示板に5月頃に私の投稿がありますように、Pythonでできず、Delphiでトライしておりました。
>
> Rmk1については、
> rmk1 = ctypes.cast(log.Qso.Rmk1, ctypes.c_char_p).value.decode('cp932')
> で表示できることも確認しました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: PythonからHAMLOG DBを操作する
1085
2024/12/24(Tue) 08:11:38
JK1NBV 倉部
JI1JDI 神宮様

PythonでHamlogをアクセスする情報ありがとうございます。
この掲示板に5月頃に私の投稿がありますように、Pythonでできず、Delphiでトライしておりました。

Rmk1については、
rmk1 = ctypes.cast(log.Qso.Rmk1, ctypes.c_char_p).value.decode('cp932')
で表示できることも確認しました。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

PythonからHAMLOG DBを操作する
1084
2024/12/12(Thu) 06:14:41
JI1JDI 神宮
HAMLOG関連ソフトウェア開発者の皆さま、はじめまして。

Turbo HAMLOGにはいつもお世話になっております。ありがとうございます。

Turbo HAMLOGのデータベースをPythonから操作できないかと、いろいろ試しているものを
下記のブログに掲載しています。

ネット上ではあまり情報が見つからなかったので、こちらで情報を共有させていただき、
情報交換などできましたら幸いです。


Turbo HAMLOGのデータをPythonで操作する(1)
https://ji1jdi.hatenablog.com/entry/2024/12/05/211406

Turbo HAMLOGのデータをPythonで操作する(2)
(URL省略)

Turbo HAMLOGのデータをPythonで操作する(3)
(URL省略)

Turbo HAMLOGのデータをPythonで操作する(4)
(URL省略)
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: C++ builder でTHW_readしましたが・・・
1083
2024/09/15(Sun) 22:06:58
JG1MOU浜田
#pragma指令の仕様が変わったのでしょうかね。私は古いの使ってますので。

構造体アライメントは、バイトアライメントとしてください。
ファイルヘッダをそのまま構造体に読み込んだりしてますので、ワードアライメントなどでは不都合があります。

> どうも、C++ builder 12 では、hamlog50.h で、__BORLANDC__ が定義されてるのですが、
> #pragma pack(1)
> で指定しないと構造体のアライメントがhamlogのデータに合うようにならないようでした。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: C++ builder でTHW_readしましたが・・・
1082
2024/09/14(Sat) 08:56:58
JK1DVP
どうも、C++ builder 12 では、hamlog50.h で、__BORLANDC__ が定義されてるのですが、
#pragma pack(1)
で指定しないと構造体のアライメントがhamlogのデータに合うようにならないようでした。

> C++ builder でturbo hamlog のデータを読むプログラムを書こうとしています。
> hamlog50.dllを呼び出して、HamlogOpenをしてTHW_readをするところまでできたのですが、下記のように
> TThLog thlog;
> ret=HamlogOpen(NULL,&thlog,fname,0);..
> .
> ret=THW_read(&thlog,count,0);
> のようにcount(>=1) のレコードを読みました。
> if (ret == SUCCESS )
> { ここで、
> thlog.Qso.Calls,thlog.Qso.Date, などは正しく読めているのですが、
>
> thlog.Qso.Freq などのchar ポインタで定義されているものを読もうとするとaccess violation となってしまいます。
>
> また、thlog.Qso.Rmk1Lenなどの変数の意味が分からず困っているところです。どなたかご存じのかた、アドバイスをいただけないでしょうか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

C++ builder でTHW_readしましたが・・・
1081
2024/09/13(Fri) 21:04:42
JK1DVP
C++ builder でturbo hamlog のデータを読むプログラムを書こうとしています。
hamlog50.dllを呼び出して、HamlogOpenをしてTHW_readをするところまでできたのですが、下記のように
TThLog thlog;
ret=HamlogOpen(NULL,&thlog,fname,0);..
.
ret=THW_read(&thlog,count,0);
のようにcount(>=1) のレコードを読みました。
if (ret == SUCCESS )
{ ここで、
thlog.Qso.Calls,thlog.Qso.Date, などは正しく読めているのですが、

thlog.Qso.Freq などのchar ポインタで定義されているものを読もうとするとaccess violation となってしまいます。

また、thlog.Qso.Rmk1Lenなどの変数の意味が分からず困っているところです。どなたかご存じのかた、アドバイスをいただけないでしょうか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: HAMLOGOPENで ファイルがオープンできませんエラー
1080
2024/08/08(Thu) 08:42:15
JK1NBV 倉部
浜田様

  Hamlog50.pas のChar もAnsiCharに変更したところ、動きました。
  ありがとうございました。


> 浜田様
>
>  ありがとうございます。
>  起動して、データを取り込む所はできました。
>  しかし、DBから取り出された文字コードが勝手に変換されているらしく、?ばかりが表示される状態です。
>  文字コードの取り扱いを勉強してみます。
>
>
> > Delphi 12 では、Unicodeが標準だと思います。
> > PChar は 暗黙のうちに PWideCharと見なされるはずです。
> > 一方、HAMLOGでは昔ながらのShiftJISだったりします。
> >
> > Hamlog50.pas 内の宣言を書き換える必要があります。
> > PChar はすべて PAnsiCharに書き換えてください。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: HAMLOGOPENで ファイルがオープンできませんエラー
1079
2024/08/07(Wed) 17:30:12
JK1NBV 倉部
浜田様

 ありがとうございます。
 起動して、データを取り込む所はできました。
 しかし、DBから取り出された文字コードが勝手に変換されているらしく、?ばかりが表示される状態です。
 文字コードの取り扱いを勉強してみます。


> Delphi 12 では、Unicodeが標準だと思います。
> PChar は 暗黙のうちに PWideCharと見なされるはずです。
> 一方、HAMLOGでは昔ながらのShiftJISだったりします。
>
> Hamlog50.pas 内の宣言を書き換える必要があります。
> PChar はすべて PAnsiCharに書き換えてください。
>
>
> > コンパイルで、以下の2つの警告・エラーが表示され、コンパイルできません。
> >
> > [dcc32 警告] Test1.dpr(49): W1057 文字列の暗黙のキャスト ('AnsiChar' から 'string')
> > [dcc32 エラー] Test1.dpr(53): E2010 'PWideChar' と 'PAnsiString' には互換性がありません
> >
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: HAMLOGOPENで ファイルがオープンできませんエラー
1078
2024/08/07(Wed) 08:53:07
JG1MOU浜田
Delphi 12 では、Unicodeが標準だと思います。
PChar は 暗黙のうちに PWideCharと見なされるはずです。
一方、HAMLOGでは昔ながらのShiftJISだったりします。

Hamlog50.pas 内の宣言を書き換える必要があります。
PChar はすべて PAnsiCharに書き換えてください。


> コンパイルで、以下の2つの警告・エラーが表示され、コンパイルできません。
>
> [dcc32 警告] Test1.dpr(49): W1057 文字列の暗黙のキャスト ('AnsiChar' から 'string')
> [dcc32 エラー] Test1.dpr(53): E2010 'PWideChar' と 'PAnsiString' には互換性がありません
>
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: HAMLOGOPENで ファイルがオープンできませんエラー
1077
2024/08/06(Tue) 22:25:50
JK1NBV 倉部
浜田様

コンパイルで、以下の2つの警告・エラーが表示され、コンパイルできません。

[dcc32 警告] Test1.dpr(49): W1057 文字列の暗黙のキャスト ('AnsiChar' から 'string')
[dcc32 エラー] Test1.dpr(53): E2010 'PWideChar' と 'PAnsiString' には互換性がありません


> こんな感じではいかがでしょうか?
>
> var
> retF: Integer;
> dbpath: AnsiString;
> begin
> dbPath := 'C:\HAMLOG\HAMLOG.hdb';
> retF := HamlogOpen(nil, tth, PAnsiChar(dbPath), 0);
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop