HAMLOG プログラム開発室


新着表示
タイトル
記事No
投稿日
投稿者
参照先
Re: AstRenum (ver 1.0.6 2014/02/21 16:55) ラベルの重複時
432
2014/02/21(Fri) 16:53:12
JP7CZE 川辺

> サンプルの FiveQSO.QSL の様に複数回データ印刷の時には
> 同じ構文をコピーして印刷文の #Print のY位置のみを書き換えれば
> 楽なの同じラベル番号が複数あるものと思います。

なるほど.

> 構文解釈はシーケンシャルで上の行には戻らないルールなので。

了解です.
ラベル行より下には,そのラベル行に飛ぶ命令は出てこない,ということを前提にすればいいわけですね.
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: AstRenum (ver 1.0.6 2014/02/21 16:55) ラベルの重複時
431
2014/02/21(Fri) 16:23:49
JA2BQX 太田
こんにちは。素早い対応ですね。

FiveQSO.QSL の一部分の抜粋ですが
#Goto *1010 <=== ここは *1030 かと。 (他も同じような考え)
          次のデータがあれば --- End of QSO-DATA(2) --- をSkipさせる構文だと思うので。

*1020
#Print 180, 470, "--- End of QSO-DATA(2) ---"
#Exit

*1030
#Readj *1040

サンプルの FiveQSO.QSL の様に複数回データ印刷の時には
同じ構文をコピーして印刷文の #Print のY位置のみを書き換えれば
楽なの同じラベル番号が複数あるものと思います。
構文解釈はシーケンシャルで上の行には戻らないルールなので。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
AstRenum (ver 1.0.6 2014/02/21 16:55) ラベルの重複時
430
2014/02/21(Fri) 16:04:36
JP7CZE 川辺

銅子さん,太田さん,検証ありがとうございます.

(ver 1.0.6 2014/02/21 16:55) ラベルが重複している時に,重複しないようにラベル番号を振り直すことを可能にしました.

チェックボタンでどちらでも対応しました.

ラベル番号の重複に関して,作成者の意図が私にはわからないので,チェックを外せば作成者の意図を尊重,チェックを付ければ意図にかかわらず強制的に重複解消としました.

fiveQSOでやってみましたが,論理的にはあっていそうです.

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

Re: AstRenum とりあえず変換動作確認版です.
429
2014/02/21(Fri) 14:56:14
JA2BQX 太田
こんにちは。
(書き込み時間が長すぎたようでタイミオーバーで戻ったら書き込み内容が消えてしまった)

FiveQSO.QSL でテストして見ました。
*922 や *923 が何回も出てきますが、今回のソフトでは、それらを
*1000 , *1010 .... *1090 , *10100 などのように同じラベル行が
出てこないように書き換えると思っていましたが、そうでは無いのかな。

ここで言うラベル行とは *1010 のみで終わっているような行を指します。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: AstRenum とりあえず変換動作確認版です.
428
2014/02/21(Fri) 14:36:29
JA9AOB 銅子
> とりあえず,動作確認版です.
Ver1.0.5 テストしました。
 詳細は見ていませんが、変換を懸けたもので動作させますと、エラー表示は出なくなりました。何とかいけそうです。

Tks
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: AstRenum とりあえず変換動作確認版です.
427
2014/02/21(Fri) 14:06:16
JP7CZE 川辺

とりあえず,動作確認版です.

(ver 1.0.3 2014/02/21 14:00) ラベル行(*1000)に,ラベルの後,スペース等やコメントがある場合も,スペース/コメントはそのままラベルのみ入れ替えるようにしましたが,一部できないものがあったので,全角スペースを含め,想定内文字の場合であれば入れ替えられるようにしました.
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: (Ver.1.0.3 (2014/02/21 23:56)修正&修正中
426
2014/02/21(Fri) 13:44:24
JP7CZE 川辺

> こちらに移る前に書き込みましたが、Hamlog添付の FiveQSO では同じラベルが何カ所も定義されています。JMP先が前向きの最初に見つかったラベルにJMPするとすれば、これもありでしょうか。これに対処しようとするとさてどうしましょうか。でも出来そうですね。

ラベルの重複でもHAMLOGはちゃんと動いているのはなぜかと考えたら,ラベルの前方検索で最初に一致で認識する,ということかなと.

現在も前方検索で,やっていますので,たぶんこのままでOKなのかと思います.

> 呼び出しのないラベルが出てきたときには、これは、下から呼び出されることも無いので、無視するか、コメントアウトでも構いませんね。
> 呼び出しのあるラベルも、呼び出し側とのラベル合わせが済めば、下から呼ばれることは無いので、そのラベルの処理も一段落で終わりでしょうね(テーブルを用意しているなら削除)。こんなのでは処理できませんかね。すでに考慮済みなら、お節介ですね。失礼します。

了解です.対応したいと思いますが,その前に,もうちょっとすべきことがあるので,その後で考えてみます.

私の単純な頭では想定外のことも,銅子さんからスクリプトいただいて,たくさん参考になりました.ありがとうございます.
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: (Ver.1.0.3 (2014/02/21 23:56)修正&修正中
425
2014/02/21(Fri) 13:39:24
JP7CZE 川辺

> こんにちは。
>
> インストールの初期フォルダは C:\Hamlog\AstRenum\ とかが良いかと。
> Win7やWin8のユーザーが多い最近では C:\Program Files\ の中は
> 避けた方が良いかと思います。

了解です.私はいまだに XP +VB6 の中世の環境なので(^^;

> 変換元、変換後の表示を左右の両方に同時に表示させ、最初のラベルのある行を
> 最上部か2行目にしてもらうと検証が楽かも。
> その際にはスクロールが左右同期しているとなおFBなのですが。

了解です.これは比較的簡単ですね.
Form_Resize()を書くのが面倒だったので,固定ウィンドウにしちゃっていたわけですが,次回も同じ位置とサイズで開けるようになる(ついでに開始番号とステップ,[参照...]の時のフォルダとか,iniファイルも必要になりますね.

> Hamlog_523a の中の FiveQSO.QSL をサンプルで検証したら如何でしょうか?

了解しました.
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: (Ver.1.0.3 (2014/02/21 23:56)修正&修正中
424
2014/02/21(Fri) 13:31:15
JP7CZE 川辺

> こんにちは。
> VB使いの方がお出ましになり、VB愛好家としてはうれしい限り
> です。

ありがとうございます.

> VBは VB6なのかVB2010とか、どちらでしょうか?

いまだにVB6です.仕事用に使っているプログラムがVB2→VB3→VB6と大幅書き直ししたソフトで,機能もその時点で大きく変わっていますが,現時点でソースだけで610KB程度あり,VB2010とかに変更はとても無理そうなので,もうVB6と心中するしかありません.
VB2→VB3のときに,つい見かけに騙されて,含まれていたサードパーティの3Dコントロールで画面を作ってしまったので,VB3→VB4以降で3Dコントロールは無くなってしまい,そのままVB3を使わざるを得なかったわけです.
あるテキストデータから情報を分離してXY座標にZ値に応じて色分けし,半径をもう一つの値で変化させて円を描かせるソフトなのですが,画面以外にVectorデータとしてドロー系ソフトにインポートさせるために,PSまたはDXFファイルを書き出していましたが,VB6の頃には,PDFプリンタやAdbe以外のドローソフトもPDFのインポートができるようになったりして,プログラム上でPDFプリンタを指定してそこで書き出すようにしたり.これが,例のプログラムからプリンタの設定ができるよ,の実際に私がやった経験です.
また,データの方も,同種のいろんな異なるフォーマットのデータが入手できるようになって,その中には改行コードがCR+LF, CRのみ,LFのみと様々で,それそれに対応できる必要がありました.

そんな状況の変化の中で,意を決してVB6の時に前面書き直しをしたわけです.

いまさら,もうVB6の後継に書き直すのは無理です...

> この辺りのコードはどのようにされているのでしょうか?

メッセージを書いた時点までのプログラムは,VBと同様,ラベルやコマンドの後には" "(半角スペース)が来ることしか想定していなかったわけです.

で,実際にやってみたら,全角スペースが来る場合や";"が直接来る場合もあることがわかり,こりゃ対応が必要と思った訳です.

> Split 関数 で ; の前後で分ける...。
> 全角、半角の処理方法とか....。

現在,あれこれ考えて,以下のようにやってみています.現実的にはHAMLOGの方でエラーになるものも含まれているかもしれませんが.

Dim Labels(1000) As String
Dim NumLabels As Long

Private Sub Form1_Load()
ChkChr(0) = " "
ChkChr(1) = " "
ChkChr(2) = ";"
ChkChr(3) = ";"
ChkChr(4) = ":"
ChkChr(5) = ":"
ChkChr(6) = "*"
ChkChr(7) = "*"
NumChkChr = 7
・・・
と想定して,実際の変換のところで,;

ラベルの切り出し
Function AddList(Strings As Variant) As Long
a = Strings
List1.AddItem a
aa = Trim(a)
If Left(aa, 1) = "*" Then
aa = Right(aa, Len(aa) - 1)
For i = 0 To NumChkChr
n = InStr(aa, ChkChr(i))
If n > 0 Then
aa = Left(aa, n - 1)
End If
Next i
Labels(0, NumLabels) = aa
AddList = 1
Else
AddList = 0
End If
End Function

----------;
実際の変換
For i = 0 To NumLabels
newnum = "[*]" + Trim(Str(Val(Text2.Text) + i *
Val(Combo1.Text)))
For j = 0 To List1.ListCount - 1
a = List1.List(j)
If Left(a, 1) = "*" Then
a1 = a
For k = 0 To NumChkChr
cck = ChkChr(k)
n = InStr(a1, cck)
If n > 1 Then
a1 = Left(a1, n - 1)
End If
Next k
End If

If InStr(a1, "*") = 1 Then
If a1 = "*" + Labels(0, i) Then
For k = 0 To List1.ListCount - 1
lk = List1.List(k)
rp = Replace(lk, a1, newnum)
List1.List(k) = rp
Next k
End If
End If
Next j
Next i
-------

こんな感じです.
途中でラベルであることを示す文字を"*"から"[*]"に変換していますが,#Goto *2000 とか,すでに変換したラベルが変換対象にならないようにするためです.

 上記の続きのファイルへ書き出し部分で,最後にreplace で"[*]"を"*"にもどしています.

> 全角スペースは半角スペースに Replace するとか...。

 オリジナルに対してラベルだけを付け替える,という本来の目的から外れると思ったので,やってません.

 ラベルに続く文字は,現時点では,上記の想定内の文字しか対応できていません.現実的かどうかはわかりませんが,すべての文字に対応した方が”きれい”だと思うので,現在の方法は止めて,実際に一文字ずつ判定して数字文字以外でお終いにするようにしようかと思っています


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

Re: (Ver.1.0.3 (2014/02/21 23:56)修正&修正中
423
2014/02/21(Fri) 11:04:55
JA9AOB 銅子
> あと,見つかったラベル番号が同じの場合の扱い(つまりは2重定義),どうすればいいか("*5100 とか *5900 とか).どうせなら,○○_ref.txt にでもリファレンスを書き出して,ラベルの部分の横にでもDとかの項目を入れるというのもありかと思いますが.
>
> 行番号 ラベル番号 D 参照行番号 参照行番号 ← 重複の場合
> 行番号 ラベル番号 参照行番号 参照行番号 ← 重複無しの場合
>
> のような感じで.
こちらに移る前に書き込みましたが、Hamlog添付の FiveQSO では同じラベルが何カ所も定義されています。JMP先が前向きの最初に見つかったラベルにJMPするとすれば、これもありでしょうか。これに対処しようとするとさてどうしましょうか。でも出来そうですね。
呼び出しのないラベルが出てきたときには、これは、下から呼び出されることも無いので、無視するか、コメントアウトでも構いませんね。
呼び出しのあるラベルも、呼び出し側とのラベル合わせが済めば、下から呼ばれることは無いので、そのラベルの処理も一段落で終わりでしょうね(テーブルを用意しているなら削除)。こんなのでは処理できませんかね。すでに考慮済みなら、お節介ですね。失礼します。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop