Back
新着表示
タイトル
記事No
投稿日
投稿者
: Re: Pascal UTC to JST
: 810
: 2017/08/05(Sat) 09:25:19
: JA2BQX 太田
浜田さん、こんにちは。 ありがとうございます。
> 何が解らないのかが解らないのですが、HAMLOGでは、Windows-APIを > 使って変換してます。 試していたサンプルが複雑過ぎて宣言が多くて現在のソースに追記するとその場所では不適切の様でコンパイルエラーが出たりしました。
もっと易しサンプルを...と思っていたら見つけてテストOK、
ここで掲示板を見たら浜田さんの回答がありました。
私がテストしたのは下記のページの
function IncMonth(const DateTime: TDateTime; NumberOfMonths: Integer = 1) :TDateTime;
「月に1を追加します。
http://www.w3ii.com/ja/pascal/pascal_date_time.html 「月に1を追加」があるなら「時間に追加」もあるだろうと検索したら
下記がありました。
function IncHour(const AValue: TDateTime; const const AValue: TDateTime; const ANumberOfHours:Int64 ):TDateTime;
https://www.freepascal.org/docs-html/rtl/dateutils/inchour.html 浜田さんが提示してくれたサンプルは今から試します。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: Pascal UTC to JST
: 809
: 2017/08/05(Sat) 09:02:50
: JG1MOU浜田
> Pasacl 講座の続きですがお願いします。 > > UTC を JST に変換する処理でつまずいています。 > VB2010 ではサンプルも多くあり既に出来ていますが Pasacl の例が少ないようで。 > > Delphi のサンプルはそこそこありますが宣言の procedure 文の記載箇所が正しく無いようでエラーで落ちてしまったり > 流用出来ないでいます。 何が解らないのかが解らないのですが、HAMLOGでは、Windows-APIを 使って変換してます。 var Systm: TSYSTEMTIME; Filtm1, Filtm2: TFILETIME; begin if SystemTimeToFileTime(Systm, Filtm1) and // LocalFileTimeToFileTime(Filtm1, Filtm2) and // JST => UTC FileTimeToLocalFileTime(Filtm1, Filtm2) and // UTC => JST FileTimeToSystemTime(Filtm2, Systm) then 変換完了!; end;
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Pascal UTC to JST
: 808
: 2017/08/05(Sat) 08:40:16
: JA2BQX 太田
Pasacl 講座の続きですがお願いします。 UTC を JST に変換する処理でつまずいています。 VB2010 ではサンプルも多くあり既に出来ていますが Pasacl の例が少ないようで。 Delphi のサンプルはそこそこありますが宣言の procedure 文の記載箇所が正しく無いようでエラーで落ちてしまったり 流用出来ないでいます。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: hdb append 時の DX Falg
: 807
: 2017/08/05(Sat) 08:38:38
: je6lao
太田さん、Delphiはどのバージョンをお使いですか? IDEでTh.と打った時点で次の選択肢の一覧が表示されませんか。 次にQを押すと一覧がQsoのみになりそれを選択し .を押すとまた一覧が表示されます。そこにFlag1があります。構造体の中にFlagはありませんので、エラーになると思います。 構造体がすでに宣言されていれば、そのツリーにしたがって入力補助の選択肢が出るのですが。 ちなみにDelphi6 personal を使っています。> > 文字列ではなく数値の代入です。 > > 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でした。 > どちらでも良いのでしょうが何か差が出るでしょうか? thw_callの型は何でしょうか? > Th.QSO.Calls:=thw_call; でもテストしてOKでした。 こちらではNGでした。 thw_callがstringでもarray[0..20] of charでもNGでした。 stringにして、StrPCopyはOKでした。 なので、StrPCopyをお勧めします。 var a1, a2: array[0..8] of char; begin a1 := a2; end; たしか、これはOKでした。 a1とa2を同時に宣言するとOKです。 型のキャストは本当に面倒ですね。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: hdb append 時の DX Falg
: 806
: 2017/08/05(Sat) 08:34:00
: JA2BQX 太田
こんにちは。 ありがとうございます。> sd := HamlogOpen(nil, Th, buffs, 0); > でいいのではないでしょうか。 はい、これでも行けました。> ただし、buffsが255文字なのでこれを超えるファイル名になると > エラーが出ると思います。 倍の 511 にしてもOKのようなので buffs を使う時は増やしておきます。 昨日の問題が解決して一安心ですが、まだ課題がありまして、別スレッドにします。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: hdb append 時の DX Falg
: 805
: 2017/08/05(Sat) 08:05:47
: je6lao
すでにうまくいっているよう時に、前に戻りますが、 sd := HamlogOpen(nil, Th, buffs, 0); でいいのではないでしょうか。 ただし、buffsが255文字なのでこれを超えるファイル名になると エラーが出ると思います。> 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); とするのでは無くて > 変数で指定するにはどう書けば良いのでしょうか?
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: hdb append 時の DX Falg
: 804
: 2017/08/05(Sat) 07:13:08
: JA2BQX 太田
長野さん、ありがとうございます。 おかげさまでできました。> GetMem(), FreeMem() を追加して文字数に応じたメモリを確保する必要があるようです。どうでしょうか。 そのようですね、実際には hdb のパスを ini にファイルから hamlog_hdb_path に取っているので 下記の様にして上手く行きました。 GetMem(fname, length(hamlog_hdb_path) + 1); StrPCopy(fname, hamlog_hdb_path); sd := HamlogOpen(nil, Th, fname, 0);
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: hdb append 時の DX Falg
: 803
: 2017/08/04(Fri) 22:14:24
: je6lao
こんばんは。 GetMem(), FreeMem() を追加して文字数に応じたメモリを確保する必要があるようです。どうでしょうか。 var hd_file: string; fname: PChar; begin hd_file := 'c:\hamlog\hamlog.hdb'; GetMem(fname, length(hd_file) + 1); StrPCopy(fname, hd_file); sd := HamlogOpen(nil, Th, fname, 0); FreeMem(fname); end;
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: hdb append 時の DX Falg
: 802
: 2017/08/04(Fri) 17:51:20
: JA2BQX 太田
長野さん、こんにちは。ありがとうございます。> StrPcopy(fname: PChar, hdb_file: string) ここでコンパイルは通るけど実行時にエラーで落ちます。 例外クラス External.SIGSEGV を発生させました...。
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!
タイトル
記事No
投稿日
投稿者
: Re: hdb append 時の DX Falg
: 801
: 2017/08/04(Fri) 15:08:15
: je6lao
こんにちは、長野です。 StrPcopy(fname: PChar, hdb_file: string) なのでシンプルにファイル名の変数をstringで宣言し そこにファイル名を代入すればいいと思います。 ポインタを使う必要があるのでしょうか。 var hdb_file: string; fname: PChar; Begin hdb_file := 'c:\hamlog\hamlog.hdb'; StrPCopy(fname, hdb_file); sd := HamlogOpen(nil, Th, fname, 0); end;
このスレッドは管理者によって ロック されていますので、返信並びに編集は出来ません!