問題タブ [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.
jquery - JQueryを使用してJSON結果内のFields:{}コンテンツを読み取る方法は?
私はこのJSONとJQuery全体に不慣れで、DelphiデータスナップからのJSON構造を読み取ろうとしています。例:
JQuery、より具体的にはFields:{...}コンテンツでそれを読み取るにはどうすればよいですか?
編集 :
これが私がやろうとしている関数です
json - JSONオブジェクトをデータベースに挿入する
Delphi XE2でDataSnapサーバーを構築していますが、クライアントから送信されたJSONオブジェクトをデータベースに挿入するための最良の方法を見つけるのに苦労しています。
受信しているオブジェクトの形式は次のとおりです。
私が見つけた解決策は次のコードでした
その後、クエリコンポーネントをJSONオブジェクトにしてクライアントに返しますが、問題は、これが高密度のテーブルを持つ大きなアプリケーションになるため、何かを挿入するたびに「SELECT*」を実行することです。理想的ではありません。これを行うための最良の方法は何ですか?
delphi - Delphi XE Datasnap: DSServerModule が動的にロードされるとサーバー メソッドが見つからない
起動時にディレクトリをスキャンし、BPL (DSServerModules を含む) をロードし、リモートから使用できるように登録する Datasnap Server (DBX) があります。
プリミティブ型 (整数、文字列など) を使用する関数とプロシージャではすべて正常に機能しますが、クライアントからは、「構造化された」変数を持つメソッドが表示されません。
たとえば、 (例で見たように) TJSONValueを返す関数を追加しようとしましたが、メソッドはクライアントから見えません。
奇妙なことに、DSServerModule がプロジェクトに静的に追加された場合、同じ機能が使用可能 (かつ動作) です。
推測はありますか?
非常に大きなプロジェクトの一部であるため、コードは添付しませんでした。必要に応じて、小さな例を提供します。
乾杯、ミルコ
objective-c - RAD XE2 DataSnap - iOS 用 Objective-C でメソッドを呼び出す
私は Delphi で DataSnap サーバーを作成しました。現在、Objective-C で iPhone クライアント アプリを作成してそのデータを使用しています。文字列を返す単純なメソッドを呼び出すだけで簡単に始めています-コードを参照してください:
「ReverseString」メソッドは「eybdooG」というテキストを返すはずですが、空白を返すだけで、DataSnap サーバー側で接続アクティビティが見られません。まるでメソッドがまったく呼び出されていないかのようです。興味深いことに、DSRESTConnection の UserName プロパティと Password プロパティを設定しないと、サーバーへの接続が試行され、アクティビティを確認できますが、接続は「401: Unauthorized」で失敗します。これは、DataSnap サーバーがユーザー資格情報を必要とするためです。
ユーザー資格情報の有無にかかわらず、Objective-C を使用して DataSnap サーバーに正常に接続した人はいますか?
Xcode を使用してまだ 2 日間しか経っていないので、明らかなことを見落としていたら申し訳ありません。
delphi - RadPHP サーバーから Delphi XE datasnap サーバーに大きなファイルを送信する方法
PHP サーバー (RADPHP で記述) から Delphi Datasnap サーバー (Delphi XE) に大きな (<50MB) ファイルを送信する最良の方法は何ですか。接続の問題があるため、私は HTTP(S) を使用したいと考えていますが、これは私にとって新しい領域です。
PHP サーバーはユーザーのブラウザからのファイルのアップロードを受け入れて OK で、エンコード (base_64) できます。しかし、a) それを処理するための最良の方法ではない文字列に入れます b) 文字列を受信すると、DataSnap サーバーが「Max Line Length Exceeded」でクラッシュします
Datasnap サーバーには、TDSServer、TDSServerClass、TDSHTTPService、および TDSAuthenticationManager の 4 つのコンポーネントがあります。RADPHP サーバーは DSRestConnection コンポーネントを使用します。
delphi - DataSnap の待機中にクライアント UI を更新しています
TSQLConnection
コンポーネント ( )を介して DataSnap サーバーに接続する Delphi XE2 で MDI Delphi アプリを作成しましたdriver = datasnap
。設計時に を右クリックTSQLConnection
すると、DataSnap クライアント クラス (ProxyMethods) を生成できます。
私の目標は、クライアント側に、DataSnap 要求が処理されるまでの時間を示す経過時間クロック [0:00] を設定し、1 秒ごとに更新することです。私が試したがうまくいかない2つのアプローチは次のとおりです。
方法 1
TTimer
ProxyMethod の実行中に経過時間クロックを更新する 1 秒間隔で を使用します。ProxyMethod を呼び出す直前にタイマーを有効にします。ProxyMethod の実行中は、OnTimer
イベントは発生しません。コード内のブレークポイントに到達することはありません。
方法 2
タイマーが
TJvThreadTimer
. ProxyMethod の実行中にOnTimer
イベントが発生しOnTimer
ますが、ProxyMethod が完了するまでコードは実行されません。これはOnEvent
、ProxyMethod が完了した後、コード内のブレークポイントが立て続けにヒットするためです (OnTimer
イベントがすべてメイン VCL スレッドでキューに入れられたように)。
さらに、遅い ProxyMethod の実行中にクライアント アプリの任意の場所をクリックすると、アプリがハングしているように見えます (タイトル バーに「応答していません」と表示されます)。
最良の解決策は、ProxyMethods の実行を別のスレッドに移動することだと思います。ただし、既存の解決策があるに違いありません。関連するハングしたアプリの問題は、一般的な苦情のように思われるからです。私は解決策を見つけることができません。
任意の提案をいただければ幸いです。それ以外の場合は、ProxyMethod の実行を別のスレッドに移動することに同意します。
string - ゼロが前にある Datasnap 文字列パラメーターは、ゼロが削除されます
DataSnap サーバーに、GET 要求によってトリガーされ、単一の文字列パラメータを受け取るプロシージャがありますが、クライアントが任意の数のゼロの後に任意の数の数字 (つまり、01、002、0047、など)、どういうわけか先頭のゼロが切り取られており、それらも必要です。
これがどこで発生するかを見つけようとして Delphi をデバッグしてきましたが、サーバー側で発生した場合でも、何も見つかりませんでした。何か案は?
sql - Delphi: JSON 配列内の JSON オブジェクトへのアクセス
JSON オブジェクトがあります。次のような jObject と名付けましょう。
ご覧のとおり、2 つのペアが含まれています。そのうちの 1 つは、この場合は 3 つのオブジェクト (オブジェクトの量は動的です) を持つ配列で、複数の「キー: 値」があります (これらは変化せず、常に同じ 5 つのフィールドです)。 )、SQLデータベースに挿入したい、「キー」は列、「値」はフィールドです。質問は、各オブジェクトに個別にアクセスするにはどうすればよいですか?
コード的には、この配列を含むペアを jPair に入れて抽出しました。
次に、アレイをキャプチャしました
(また、おまけとして、jArray.Size を評価すると、結果は 6226004 になります。何?)
delphi - 3G 経由で DataSnap サービスを呼び出す HTTP「Bad Request」エラー
メソッドへのパラメータとして特に大きな文字列を渡すときに、DataSnap クライアントがサーバー メソッドの呼び出しを受信するエラーを発見しました。この呼び出しにより、「Bad Request」の DBXException エラーが発生します。私のクライアントは Android フォンで実行されていますが、エラーは 3G を使用している場合にのみ発生し、Wi-Fi ではすべて正常に動作します。他のすべての呼び出しは正常に機能します。大きなパラメーターを指定したこの呼び出しだけです。
3G ネットワークを使用する場合、基礎となる HTTP 呼び出しのサイズに制限はありますか? 私の DataSnap サーバーは Delphi XE2 で構築されており、Android (Java) 用の DataSnap モバイル コネクタ フレームワークを使用しています。
更新:私がテストしていたモバイルは3ネットワーク(3)にあります。それ以来、O2 を使用している別の電話で試してみましたが、これは 3G で問題なく動作しました。問題はモバイル ネットワーク固有のものでしょうか?
どんな助けでも感謝します、
ジョナサン
multithreading - データからセッションを取得する
アプリケーションのメイン スレッド用のセッションがあり、そのセッションにはアクセスしたい貴重なデータが含まれています。通常はメソッドを使用してセッションを取得するだけですが、現在はメイン スレッドの外でTDSSessionManager.GetThreadSession
このセッションにアクセスする必要があります。
セッション内のデータの一部を何らかの形で参照してセッションを取得することを考えましたが、方法がわかりません。現在のスレッド以外からセッションを取得する方法はありますか?