問題タブ [datasnap]

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 に答える
661 参照

delphi - jQuery モバイルを修正するために json-min.js が json2.js に置き換えられた場合、DataSnap XE が TJSONObject を文字列として返す

json-min.js は、jQuery モバイルなどの一部のライブラリを壊します。回避策は、ファイルを json2.js に置き換え、js/* の toJSONString を JSON.stringify() に置き換えることです。

修正: https://forums.embarcadero.com/thread.jspa?threadID=53872

ただし、これを行うと、typeof serverMethods().mymethod() は「オブジェクト」ではなく「文字列」を返します。

誰かがこの問題に遭遇し、解決策を見つけましたか?

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

delphi - WebクライアントでDataSnapXEを使用してページネーションをどのように処理していますか?

jQuery Mobileを使用して、一部のデータをリストビューにプルバックしています。これをページ分割する必要があり、テーブルフィルター(url / class / function /?t.r1,20)を機能させることができないようです。

私はXEが余分なURLパラメータ(XE2)を実行しないことを読んだと思うので、私は自分の?page=2のものを実行できません。

0 投票する
0 に答える
1060 参照

delphi - DataSnapと動的SQLConnectionの作成

最初のDataSnapプロジェクトを作成しています。私のDSserver(サービスアプリ)の構造は次のとおりです。

したがって、「DB接続モジュール」を動的に作成し、「最初のserverMethodsモジュール」を呼び出して「DB接続モジュール」からのTSQLconnectionで「最初のserverMethodsモジュールからTSQLQueryをバインドする必要があります。ただし、開いているデータセット(サーバーメソッドを呼び出す)のクライアントはスローします。error message: "TSQLconnection property is required"

TSQLconnectionをTSQLQueryランタイムにバインドする方法を教えてください。

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

delphi - Delphi XE2 Datasnap コールバック

さまざまなオブジェクト タイプとオブジェクトの追加情報を送信して、コールバックを作成しようとしています。だから私はこのクラスを作りました:

さまざまな状況で、Obj フィールドにさまざまなオブジェクトを作成しますが、DSServer.BroadcastObject を実行すると、「内部: オブジェクトをインスタンス化できません ...」というエラー メッセージが常に表示されます。

これが私の本当に簡単な例です: http://www.4shared.com/file/fONlAGM3/DataSnapExample.html

例を見て、何が間違っているのか教えてください...

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

delphi - 処理された/キャッチされた例外からスタック トレースを取得し、トレース ログにダンプする方法

Bob Swart のホワイト ペーパーをガイドとして使用して、Datasnap サービス (Delphi XE を使用) を作成しました。正常に動作し、テスト サーバーにデプロイしました。

ここで問題が発生します。(JMeter を介して) 多数のリクエストを実行すると、何らかのメモリ破損が発生します。成功するリクエストもあれば、アクセス違反で失敗するリクエストもあります。最終的に、非常に壊れてしまい、(DSAdmin ではなく) OWN メソッドへのすべての要求がアクセス違反で応答するようになりました。

ただし、リクエストの処理で例外が既にキャッチされているため、スタックトレースを取得して詳細情報を取得することはできません。

このアプリケーションの VCL バージョンで頻繁にテストすると、正常に動作し続けます。

これが何であるか、または同じ問題を経験した人はいますか、またはキャッチされた例外からスタックトレースを取得するのを手伝ってもらえますか(編集できない他の人のコードで)?

前もって感謝します。

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

delphi - Delphi XE2 で Windows サービスとして Datasnap を作成するとエラー 1057 が返される

このチュートリアルに従って、Datasnap サーバーを Windows サービスとして作成しました。コマンド ラインで /INSTALL を追加してインストールできます。ただし、Delphi XE2 のこの同じチュートリアルに従うと、サービスをインストールできません (私は管理者ですが)。

次のエラーが返されます。

Delphi XE2 でコンパイルされた Datasnap サービスを動作させるにはどうすればよいですか?

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

delphi - Delphi Prism を使用して DataSnap クライアントを作成する

Visual Studio 2010 で Delphi Prism を使用して datasnap クライアントを作成しようとしています。DataSnap プロバイダーを使用して (サーバー エクスプローラーで) データ接続を作成しようとすると、次のエラーが発生します。

要求された .Net Framework Data Provider が見つかりません。インストールされていない可能性があります。

0 投票する
0 に答える
718 参照

delphi - 動的に作成された TSQLConnection への DataSnap 経由のリモート アクセス

Delphi XE2 は、クライアントからサーバー側接続への DataSnap アクセスを提供します。TSQLConnection ドライバ「datasnap」には、サーバー側の TDBXConnection を返す関数を指定するプロパティ「ServerConnection」があります。例: ServerConnection='dsadmin.getConnection("FBCONNECTION")' は、Firebird 接続を返します (データ エクスプローラーに表示されます)。

データ エクスプローラーを使用する代わりに、実行時にサーバーの SQL 接続を作成します。独自の MyFuncGetDatabase() サーバーサイド関数を記述し、ServerConnection='MyFuncGetDatabase()' を設定できるはずです。しかし、MyFuncGetDatabase() のようなサーバー側関数を実装するにはどうすればよいでしょうか? そのようなメソッドを実装および/または登録する必要がある場所に関するヒントは見つかりませんでした。

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

delphi - Reconcile Error: エラー メッセージが切り詰められて問題が発生した人はいますか?

私はあなたに助けを求めるために再びここにいます。今回は、私がお話しする問題が非常に特殊であることを考えると、反応する人はほとんどいないと思います。私は DataSnap の世界から始めていますが、このエラーがどのように関係するのかまだ理解していません。

私の Delphi は XE (バージョン 1、Update1) です。ポルトガル語 (ポルトガル語ブラジル) でエラー メッセージを生成する Postgres を使用しています。このため、エラー メッセージにはアクセントがあります。接続コンポーネントは ZeosLib パッケージです。

ダイアログボックス「調整エラー」を使用して、更新の適用から発生したエラーを表示し、テストします。すでに存在するレコードを挿入しようとしたため、一意のキーに違反し、調整エラーダイアログが表示されました。

ダイアログのメモでは、表示されるメッセージが切り捨てられます。つまり、カットされます。見てみな:

しかし、実際に返されるべきものはこれです:

問題が ZeosLib にあるかどうかを確認するためにサーバーでデバッグを実行しましたが、サーバーで生成されたエラー メッセージが完全であることがわかり、ZeosLib がメッセージを切り捨てていないことが証明されました。すべてユニコードです。私のプログラムと ZeosLib の両方で、すべての文字列は WideString (デフォルト) です。

ご存知のように、サーバーでスローされる例外は、大まかに言えば、DataSnap によってクライアントに転送され、クライアントでは、TClientDataSet の Reconcile メソッドが問題があるかどうかを確認してから、有名な例外 EReconcileError をスローします。 TClientDataSet の OnReconcileError イベントで処理されるため、メッセージは DataSnap によって切り詰められていると思います。

クライアントで Reconcile メソッド (DBClient.pas) をデバッグし、例外がスローされる直前に、ライブラリ midas.dll、より具体的には MidasLib.obj の一部と思われる cpp ソース コード内の関数に入ります。この戦略を使用すると、アプリケーションで DLL を配布する必要がなくなります。

この呼び出しは、Delphi XE Update1 のユニット DBClient.pas の 1952 行で行われます。F7 を押すと、デバッガーはソース C++ (cpp) に入るため、midaslib.obj 内にあると思います。C++ をよく理解していないので、Shift-F8 を押して現在のメソッドを終了し、次の命令を返します。これは、既にイベント OnReconcileError 内にあります!! したがって、切り捨ては、前述の関数内、cpp ソース内、midaslib 内で行う必要があります。

私の意図は、Reconcile Error ダイアログを、最終的なユーザーだけでなく、エラー、詳細、およびコンテキストの情報を個別に提供する個人をサポートするツールにすることです。これは、問題を発見するのに大いに役立ちます。

ここでの問題は、メッセージを完全に表示することです。midas によってメッセージが切り捨てられるというこの種の問題が発生した人はいますか?

また、DSClient.pas の別のポイントは、例外に渡されるときにエラー メッセージを抽出できます。

引用符を削除し、#$A (1 文字) を空白 (1 文字) に置き換えると、文字列が正確に 255 文字であることがわかります!!

また、dspickle.cpp の "GetErrorString" が、bdetypes.h で 127 (255 の半分) として定義されている定数 DBIMAXMSGLEN を使用していることも発見しました。私たちは Unicode の世界にいるので、1 文字あたり 2 バイトにするために、この値を 255 に増やすことは問題ではないでしょうか? これは推測にすぎません...

私は C++ を理解する知識が不足しているため、質問は保留にします :) dspickle.cpp の関数実装 "GetErrorString" を見てください。これがあります:

pString はエラー メッセージで、DBIMAXMSGLEN = 127 です。

0 投票する
4 に答える
482 参照

web-services - デフォルト ページ WebService から標準インターフェイスを非表示にする方法

しばらく前に、Web サービスのデフォルト ページから IAppServer および IAppServerSOAP インターフェイスを非表示にし、デフォルトで表示する方法について考えていました。私の Webservice インターフェースがこれらのインターフェースを祖先として持っていることは知っていますが、クライアント プログラムはこれらのインターフェースを直接使用しないため、デフォルト ページでこれらのインターフェースを「見る」ことは無意味だと思います。

これらのインターフェイスを非表示にして、作成されたインターフェイスやその他のインターフェイスを保持する方法はありますか?