タグ付けされた質問 「delphi」

Delphiは、Object Pascalを使用してネイティブのWindows、macOS、iOS、Androidアプリケーションを迅速に開発するための言語です。名前は、Delphi言語のほか、Delphiプロジェクトの編集とデバッグに役立つIDEを指します。

13
Borland Delphiはどうなりましたか?[閉まっている]
Delphiはもうあまり人気がないという印象があります。しかし、今は仕事で、私たちがまだ使用している古いDelphiプログラムにいくつかの変更を加える必要がありました。私はBorland Developer Studio 2006を使用しましたが、実際に使用した経験はほとんどありませんでしたが、非常に快適で直感的に作業できました。Delphiはまだ広く使用されていますか?私は単にそれを認識していませんか、それとも他の理由がありますか?
69 delphi 

11
レガシーコードを引き渡すためのベストプラクティス
数か月後に同僚が新しいプロジェクトに移り、私は彼のプロジェクトの1つを引き継ぎます。準備するために、私はすでにMichael FeathersのLegacy Codeでの効果的な作業を注文しました。 しかし、この本は、私がこれまで見つけたレガシーコードに関するほとんどの質問と同様に、コードをそのまま継承する場合に関係しています。しかし、この場合、私は実際に元の開発者にアクセスでき、秩序あるハンドオーバーのための時間があります。 私が継承するコードの一部の背景: 機能している:既知のバグはありませんが、パフォーマンス要件が上昇し続けるにつれて、それほど遠くない将来にいくつかの最適化が必要になります。 文書化されていない:メソッドおよびクラスレベルでの文書化はほとんどありません。しかし、私は長年そのAPIに対して(ブラックボックスとして)書いてきたので、コードがより高いレベルで行うことになっていることはよく理解されています。 上位レベルの統合テストのみ: APIを介した他のコンポーネントとの適切な相互作用をテストする統合テストのみがあります(再び、ブラックボックス)。 非常に低レベルで速度が最適化:このコードはアプリケーションシステム全体の中心であるため、その多くは長年にわたって数回最適化され、非常に低レベルです(一部には特定の構造体用の独自のメモリマネージャーがあります) /記録)。 コンカレントおよびロックフリー:コンカレントおよびロックフリープログラミングに非常に精通しており、実際にこのコードにいくつかの部分を提供しましたが、これにより複雑さがさらに増します。 大規模なコードベース:この特定のプロジェクトは1万行を超えるコードであるため、すべてを説明する方法はありません。 Delphiで書かれています。この問題を言語に依存しないと信じているので、私はこれをそこに置くつもりです。 彼の出発までの時間をどのように費やすのが最適か疑問に思いました。ここにいくつかのアイデアがあります: マシン上ですべてをビルドする:すべてをソースコード管理にチェックインする必要がありますが、たまにファイルをチェックインすることを忘れていないので、これがビジネスの最初の順序になるはずです。 より多くのテスト:変更を行うときに導入したバグを早期にキャッチできるように、より多くのクラスレベルの単体テストが必要ですが、現在のコードはテストできません(巨大なクラス、長いメソッド、多すぎる相互依存関係)。 何を文書化するか:まず最初に、低レベル/高度に最適化された性質などのために理解するのが難しいコードの領域に文書を集中するのが最善だと思います。見苦しくてリファクタリング/リライトが必要なものがいくつかあるのではないかと心配していますが、実際には私が見逃すかもしれない正当な理由でそこにあった最適化です(Joel Spolsky、Things You Should絶対にしない、パートI) 文書化の方法:いくつかの散文を伴うアーキテクチャのクラス図と重要な機能のシーケンス図が最適だと思います。 誰が文書化するのか:私は彼に文書を書いてもらうか、彼にそれを私に説明してもらうために、何が良いだろうと思っていたので、文書を書くことができます。私は、彼には明らかであるが私ではないものが適切にカバーされないことを恐れています。 ペアプログラミングを使用したリファクタリング:これは時間の制約のために実行できない場合がありますが、多分私は彼のコードの一部をリファクタリングして、物事がそうである理由についての入力を提供するために彼がまだいている間にそれをより保守可能にすることができます。 これにコメントして追加してください。このすべてを実行するのに十分な時間がないため、特に優先順位を付ける方法に興味があります。 更新:引き渡しプロジェクトが終了したので、以下の回答で自分の経験を使ってこのリストを拡張しました。

10
WPF対WinForms-Delphiプログラマーの視点?
私はWPFとWinFormsの主要なスレッドのほとんどを読みましたが、試行されたものと真の以前の技術(Winforms)と、その後継者(WPF)を決定するときに陥りがちな不幸なアンビバレンスに陥りました。 私は長年にわたりベテランのDelphiプログラマであり、ついにC#へのジャンプを始めています。Delphiの仲間であるDelphiプログラマーは、Delphiで有名なAnders HejlsbergがC#の設計者であることを知って興奮していることを理解します。DelphiのVCLカスタムコンポーネント、特にマルチコンポーネントウィザードや子コンポーネントのコンテナとして機能するコンポーネントの作成に関与するコンポーネントには強い依存症があります。 その背景から、DelphiからC#に切り替えた皆さんが、私の最初のアプリケーションを作成するためのWinFormsとWPFの決定に役立つことを願っています。コーディングや、完全なオートコンプリートや適切なデバッガーサポートなどによってAPIの機能や呼び出しに関する情報がすぐに見つかるなど、バグの回避策を見つけることができるので、私は非常に焦ります。 。 2009年初頭のSOスレッドとコメントは、C#UI開発コーディングを損なう可能性のあるフラストレーションの可能性に関して、WPFに大きな懸念を示しています。一方で、放棄されていなくてもすぐに交換される(WinForms)API技術を学ぶのに膨大な時間を費やすことは、同様に厄介であり、WPFの食欲をそそるGPUサポートを見つけます。 したがって、私のアンビバレンス。私はどちらの技術もまだ習得していないので、新たなスタートを切るまれな機会があり、大きな「未学習」曲線に直面する必要はありません。一方、WPFの使用がイライラしたり、私のような短気なRAD開発者に他の大きなマイナスの結果をもたらす場合は、WPFが同じレベルのサポートと使いやすさを達成するまでWinFormsを使い続けます。プログラマーとしての私の心理を具体的に示すために、私はVBを使用し、その後Delphiを使用して、初期のWindowsアプリの開発中に多くの開発者が苦労したWindows UIライブラリであるMFCによるコーディングの非常に大きな痛みを完全に回避しました。MFCを回避できたことを後悔したことはありません。 Anders HejlsbergがWPFおよび/またはWinFormsのアーキテクチャに手を携えているかどうか、そしてどちらかのコードベースで具体化された創造的なビジョンと使いやすさに不一致があるかどうかを知ることも安心です。最後に、Delphiプログラマーのために、WinFormsとは対照的にWPFを使用するとき、特にデバッガーのサポートに関して、「IDEショック」がどれだけ必要かを教えてください。2011年に更新された求人市場のコメントも歓迎します。
38 c#  wpf  winforms  delphi  microsoft 

1
なぜ.NETフレームワークには、ファーストクラス型としてのクラスの概念がないのですか?
C#と.NETフレームワークは、Delphiの主任開発者であるAnders Hejlsbergによって設計された、本質的に「Javaのように書き換えられたDelphi」として始まったという歴史に詳しい人にはよく知られています。それ以来、物事はかなり分かれていますが、類似点の初期には非常に明白だったため、。 しかし、私は最近いくつかの.NETのものを見てきましたが、Delphiの最も興味深く有用な機能の1つは完全に欠落しているようです。それに慣れていない人のTClassために、Type型は.NET の型と同様に、クラスへの参照を表します。しかし、.NETがTypeリフレクションに使用する場合、DelphiはTClass言語の非常に重要な組み込み部分として使用します。クラスサブタイプ変数や仮想クラスメソッドなど、それなしでは存在しない、存在できないさまざまな便利なイディオムが可能になります。 すべてのOO言語には仮想メソッドがあり、異なるクラスがメソッドの同じ基本概念を異なる方法で実装し、その後、呼び出されたオブジェクトインスタンスの実際のタイプに基づいて実行時に適切なメソッドが呼び出されます。Delphiは、この概念をクラスに拡張します。特定のクラスサブタイプとして定義されたTClass参照がある場合(つまりclass of TMyClass、変数が継承する任意のクラス参照を受け入れることができますがTMyClass、階層スコープの外部ではない)それは、クラスの実際の型を使用して、インスタンスなしで呼び出すことができます。たとえば、このパターンをコンストラクターに適用すると、Factory実装が簡単になります。 .NETには同等のものはないようです。クラス参照(特に仮想コンストラクタや他の仮想クラスメソッド!)と同じくらい便利なのに、なぜそれらが取り残されたのかについて何か言いましたか? 具体例 フォームの逆シリアル化 Delphi VCLはDFM、コンポーネント階層を記述するためのDSL である形式でフォームを保存します。フォームリーダーがDFMデータを解析すると、次のように記述されているオブジェクト間で実行されます。 object Name: ClassName property = value property = value ... object SubObjectName: ClassName ... end end ここで興味深いのはそのClassName部分です。各コンポーネントクラスは、その時点でTClassコンポーネントストリーミングシステムに登録しinitializationます(静的コンストラクターは、わずかに異なるだけで、起動時に直ちに発生することが保証されています)。これにより、クラス名をキーとしてstring-> TClassハッシュマップに各クラスが登録されます。 各コンポーネントはから派生しTComponent、単一の引数をとる仮想コンストラクタを持ちますOwner: TComponent。どのコンポーネントもこのコンストラクタをオーバーライドして、独自の初期化を提供できます。DFMリーダーはクラス名を読み取ると、前述のハッシュマップで名前を検索し、対応するクラス参照を取得し(または、存在しない場合は例外を発生させます)、仮想TComponentコンストラクターを呼び出します。これは、登録関数がTComponentから派生するために必要なクラス参照を取得し、適切なタイプのオブジェクトが作成されるためです。 これがないと、WinFormsの同等物は...まあ...それを率直に言って大きな混乱であり、新しい.NET言語が独自のフォーム(デ)シリアル化を完全に再実装する必要があります。考えてみると、これは少し衝撃的です。CLRを持つことの全体的な目的は、複数の言語で同じ基本インフラストラクチャを使用できるようにすることなので、DFMスタイルのシステムは完全に理にかなっているでしょう。 拡張性 私が書いたイメージマネージャークラスには、データソース(イメージファイルへのパスなど)を提供し、コレクションにはないがデータソースでは使用可能な名前を取得しようとすると、新しいイメージオブジェクトを自動的に読み込みます。class ofベースイメージクラスとして型付けされたクラス変数があり、作成される新しいオブジェクトのクラスを表します。デフォルトが付属していますが、特別な目的で新しい画像を作成する場合、画像をさまざまな方法で設定する必要があるという点がいくつかあります。(アルファチャネルなしで作成する、PNGファイルから特殊なメタデータを取得してスプライトサイズを指定するなど) これは、大量の構成コードを記述し、新しいオブジェクトを作成する可能性のあるすべてのメソッドに特別なオプションを渡すことで実行できます...または、仮想メソッドをオーバーライドするベースイメージクラスのサブクラスを作成することもできます。問題のアスペクトが構成された後、try / finallyブロックを使用して、必要に応じて「デフォルトクラス」プロパティを一時的に置き換え、復元します。クラス参照変数を使用してこれを行うのははるかに簡単であり、代わりにジェネリックを使用して行うことはできません。

4
GUIプログラミング用のDelphiとC#[終了]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私はCの知識がほとんどないPHPとPythonのバックグラウンドから来ています。Windowsプラットフォーム用のデスクトップアプリケーションを考えているので、多くのWebベースのアプリケーションを作成しました。 友達がデルファイに行くように言ってくれて、他の人はC#が最高だと言っている、まあ、私が探しているのは シンプルさ 生産性 優れたAPIドキュメント 速度 ドラッグアンドドロップ マルチスレッドと優れたネットワークAPI ありがとう
20 c#  delphi 

6
優れたユーザーインターフェイスのインスピレーションはどこで得られますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 6年前に閉鎖されました。 私が現在アップグレードしているデスクトップアプリケーションのメイン画面インターフェースを設計する限り、私は精神的なブロックを持っています。このプログラムを最初に開発したとき、画面解像度は640 X 480でした。今日では、複数の画面解像度があります。 デスクトップアプリケーションの優れたメイン画面レイアウトのアイデアはどこにありますか?

13
Pascalの進化に貢献した機能は何ですか?
Pascal言語の詳細な履歴を編集していますが、いくつか欠落している詳細があります。 今日、非常に多くの機能がありますが、当然のことです。Pascalの進化に大きく貢献したのはどの機能で、なぜ重要なのですか? プラットフォームやフレームワークの機能ではなく、言語の機能を探しています。そのため、演算子のオーバーロードやデフォルトのパラメーターに似ていますが、Linuxサポートや新しいリッチテキストウィジェットではありません。 Pascalにはいくつかの異なるフレーバー(Delphi、Free Pascal、Oxygene、Quick Pascal、Apple Pascalなど)があり、同じ機能を異なる時間に並行して導入したことを知っています。それは大丈夫です。Pascal言語全体と、重要なマイルストーンがいつ発生したか(日付、バージョンなど)を見ています。
17 history  delphi  pascal 

2
使用できる開発の種類を制限するコンパイラのライセンスの先例はありますか?
最近、Delphi XE3の新しいEULAにより、クライアントサーバーライセンスパックを追加購入しないと、Professionalエディションでのクライアントサーバーの開発が禁止されることが明らかになりました。これは、Professionalバージョンに機能がないと言うことではありませんが、ライセンスは、サードパーティまたは自家開発のソリューションであっても、開発者が特定のクラスの開発にコンパイラを使用することを明確に禁止します。 したがって、私の質問は、使用できる作業のクラスを禁止しているコンパイラまたは同様の創造的なツールの先例があるかどうかです。具体的には、Delphi XE3のような商用ライセンスの「プロフェッショナル」ツール。また、そのような制限は法的に強制可能ですか? 商業目的での使用を制限している教育版または初心者版のツールが過去にあったことは知っていますが、それらは「プロフェッショナル」ツールとして販売されていませんでした。また、多くのコンピューティングソフトウェアおよび機器には、「生命維持装置」または「原子力」で使用するためではなく、アクティビティを禁止するよりも責任を回避するという免責条項があることを知っています。 MicrosoftがFrontPageに制限を設けたことを思い出して、Microsoftにあまり反映されていないWebサイトを作成することはできなかったようですが、合法的にテストする前に制限を撤廃しました。 更新: EULAは、製品が出荷される前に、公共の抵抗のために廃止されました。
16 licensing  delphi  eula 

7
Delphi XE2はプラットフォーム間でどのように機能しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 だから私はDelphi XE2について少し読んでいて、おそらくワールドツアーに行くでしょう今月中にシカゴで、誰も答えられない場合はこの質問。 私が疑問に思うのは、私のDelphiコードがMacでどのように実行されるのかということです。プログラムを実行するために、他に何かを実行する必要がありますか(仮想マシンなど)。

2
オベロンは本当に「より良いパスカル」ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 Niklaus Wirthを読むと、Pascalの人気にもかかわらず、彼は(PascalとModulaの「洗練された」後継者として)Oberonがあまり人気を得なかったことに気付かないことがあります。私はOberonで何もしませんでしたが、Pascal開発者向けのOberonのページを読んで、Delphi / pascal開発者としての変更の多くが本当に好きではありませんでした。 予約語を常に大文字にする 言語の大文字と小文字を区別する 列挙型を取り除く Oberonについてどう思いますか、それは本当にあなたの観点から「より良いPascal」ですか?

5
Microsoftの新しいLocalDBを使用するアプリケーションをデプロイするには何が必要ですか?
この新しいLocalDBをユーザーのマシンで実行するために、どのMicrosoftコンポーネントをインストールする必要があるか知りたいのですが。 現在CTP3で:SQL Server Express LocalDB LocalDBは、SQL Server Express Editionの新しい軽量の展開オプションであり、非常に短時間でインストールできる前提条件が少なくなっています。これは、デスクトップアプリケーションまたはツール用の組み込みSQL Serverデータベースを必要とする開発者に最適です。LocalDBはSQL Expressと同じプログラミング機能をすべて備えていますが、サービスとしてではなく、アプリケーションとインプロセスで実行されます。SQL Serverコード名「Denali」CTP3ダウンロードの一部として入手できます。 上記はMicrosoftのWebサイトからの抜粋CPT3の新機能 これは、小さな1ユーザーのデスクトップアプリケーションに最適なSQLデータベースのように聞こえます。インストールに含める必要があるものを見つけようとしています。これを組み込みデータベースとして使用したいのですが、Microsoftコンポーネントをインストールする必要があるかどうか、または他のMicrosoftコンポーネントが以前にインストールされていることを確認します。 この新しいLocalDBを実行するためにどのMicrosoftコンポーネントをインストールする必要があるか知っている人はいますか?必要なコンポーネントの存在を自動的に検出してインストールするインストーラーはありますか?

1
Delphi PascalにMVVMとMVCを実装するためのベストプラクティス
私はDelphiパスカルプログラマーで、最新のEmbarcadero delphi XEを使用しています。モデルビューコントローラーやモデルビュービューモデルなどのデザインパターンを利用したいと思います。 ただし、これをPascalで行うためのベストプラクティスについては、Webに多くはないようです。私が見つけることができるほとんどの例はC#にあり、一部の言語機能はPascalに存在しません。つまり、これらの機能を実装する方法を見つける必要があるかもしれません。 この記事のコードをここで適応させようとしています 私が直面している問題をリストします null許容型 PascalにはC#のようにnull許容型がないため、独自に作成しました。 TNullable<T> = record strict private fHasValue : boolean; fValue : T; function GetValue:T; procedure SetValue(newValue : T); public property HasValue : boolean read fHasValue; property Value : T read GetValue write SetValue; procedure SetToNull; end; 実装セクション function TNullable<T>.GetValue:T; begin if fHasValue then …

4
整数はデータ型として使いすぎていませんか?
ほとんどのアプリケーション開発者は、本当に符号なし整数を使用するつもりで符号付き整数を使用していますか?私はいつもそれをしているので、同僚もそうします。他の多くの広範なコードベース(Delphi VCL以外)は見たことがなく、インターネット上の例では通常整数を使用しています。一方、VCL開発者は独自のデータ型を使用します(これは、変数を宣言するための最も非遅延的な方法です)。 このようなコードは少し恐ろしいようです TStuffRec = record recordID : Integer; thingID : Integer; otherThingID : Integer; end; それが次のように書けるとき TStuffRec = record recordID : Cardinal; thingID : Cardinal; otherThingID : Cardinal; end; 機能的には、これらのレコードはほぼ同じように機能します(64ビットDelphiでも同じように機能し続けることを期待しています)。ただし、非常に大きな数では変換の問題が発生します。 ただし、unsigned intを使用することにも欠点があります。主に2つを混合することがいかにうるさいかから生じます。 本当の質問は、これは実際にベストプラクティスについて考えられたり、ベストプラクティスに含まれたりすることですか?通常は開発者次第ですか?

3
OOで場所、学術用語、さまざまなコホートをモデル化する方法
私は大学向けのアプリに取り組んでいます。ケースはこれです: 各大学にはいくつかの学術プログラムがあります。各プログラムには多くの主題(モジュール)があります。各科目は異なる場所で提供できます。学年は学期に分かれており、各学期は数週間続きます。すべてのモジュールが同じ場所で各学期に提供されるわけではなく、プログラムは同じ学年度内の異なる開始日を持つ異なる学生グループに提供できます。 たとえば、A大学はニューヨークとロンドンでMBAプログラムを提供しています。MBAには、1学期(10週間)ごとに2つのモジュールがあります(MBA-NYとMBA-Lなど)。需要に応じて、通常の摂取量よりも1週間遅れて開始するプログラム(したがって、この用語ではモジュール)の3回目の実行を行うことができます。したがって、別のMBA-NYグループがありますが、タイムラインが異なります。ただし、このグループは、MBAカリキュラムの同じ用語の一部でもあります(つまり、2つのグループはMBAの用語2を実行しています)。 私の質問は、場所、学術用語、OOデザインでの実行をモデル化する方法です。場所、学術用語(およびおそらく「実行」)は、大学オブジェクトまたはプログラムオブジェクトのプロパティですか?またはモジュールオブジェクトの? 更新:あなたの回答に基づいて、私の困難は学問の用語、コホート、および異なるタイムラインをモデル化することです。それは私にはまっすぐに見えるので、実際には場所ではありません。説明にそれを含めて、接続を示します。

2
DelphiはC#言語にどのように影響しましたか
私は特に(フレームワークではなく)言語の影響を探しています。一見すると、C#はC / C ++またはJavaの進化のようです。しかし、C#はDelphiと同じデザイナーを持っていることを知っています。彼はいくつかの類似点を認め、「優れたアイデアはただ消えるだけではない」とさえ述べています。JavaまたはC / C ++にないC#の何かについて私が見た1つの例はプロパティです。それですか?他にありますか?
8 c#  history  delphi 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.