[リストへもどる]
一 括 講 読

投稿時間:06/01/31(Tue) 22:45
投稿者名:Naruo.K
Eメール:
URL :
タイトル:DBプラグインのことで
初歩的な事で申し訳ないのですけど、DBプラグインのことで質問が
ありますのでよろしくお願いします。

説明書を読んでましたら、何度も書込みをする時に"BEGIN TRANSACTION"
と"END TRANSACTION"を実行する事を推奨していらっしゃっていて、
コミットはしなくてよさそうに思いましたけど、それでいいでしょうか?
それともうひとつ、ロールバックもできるのでしょうか?

まだ説明書を読んでるだけで使ったことないので、トンチンカンな質問
かもしれませんけどよろしくお願いします。

投稿時間:06/02/01(Wed) 10:03
投稿者名:中西 巧@プラエセンス
Eメール:
URL :
タイトル:Re: DBプラグインのことで
> 説明書を読んでましたら、何度も書込みをする時に"BEGIN TRANSACTION"
> と"END TRANSACTION"を実行する事を推奨していらっしゃっていて、
> コミットはしなくてよさそうに思いましたけど、それでいいでしょうか?
> それともうひとつ、ロールバックもできるのでしょうか?

"END TRANSACTION"は,コミットと同様に書き込む動作を行いますので
このBEGIN - ENDの組み合わせを使う場合は別途コミットする必要は
ないと思います.ロールバックも可能なようです.

弊社のSQLiteプラグインは,Chararinaのキャラクター開発言語である
綾織から(同梱の)SQLiteを使えるようにするというものですので,
基本的にそうしたインタフェース部分についての記載しかありません.
SQLite自体の詳しい情報については,SQLite自体のマニュアルを
参照していただいたほうが確実です.

投稿時間:06/02/02(Thu) 21:27
投稿者名:Naruo.K
Eメール:
URL :
タイトル:Re^2: DBプラグインのことで
> "END TRANSACTION"は,コミットと同様に書き込む動作を行いますので
> このBEGIN - ENDの組み合わせを使う場合は別途コミットする必要は
> ないと思います.ロールバックも可能なようです.
>
> 弊社のSQLiteプラグインは,Chararinaのキャラクター開発言語である
> 綾織から(同梱の)SQLiteを使えるようにするというものですので,
> 基本的にそうしたインタフェース部分についての記載しかありません.
> SQLite自体の詳しい情報については,SQLite自体のマニュアルを
> 参照していただいたほうが確実です.

ありがとうございました。さっそくためしてみることにします。

ついでで質問しますけど、綾織のコンパイルの時にエラーが出る事が
ありますけれど、対策の方法かヒントをお教えください。

「ayac.exe - アプリケーション エラー」のエラー内容は、
「"0x00439382" の命令が "0x00000120" のメモリを参照しました。メモリが "read" になることはできませんでした。」

「例外 unknown software exception (0xc0000027) がアプリケーションの 0x77ea1ea4 で発生しました。」
です。
PDKのバージョンは3.04で、サンプルのタイヤネコを基本にちょっとだけ
書換えてキャラクターを作っていますので、バッチファイルなんかもその
まんまです。

よろしくおねがいします。

投稿時間:06/02/03(Fri) 14:09
投稿者名:中西 巧@プラエセンス
Eメール:
URL :
タイトル:Re^3: DBプラグインのことで
> 「ayac.exe - アプリケーション エラー」のエラー内容は、
> 「"0x00439382" の命令が "0x00000120" のメモリを参照しました。メモリが "read" になることはできませんでした。」
> と
> 「例外 unknown software exception (0xc0000027) がアプリケーションの 0x77ea1ea4 で発生しました。」
> です。

これ自体はコンパイルエラーとはいえず,ayac側のなんらかの問題で
「うまくエラー表示を出せていない状態」と言えます.
ソースファイル中のなんらかの記述ミスがあり,本来ならayacがその記述
ミスを検出して「syntax error」を正常に表示するところですが,
ayac自体の処理がエラーになったために上記のエラーが出ていると
考えられます.

> PDKのバージョンは3.04で、サンプルのタイヤネコを基本にちょっとだけ
> 書換えてキャラクターを作っていますので、バッチファイルなんかもその
> まんまです。

ただ,原因自体はなんらかの綾織ソースファイルの記述ミスと思われますので,
上記の「ちょっとだけ書き換えた部分」を少しづつ元に戻してゆき,
コンパイルが成功するところまで戻すことで,どの記述が原因だったか
特定します.それで,該当箇所を修正します.

投稿時間:06/02/03(Fri) 20:44
投稿者名:Naruo.K
Eメール:
URL :
タイトル:Re^4: DBプラグインのことで
> ただ,原因自体はなんらかの綾織ソースファイルの記述ミスと思われますので,
> 上記の「ちょっとだけ書き換えた部分」を少しづつ元に戻してゆき,
> コンパイルが成功するところまで戻すことで,どの記述が原因だったか
> 特定します.それで,該当箇所を修正します.

解決のヒントをありがとうございました!
可変長配列内の最後の値だけが欲しくてlengthof X から直接 1 を減算
しようとしてました。
おっしゃったとおりの記述ミスです。おさわがせしました。

投稿時間:06/03/07(Tue) 14:57
投稿者名:oclown
Eメール:
URL :
タイトル:Re^5: DBプラグインのことで
> > ただ,原因自体はなんらかの綾織ソースファイルの記述ミスと思われますので,
(略)
> おっしゃったとおりの記述ミスです。おさわがせしました。

ところでPDK ayacに付属のprototype200.ayaに問題は無いでしょうか?
150とint Message, void Waitがダブっていますし、一方int MessageWが抜けています。PDK3.03, 3.04に変えてからどうもうまくコンパイルできないのでチェックしてみました。ここに原因がある可能性はいかがでしょうか。(キャラメだけ使う場合は問題ないのでしょうが...)

投稿時間:06/03/09(Thu) 16:36
投稿者名:中西 巧@プラエセンス
Eメール:
URL :
タイトル:Re^6: DBプラグインのことで
> ところでPDK ayacに付属のprototype200.ayaに問題は無いでしょうか?
> 150とint Message, void Waitがダブっていますし、一方int MessageWが抜けています。PDK3.03, 3.04に変えてからどうもうまくコンパイルできないのでチェックしてみました。ここに原因がある可能性はいかがでしょうか。(キャラメだけ使う場合は問題ないのでしょうが...)

プロトタイプ宣言が被っていること自体は問題ないはずですが,それを
修正するとコンパイルがうまくいく? といったようなことがありました
でしょうか.
また,プロトタイプ宣言が抜けていることもコンパイルエラーとなるような
問題にはならないはずです.

コンパイル時のエラーメッセージの種類にもよりますが,コンパイラ自体が
プログラムエラー(正常にエラーメッセージを表示するのではなく,
コンパイラ自体が異常となるような場合)となるのは,綾織プログラムの
書き方に問題があって,本来ならsyntax errorとなるべきところを
うまく処理できていない可能性があります.
まずは該当部分をコメントアウトし,コメントアウトの範囲をせばめていって
問題箇所を特定するのが基本的な対処です.

投稿時間:06/03/18(Sat) 14:26
投稿者名:oclown
Eメール:
URL :
タイトル:Re^7: DBプラグインのことで
返信遅くなりましたが、少し調べてみました。

まず、簡単な

> また,プロトタイプ宣言が抜けていることもコンパイルエラーとなる
ような問題にはならないはずです.

については、抜けているMessageWをayaで使用すると、当然「未定義なシンボル」というシンタックスエラーが発生します。しかし、それ以外では特に問題を見つけることは出来ませんでした。

一方、ややこしいのが、

> プロトタイプ宣言が被っていること自体は問題ないはずですが,それを修正するとコンパイルがうまくいく? といったようなことがありましたでしょうか.

です。これは再現性が難しいですが問題を起こしている可能性があります。
こういった例がありました。
まず、3.04オリジナルprototype200.ayaをオリジナル200、ダブりを除いたものを修正200とすると、
1.かなり複雑な記述、例えば関数の入り子構造が何段階にもわたるようなayaをオリジナル200でコンパイルするとシンタックスエラーではなくayacの異常終了で終わることがある。この場合DOS画面上のシンタックスチェックでは「Waitの引数が定義と違う」と表示されますが、実際は構文ミスは無い。
2.同じayaを修正200でコンパイルするとエラー無くコンパイルできる。
3.でもって困るのが、同じayaをもう一度オリジナル200でコンパイルすると今度はエラー無く通ってしまう。

ですので、このayaだと失敗するという実例を出すことが出来ませんが、やはりダブりは不安定さを増しているように見えます。

しかし、本当に構文上問題が無いかは実ははっきりしません。完全オリジナルなayaですので例えばint関数をコマンドとして使っていて、戻り値の収納場所を未定義で書いているからです。
例えば、
int a;
a = int Message( xxxx, x );
とせず、いきなり
int Message( xxxx, x );
としています。実用上は戻り値を使う場合は少ないので、かなりの関数を戻り値無しで使っています。これが問題かもしれません。

どなたか同様な経験をした方いらっしゃいませんか?

投稿時間:06/03/20(Mon) 16:22
投稿者名:中西 巧@プラエセンス
Eメール:
URL :
タイトル:Re^8: DBプラグインのことで
> 返信遅くなりましたが、少し調べてみました。

詳細なご確認ありがとうございます.
残念ながら現象が再現できる記述は見つからなかったとのことですが,
こちらでも頂いた情報をもとに気をつけて調査してみます.


int abc()
{
  ...
  return i;(iはint型の値)
}
と宣言したような関数(int型)を,
abc();
と使うこと自体には仕様上なんら問題はないはずです.

しかし,仕様上は問題なくとも実装ではなんらかの影響があるという可能性は
否定できませんので,もしそうした記述を多用するとコンパイル時に
ayacが落ちる(非正規のエラーが発生)ことが多い,というような感じが
ありましたら,教えていただけますでしょうか.



- Web Forum -