問題タブ [owlnext]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
176 参照

c++ - C++: owl を使用して古いコードを再コンパイルする

古いプログラムを新しい Borland C++-Builder (Embarcadero Studio XE2) でコンパイルしようとしています。

簡単にできると思ったのですが、エラーが多発します。たとえばsomefunction(TPoint(0,0))、参照を期待しているときに動作しないようなものを使用するので、書く必要がありましたTPoint t=TPoint(0,0);somefunction(t)...また、math.logのようないくつかのエラーは、floatのdoubleで動作する可能性がありますが、uintを取得したため、決定できません...

しかし、主な問題はOWLに関係しているようです。関数パラメーターの型の不一致について何かを言うコードラインがあります。

DEFINE_RESPONSE_TABLE1(TTSCalibDialog, TDialog) EV_LVN_ENDLABELEDIT(IDC_CALIBMASSES, MassCol_EndLableEditResp), EV_COMMAND(IDC_CALIBRATEBUT, CalibrateResp), EV_COMMAND(IDC_CALIBSAVEBUT, CalibSaveResp), EV_COMMAND(IDC_CALIBLOADBUT, CalibLoadResp), EV_COMMAND(IDC_CALIBRESTORE, CalibRestoreResp), EV_COMMAND(IDC_CALIBSETNUMMASSES, CalibSetNumMassesResp), EV_WM_DESTROY, // Ev_WM_Destroy END_RESPONSE_TABLE;

この線

EV_LVN_ENDLABELEDIT(IDC_CALIBMASSES, MassCol_EndLableEditResp)

エラーを与える

[BCC32 Fehler] AcMode_TS_Dial.CPP(13): E2285 Keine Übereinstimmung für 'b_LV_DISPINFO_NOTIFY_Sig(void (TTSCalibDialog::*)(TLvDispInfoNotify &))' gefunden の 2 番目の引数が void MassCol_EndLableEditResp(TLwDispInfoNotify& nmHdr)
{MassCol->EndLableEditResp( nmHdr);};

最初の引数もここで使用するのが正当なようです...

後で使用される行があります

EV_LVN_ENDLABELEDIT(IDC_SIMWEIGHTCOL,AddCol0_EndLableEditResp),

同じエラーが発生するため、インクルードまたは名前空間が欠落している可能性があると思います...

誰かがこの機能を知っていますか、またはエラーの原因は何ですか?

0 投票する
1 に答える
530 参照

c++ - c++-builder: stdcall 型に変換

現在、古い owl-c++-builder-projekt を XE2 と owlnext を使用するように移植しようとしています。古いファイルでは、単純に行を呼び出すことができました

LP_I2Open が定義されている間

これらのコードブロックは、実際には複数のファイルからのものです。この順序は直感的だと思いました。

今、必要に応じてこれを書き直すのにいくつかの困難があります。左側は値を返す変換方法として理解されるようになりましたが、特定の値に割り当てることができないため、「L-Value expected」エラーがスローされます。ただし、FARPROC を LP_I2COpen に適合するものに変換する方法がよくわかりません。変換せずに試行すると、次のエラーがスローされます。

それで、私がこの行で行っている間違いを誰か知っていますか?

よろしく、ジュリアン

0 投票する
2 に答える
1398 参照

c++ - C++ ビルダー: window.cpp のアクセス違反 0x0000002c

C++ Builder XE2 でプログラムを変更しています。このプログラムはまだ vcl を使用していませんが、owlnext を使用しています。複数の MDI 子フォームが含まれています。

そこで、ルーチンを使用してファイルをロードし、新しいウィンドウを開きます。

このルーチンではすべてが正常に動作します (デバッグモードで行ごとに何度もトレースしました) が、PumpWaitingMessages() // pumps any waiting messages, idleCount=0終了して再び終了TApplication::MessageLoop()し、次のループに入り、window.h の関数であるwhich を呼び出すIdleAction(idleCount++)と、プログラムがクラッシュします。MainWindow->IdleAction(idleCount)TWindow::IdleAction(idleCount)

IdleAction 内で、次win->IdleAction(idleCount)の例外で呼び出すと、最初のループでアプリケーションがクラッシュします。

この関数は、Owlnext で次のように定義されています。

私の推測では、ウィンドウには無効なハンドルが存在しますが、win-object は無効ではないようです... 0x0000002c のアドレスを含む変数も見つかりません。

タイトルと親は NULL で、Handle は 0x00000004 ですが、他の値は私には正当に思えます...奇妙なことは、cursormodule.name をチェックすると、それが教えてくれることですE2122 Function call terminated by unhandled exception 0xc0000005 at address 0x408b1a

では、なぜこのエラーが発生するのか、または正しく機能させるために何を実行または元に戻すことができるのかを誰かが知っていますか?

編集: win->next は、次のように定義されたフクロウ関数です。

TWindowTWindow* SiblingList;のプライベートとして TWindow は次のように宣言されています: http://pastebin.com/TzTp4ZXh (クラスには非常に大きな宣言があるため、リンクをたどってください)