やあ、
pb 12.6 Build 4035 - Classic で製品を開発しています。現在、次の問題があります。
複雑なウィンドウ階層があり、各レベルには特別な種類の機能があり、ますます複雑になっています。最上位レベルはビジュアル ユーザー オブジェクトです。これにより、インスタンス変数がウィンドウに取得されました。ユーザーがユーザーオブジェクトで何らかのタスクを実行すると、インスタンス var を介してアクションがウィンドウに送信されます。Delevoping -> 保存 -> 実行はすべて問題ありません。しかし、関数をウィンドウにデプロイした後、実行時の参照が正しくなくなります。このエラーは、powerbuilder の実行時 (デプロイ後のみ) および exe の実行時 (スタンドアロン) に発生します。ユーザーオブジェクトを新しく保存すると、再び機能します。
私たちのウィンドウ階層:
最低レベルから最高レベルまで
- wo_window (単純なウィンドウ、msgbox のような基本的な機能)
- wo_uni (ウィンドウには適切なシステムとより多くの機能があります)
- wo_sheet (ウィンドウはデータベースと通信できます)
- wo_tab (ウィンドウにはタブページがあります)
- wo_tab_obj (オブジェクト ウィンドウ、特殊機能、オブジェクトはアイテムまたはアドレス、最上位階層)
- w_adr (アドレスのオブジェクト ウィンドウ)
on wo_tab_obj はユーザー オブジェクトです。=> wo_tab_obj::open{ uo_blaettern_obj.event ue_set_ref( /*wo_tab_obj awo_tab_obj */ this ) }
-> ユーザーオブジェクトでは、参照は iwo_tab_obj に保存されます
ユーザーがユーザーオブジェクトでアクションを開始し、コードが iwo_tab_obj.get_obj().get_parameterart() を呼び出します。
関数呼び出し get_obj() は例外 bad runtime reference をスローします。get_obj() は wo_tab_obj で宣言されています。そこで今、何かを試して、下位階層レベルの関数を呼び出しました。これは機能しています(コンパイルしてexeを実行した後も)。
例外はイベントでも発生し、wo_uni で宣言されたイベントを呼び出します。
では、コンパイル プロセス内にバグがあると思いますか、それとも何か間違ったことをしているのですか?
ウィンドウ階層は再作成しません。このタスクには完璧なので、このすべてのレベルが必要です。