Indexへ
(14136)//【14139】→(14141)
------------------------
【タイトル】Jw_cad データ構造
【記事番号】 14139 (*)
【 日時 】04/02/24 20:42
【 発言者 】よね

データ構造が公開されているので見ているのですけど;

VC(mfc) で作成しないとダメなのでしょうか?

CString や List の入出力が想像できません。 C や VB での作成方法を教えて頂けないでしょうか?


Indexへ
(14139)←【14141】→(14144)
------------------------
【タイトル】Re:Jw_cad データ構造
【記事番号】 14141 (14139)
【 日時 】04/02/24 21:13
【 発言者 】joker
【 リンク 】http://www.atsmile.com/jw/



▼よねさん:
>データ構造が公開されているので見ているのですけど;
>VC(mfc) で作成しないとダメなのでしょうか?

マイクロアーツ社のサイトには、Delphiで作成されたソースプログラムが
公開されています。(ただし、フリーウェア作成の場合にのみ利用可)
http://www.aizu.jp/pdf/index.htm

その他にも、Delphiで作成されている方も何人か
いらっしゃるようですよ。(笑)

>CString や List の入出力が想像できません。 C や VB での作成方法を教えて頂けないでしょうか?

C言語って、VCではない、例えば TurboCとかMS-Cとか、ですか?
バイナリエディタで、テストでデータを作成して、それを見ながら
解析するしか無いでしょう。
1バイトずつ読み取って判断する以外にない場合もあります。


Indexへ
(14141)←【14144】→(14149)
------------------------
【タイトル】Re(1):Jw_cad データ構造
【記事番号】 14144 (14139)
【 日時 】04/02/24 21:40
【 発言者 】古川 furukawa@mail.ne.jp
【 リンク 】http://jwx.hp.infoseek.co.jp/



▼よねさん:
>VC(mfc) で作成しないとダメなのでしょうか?

私は Delphi で作成しました。(^o^)

>CString や List の入出力が想像できません。

CString はいかにも VC 専用という響きがありますが、データ構造は単純に[文字数、文字データ]となっています。

"12345" の場合、 05,"12345"
"漢字" の場合、 04,"漢字" (どちらも null は有りません。)

文字数が 1byte では、16文字までしか表現できないので、16文字以上の場合、以下のようになります。

FF,文字数(2byte),"文字列"

256 文字以上の場合は、

FF,FFFF,文字数(4byte),"文字列" だったかな? ちょっと忘れました。

LIST って、一般の方がブロック定義の方か分かりませんが、基本構造は同じです。

1つだけの図形とかのサンプルデータを作ってバイナリエディタで確認するのが結局、早道です。

> C や VB での作成方法を教えて頂けないでしょうか?

C はよく分かりません。VB で一度、DOS版のデータを扱おうとしたのですが、その当時、StrConv関数を知らなかったので挫折した経験があります。


Indexへ
(14144)←【14149】→(14152)
------------------------
【タイトル】ありがとう
【記事番号】 14149 (14144)
【 日時 】04/02/24 21:53
【 発言者 】よね

jokerさん 古川さん ありがとうございます。

Delphi のプログラムも落としてみました。。。

データ本体が、線や、円や文字かをどうやって調べているのか?? わかりませんでした。。


Jw_cad の説明の

◆ 図形データのリストの実体
m_DataList.Serialize(ar);

◆ ブロックデータの定義部のリスト
m_DataListList.Serialize(ar);

が。。。。 Delphi を勉強するか、mfc を勉強するしかないかな。。


Indexへ
(14149)←【14152】→(14154)
------------------------
【タイトル】ひとまず、考えるのを止めてみては?
【記事番号】 14152 (14149)
【 日時 】04/02/24 22:57
【 発言者 】古川 furukawa@mail.ne.jp
【 リンク 】http://jwx.hp.infoseek.co.jp/



>Delphi を勉強するか、mfc を勉強するしかないかな。。

あれこれ悩むより、現物を見た方が早い場合も有りますよ。まず、線1本だけのサンプルデータを作って保存してください。

基本構造は、ヘッダー、List、データ実体、(ブロックが有れば)ブロック定義、です。とりあえず、ヘッダーの最後の場所(データ位置は可変)を確認しましょう。と言うか、その位置を計算するテストプログラムでも作ってみてはいかがでしょうか。それをやらないと、Listを検証する事すら出来ません。

どのみち必要なので膨大な変数定義してから作ってもいいし、必要BYTE数を計算して読み飛ばしてもいいし、やりやすい方法でどうぞ。

その後ろがLIST ですが、一般用List 自体は、わずか数byte(データ数及びデータバージョン)です。その後は延々と図形データが続いているだけです。実際は、図形データを含めて LIST と言う事なのかもしれませんが。

経験から言えば、バイナリエディタで、1byteずつ意味を確認していかないと、全体像がイメージできないと思います。


Indexへ
(14152)←【14154】→(14177)
------------------------
【タイトル】Re(1):ひとまず、考えるのを止めてみては?
【記事番号】 14154 (14152)
【 日時 】04/02/25 01:55
【 発言者 】よね

はい、見てみます。

とりあえず ヘッダーは読み出してみてみてました。

でも、色関係が全部大きい数字なんです。。。(何もない図面やライン1本の図面で)

他はもっともらしい数字なので、色は実際は大きな数字(RGBなのかな)で入っているのかなぁと思っています。。

リストは、CDataSen とかが最初に一回だけ出てきて後からは出てこないで、きっと数値でどんな図形かを調べているんだろうなぁってとこで、今日は終わりました。

線1本

線1本+文字1つ

線1本+文字1つ+線1つ

と順番に増やしてチェックしてました。

最初の線には CDataSenとかいてあり  文字には CDataMoji が出てくるけど 3番目の線には でてこないので。。。


joker さんに教えて頂いた Delphi のソースも見ています。


Indexへ
(14154)←【14177】→(14182)
------------------------
【タイトル】あろがとうございます。
【記事番号】 14177 (14154)
【 日時 】04/02/25 12:42
【 発言者 】よね

地道にやります。2〜3日で 書き込みプログラムを作成しようと思っていたのですけど。。。
とりあえずヘッダー読み込みはできたので、シリアライズのマジックナバー処理の読み込みは Delphi のソース通りやるとして;
書き込み時はどうするか。。mfc で簡単なプログラムを作って実験して;
あえてCで作りたいと思います。
だめそうなら(1週間以上かかりそうなら)、mfc でつくります。


Indexへ
(14177)←【14182】→(14181)
------------------------
【タイトル】Re:凄いねー
【記事番号】 14182 (14177)
【 日時 】04/02/25 14:20
【 発言者 】joker
【 リンク 】http://www.atsmile.com/jw/



▼よねさん:
>地道にやります。2〜3日で 書き込みプログラムを作成しようと思っていたのですけど。。。

凄いですねー。

>書き込み時はどうするか。。mfc で簡単なプログラムを作って実験して;

これまた Delphiですが、peterさんが書き込み可能なソースを公開されてます。
http://www5b.biglobe.ne.jp/~peter/

>あえてCで作りたいと思います。

Cに慣れているのでしたら、その方がいいと思います。


Indexへ
(14182)←【14181】→(14185)
------------------------
【タイトル】Re:頑張ってくださいね
【記事番号】 14181 (14154)
【 日時 】04/02/25 14:15
【 発言者 】joker
【 リンク 】http://www.atsmile.com/jw/



▼よねさん:
>でも、色関係が全部大きい数字なんです。。。

大きい数字は、色が、フルカラー状態の整数値になっている所です。
R(0〜255)+256×G(0〜255)+65536×B(0〜255) の値です。

>CDataSen とかが最初に一回だけ出てきて後からは出てこないで、きっと数値でどんな図形かを調べているんだろうなぁってとこで、今日は終わりました。

2発目以降は、最初にCData〜が出たカウンタ(8001hからスタート)で
識別されます。

では頑張って下さい。


Indexへ
(14181)←【14185】→(14189)
------------------------
【タイトル】ありがとうございます
【記事番号】 14185 (14181)
【 日時 】04/02/25 15:29
【 発言者 】よね

Delphi のプログラムがちゃんと動いて私のCのプログラムが動かないのは。。。。
私のがおかしいんですね。。

CDataSen 8001 8001 CDataMoji のあと いきなり 8003 が来て 参ったしていました。
あきらめかけていたのですが、、頑張ります。


Indexへ
(14185)←【14189】→(14196)
------------------------
【タイトル】8003 の意味について
【記事番号】 14189 (14185)
【 日時 】04/02/25 16:22
【 発言者 】古川 furukawa@mail.ne.jp
【 リンク 】http://jwx.hp.infoseek.co.jp/



▼よねさん:
>CDataSen 8001 8001 CDataMoji のあと いきなり 8003 が来て 参ったしていました。

図形を表すコードは固定ではありません。その種類の図形が初めて出てきたときの番号です。

8001 が初期番号で、CDataSen なので、それ以降に 8001 は線、3番目にCDataMoji が出てきたので、それ以降の 8003 は全て文字という具合です。


Indexへ
(14189)←【14196】→(14155)
------------------------
【タイトル】ここの掲示板は初心者用なので
【記事番号】 14196 (14185)
【 日時 】04/02/25 16:58
【 発言者 】joker
【 リンク 】http://www.atsmile.com/jw/



▼よねさん:

ここの掲示板のテーマ(初心者向けの相談室)から
もう外れてしまっていると思いますので
あとは、古川さんのサイトの掲示板で続きのコメントを書きますので
よろしく。(笑)
http://jwx.hp.infoseek.co.jp/


Indexへ
(14196)←【14155】→(14178)
------------------------
【タイトル】Re(2):Jw_cad データ構造
【記事番号】 14155 (14144)
【 日時 】04/02/25 06:24
【 発言者 】nemoto nemoto@survey.office.ne.jp

余談で済みません。

最初にJwwデータの読み書きを書いた言語はVBです。
今のメインの言語はDelphiになりましたが、VBでもデータ構造を熟知すれば
開発するのは可能ですね。言語はそんなに関係ないと思います。
(まぁ多少面倒なコードになることもありますが・・・)


Indexへ
(14155)←【14178】//(14140)
------------------------
【タイトル】Re(2):Jw_cad データ構造
【記事番号】 14178 (14144)
【 日時 】04/02/25 12:59
【 発言者 】居残り君

古川さん こんにちは。居残り君 でした。

>文字数が 1byte では、16文字までしか表現できないので、16文字以上の場合、
>以下のようになります。

1byte は 00〜FFまでの 0〜255 まで表現できますから

1.最初の 1byte < FF の場合

  ??,”文字列”   //?? は文字数

2.255 = FF を超える文字 の場合

  FF,????,”文字列” //???? は文字数

ですよね。Micro Arts さんの公開いただいているソースをみても
そんなロジックが読み取れます。
ちなみに 2byte 以上の文字列は?なんて非現実的なことは突っ込み
は勘弁してくださいね(^^;..
この手法は全く同じではないですが、データ数の扱う部分にも通じて
ますね。