HAMLOG プログラム開発室


新着表示
タイトル
記事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
タイトル
記事No
投稿日
投稿者

Re: (Ver.1.0.3 (2014/02/21 23:56)修正&修正中
422
2014/02/21(Fri) 10:58:43
JA2BQX 太田
こんにちは。

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

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

Hamlog_523a の中の FiveQSO.QSL をサンプルで検証したら如何でしょうか?
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: (Ver.1.0.3 (2014/02/21 23:56)修正&修正中
421
2014/02/21(Fri) 09:49:47
JA2BQX 太田
こんにちは。
VB使いの方がお出ましになり、VB愛好家としてはうれしい限りです。
VBは VB6なのかVB2010とか、どちらでしょうか?

> そうなんです.現在コメント文の処理の対応をしています.半角スペースは大丈夫になりましたが,直後のセミコロンとか全角スペースとかは今のところダメ.

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

Split 関数 で ; の前後で分ける...。
全角、半角の処理方法とか....。
全角スペースは半角スペースに Replace するとか...。

私が何時も参考にしているのは下記のURLです。

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

> 対応有難うございます。ずいぶん良くなりました。Ver1.0.3テストしてみました。

ありがとうございます.

> #Goto *1234 ;123へJMP
> の様に#Goto 文にコメントが入ると変換されませんね。
> #Readf *992
> の様なJMP処理もありますが、未処理のようです。
> だいぶん分かりやすくなって来ました。期待しています。

そうなんです.現在コメント文の処理の対応をしています.半角スペースは大丈夫になりましたが,直後のセミコロンとか全角スペースとかは今のところダメ.本家では切り捨てですむわけですが,とりあえず番号だけ切り出せたので,番号から後の切り出し方法を考えているところです.

> #Readf *992

は,その場合のことまで気が付きませんでした.Helpをちゃんと見て,同様な件を対応したいと思います.

あと,見つかったラベル番号が同じの場合の扱い(つまりは2重定義),どうすればいいか("*5100 とか *5900 とか).どうせなら,○○_ref.txt にでもリファレンスを書き出して,ラベルの部分の横にでもDとかの項目を入れるというのもありかと思いますが.

行番号 ラベル番号 D 参照行番号 参照行番号 ← 重複の場合
行番号 ラベル番号 参照行番号 参照行番号 ← 重複無しの場合

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

Re: (Ver.1.0.3 (2014/02/21 23:56)修正&修正中
419
2014/02/21(Fri) 07:54:57
JA9AOB 銅子
対応有難うございます。ずいぶん良くなりました。Ver1.0.3テストしてみました。
#Goto *1234 ;123へJMP
の様に#Goto 文にコメントが入ると変換されませんね。
#Readf *992
の様なJMP処理もありますが、未処理のようです。
だいぶん分かりやすくなって来ました。期待しています。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者
参照先
(Ver.1.0.3 (2014/02/21 23:56)修正&修正中
418
2014/02/20(Thu) 21:07:51
JP7CZE 川辺

 いつも中途半端なアップロードですみません.

(2014/02/21 23:56)
 ラベル行(*1000)に,ラベルの後,スペース等やコメントがある場合も,スペース/コメントはそのままラベルのみ入れ替えるようになりました.
(Ver.1.0.2 2014/02/20 23:00)不具合修正
 検証不足で,出力ファイルにラベル行のみしか出力していない大チョンボを改善し,全部の行を出力されるよになりました.銅子さんはじめ,ご迷惑をおかけしました.
 なお,ラベル行で,ラベルに続いてスペース+コメントがある場合,正常に飛び先番号として認識できませんでした(その飛び先を指定している #Goto *番号 も変更されませんので,重複する可能性があります).現在対応修正中です.

(Ver.1.0.1 2014/02/20 21:00)
 改行コードが,CR+LF,CRのみ,LFのみのいずれの場合にも,正常に1行として読み込めるようにしました.
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop
タイトル
記事No
投稿日
投稿者

Re: Win7 + VisualBasic2010で
417
2014/02/20(Thu) 13:58:08
JA1RNR 吉田
> VB2010にて新規に作成すれば上手く動作します。
> お騒がせしました。

解決して何よりです。
このスレッドは管理者によってロックされていますので、返信並びに編集は出来ません!
pagetop