問題タブ [datamodule]
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.
delphi - Delphi スタイル: 単体テスト可能なコードのデータ モジュールを構築する方法は?
保守性を高めるために Delphi プログラムを構築する方法についてアドバイスを求めています。私は、Turbo Pascal でプログラミングすることを初めて学びましたが、ほとんどが C/C++ で数十年過ごした後、Delphi プログラミングを始めました。基本的な言語に違和感はありません。以前の C++ と C# の経験では、cxxtest と NUnit を使用して TDD に変換しました。
私はこのプログラムを継承し、現在は私が保守を担当しています。主にフォームといくつかのデータモジュールで構成されています。アプリケーションのビジネス ロジックとデータ アクセスは主にフォームに散らばっており、データ モジュールはほとんどグローバル ADO オブジェクトが存在する場所にすぎません。データベースへのアクセスは、通常、TADOQuery または TADOCommand のグローバル インスタンスを参照し、SQL テキストをオブジェクトの関連するプロパティにフォーマットし、その Open または Execute メソッドを呼び出すことによって行われます。
ビジネス ロジックをある程度カプセル化して、単体テストできるようにしようとしています。私はこの答えを見てきましたが、フォームからロジックを抽象化する限り、それは完全に理にかなっています。データ アクセスのベスト プラクティスとは何か疑問に思っています。私の考えでは、データ モジュールは一種のアプリ固有のミニ API (おそらくすべての仮想メソッド) を公開して、テスト用のモック オブジェクトに置き換えることができるようにする必要があります。この他の回答のリンクは、私が正しい方向に進んでいると確信させるいくつかの例を示していますが、それでも、データ モジュールに関する何らかのベスト プラクティス ドキュメントを見ることに興味があります。私が Google で見つけたページのほとんどは、データ バインドされたコントロールをクエリに接続することで設計時に実行できるすべてのクールなことについて、同じ種類の例を示していますが、あまり興味はありません。この時点で。
delphi - デザイン モードで TDataModule を取得する
作成されたすべてのオブジェクト (TDataModule 型など) を設計モード (コンポーネントの書き込み) で取得するにはどうすればよいですか?
delphi-2010 - TDataModuleの継承
TDataModuleを継承しようとすると、Delphiは子孫クラスをフォームのように扱い、フォントやクライアントのプロパティなどのプロパティを与えます。(実行時の「プロパティが存在しません」という例外)
それを機能させるために何ができますか?
delphi - datamoduleからタブシートの1つにあるコンポーネントにアクセスします
些細なことかもしれませんが、理解できないようです。私はRAIZEコンポーネント、つまりrzPageControl1を使用しており、シートの1つはPRO.It(rzPageControl1)がForm1にあります。これで、そのシートにcxTextEdit4があり、新しいレコードイベントでDatamodule2.Tablename2からアクセスする必要があります。
しかし、正しくアクセスできないようです...
誰かが構文を知っていますか?
私は試した ; Form1.rzPageControl1。などですが、デルファイに利用可能なコンポーネントをリストさせることができないようです....助けてください...
delphi - デルファイでデータモジュールを使用してデータセットインスタンスを分離する
私は、formA と FormB の 2 つのフォームで使用されるDelphi6
データ モジュールを使用しています。ADO
DataSet
各フォームにはDataset.Open()
inOnCreate
とDataset.Close()
in がありOnClose
ます。両方のフォームが同時に開いていて、formB が閉じている場合、データセットは formA で閉じられます。これを防ぐにはどうすればよいですか。基本的に、フォームごとにデータセットの個別のインスタンスが必要ですが、同時にデータモジュールを使用します。
wcf - 「データモジュール」を介してMVCモデルをWCFサービスにバインドするためのベストプラクティスは?
私はやや初心者なので、ご容赦ください。
パラメーターをサービスに渡す「データモジュール」クラスによって公開されているように、Web サービス (WCF) からデータを取得する MVC プロジェクトを構築しています。今私が持っているのは、次のようなビューモデルです。
次のような「データモジュール」クラス:
そして、次のようなコントローラー アクション:
すべてのコントローラーでこのようなデータを手動でバインドするのは非常にクリーン (または MVC のようなもの) ではないと思います。このようなデータをバインドするベスト プラクティスの方法はありますか?
delphi - プロジェクトがDelphiXEで開いているときに、メインフォームがDataModuleの画像とアクションにアクセスできないのはなぜですか?
私のDelphiXEアプリケーションは数日までは問題なく、何が悪いのか理解できません。私のプロジェクトレイアウト:
- ビジュアルコントロールはメインフォームにあります
- これらのコントロールのアクションと画像リストはデータモジュールにあります
プロジェクトを開くと、メインフォームには、コントロールに関連付けられているはずの画像やアクションがありません。コンパイルすると、「モジュール'winMain'は現在のプロジェクトに見つからないモジュール'modGeneral'にリンクしています。リンクを削除/別のモジュールにリダイレクトしますか?」というエラーメッセージが表示されます。
回避策:プロジェクトを開いた後でメインフォームを閉じ、プロジェクトマネージャーでモジュールをダブルクリックしてIDEでモジュールを開き(はい、現在のプロジェクトにあります)、メインフォームを再度開きますフォーム:すべてのアクションと画像が正しく表示されるようになりました。
Delphiの既知のバグは何だと思いますか?私のプロジェクトに問題がありますか?
delphi - クラスTADOConnection/TADOTableが見つかりません
さて、DataModuleフォームを作成し、すべてのデータベースコンポーネントをそこに移動して、デザイン時のフォームを少しクリーンアップすることを決定するまで、アプリケーションは正常に機能していました。Delphi XE2 Update 1と、これらのコンポーネント、TADOConnection、TADOTable、TADOQuery、TADOCommandを使用しています。メインフォームではなく、DataModuleフォームで上記の名前のコンポーネントを使用してアプリを初めて実行しようとするとすぐに、DPRからのこの行が実行されたときにエラーが返されるようになりました。
Application.CreateForm(TDataModule1, DataModule1);
発生したエラーは、クラスTADOCOnnectionが見つかりません。。TADOConnectionを削除してDataModuleフォームに再度追加したので、別のエラーが発生します。クラスTADOTableが見つかりません。TADOTable
、しかし、これは、DataModuleで作成順序が変更され、フォームで作成される最初のオブジェクトがaであるためだと思います。
uses
DataModuleからの私の句は次のとおりです。
uses System.SysUtils, System.Classes, Data.Win.ADODB, Data.DB;
このエラーを克服するためにuses句にADODBとDBを含めると述べている他の投稿を読みましたが、それは役に立たないようです。
私の完全なDPRファイルは次のとおりです。
DataModuleを作成するDPRファイルから行を削除して、メインフォームで手動で実行しようとしましたが、同じエラーメッセージが表示されると変更されます。
すべてのコンポーネントをメインフォームに戻す以外に、次に何を試すべきかわかりません。XE2ではDataModuleフォームが以前のバージョンのDelphiと同じように機能しません。また、コンポーネントがメインフォームにあるときに、同じTADOConnectionおよびTADOTableクラスが見つからないというメッセージが表示されないのはなぜですか。
どんな考えや洞察も大歓迎です。
ジェームズ
delphi - 実行時にfirebirdデータベースに接続するには?
コードを機能させるのに苦労しています。Delphi 7 のアプリケーションでデータベースに接続したいのですが、アプリケーションのフォルダを変更すると、たとえば別のコンピュータにインストールすると、データ モジュールが動作しなくなります。エラーは次のとおりです。
例外クラス EdatabaseError が発生し、「Missing Drivername propriety」というメッセージが表示されました
私の実際のコードは次のとおりです。
任意のパスまたはインストール場所で、.exe を使用してデータベースに接続したいと考えています。
delphi - Delphi - DLL の DataModule で TTable を使用する際のエラー
正常に動作するアプリがあります... DLL として実装するように移植しています。データベースと TTable コンポーネントを含むデータモジュールがあります... デザイン モードでは、データベースはアクティブに設定されています。テーブルはデータベースを指し、アクティブに設定されます。テーブルを右クリックしてフィールド エディターに移動し、すべての列を表示できるので、構造/プロパティが適切に設定されていることがわかります....
問題は実行時です...この行にAVが表示されます...
DLL 内でデータモジュールを使用するために何か特別なことを行う必要があるというヒントを Web で見ましたが、何も機能しません。
具体的なエラー メッセージは次のとおりです。
モジュール 'DocAssistCom.dll' のアドレス 06D4E22E でのアクセス違反 アドレス 0000070 の読み取り