問題タブ [delphi-2009]

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 投票する
2 に答える
1276 参照

database - コンパイルできない D2009 VCL ユニット

Delphi 2009 の TFields の実装にバグが見つかり、簡単なパッチを書きました。DB.pas をプロジェクト フォルダにコピーし、プロジェクトのファイル リストに追加しましたが、コンパイルできません。最初の 2 つのエラー メッセージは、コード内の指定された場所に移動しても意味がありません。

確かに、適切にコンパイルできるものがあるとすれば、それは CodeGear のコードです。彼らはすでにそれをコンパイルして、VCL コンポーネントを作成しています。それで、私は何が欠けていますか?コンパイラの出力は次のとおりです。

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

delphi - イベント ハンドラ (TButton OnClick など) でクロージャを使用できますか

イベントハンドラーでクロージャーを使用しようとすると、コンパイラーは次のように文句を言います:

互換性のない型: 「メソッド ポインタと通常のプロシージャ」

私は理解しています..しかし、メソッドポインターでクローザーを使用する方法はありますか? できるかどうかを定義する方法は?

例:

ありがとう!

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

delphi - ネストされた型のメソッドをオーバーライドするにはどうすればよいですか?

Delphi 2009 でカスタム TObjectList の子孫を取得しました。その列挙子を少し操作して、MoveNext メソッドにフィルタリング機能を追加して、特定のオブジェクトをスキップさせたいと考えています。MoveNext は、仮想メソッドである DoMoveNext によって呼び出されるため、これをオーバーライドすることは難しくありません... 1 つのことを除いて。TObjectList の TEnumerator は独自のクラスではありません。TObjectList 宣言内でネストされた型として宣言されています。

子孫クラスで TEnumerator.DoMoveNext をオーバーライドする簡単な方法はありますか、または TEnumerator 全体を再実装する必要がありますか? それほど大きなクラスではありませんが、できれば冗長性を最小限に抑えたいと思います...

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

algorithm - BOM(バイトオーダーマーク)が欠落している場合、どうすればエンコーディングを最もよく推測できますか?

私のプログラムは、さまざまなエンコーディングを使用するファイルを読み取る必要があります。それらは、ANSI、UTF-8、またはUTF-16(ビッグエンディアンまたはリトルエンディアン)の場合があります。

BOM(バイト順マーク)があれば問題ありません。ファイルがUTF-8かUTF-16BEかLEかはわかります。

BOMがない場合、ファイルはANSIであると想定したかったのです。しかし、私が扱っているファイルにはBOMがないことがよくあります。したがって、BOMがないということは、ファイルがANSI、UTF-8、UTF-16 BE、またはLEであることを意味する場合があります。

ファイルにBOMがない場合、ファイルの一部をスキャンして、エンコーディングのタイプを最も正確に推測するための最良の方法は何でしょうか。ファイルがANSIの場合は100%近く、UTF形式の場合は90年代後半になりたいです。

これを決定するための一般的なアルゴリズムの方法を探しています。しかし、私は実際にはUnicodeを知っていてTEncodingクラスを持つDelphi 2009を使用しているので、それに固有のものはボーナスになります。


答え:

ShreevatsaRの回答により、Googleで「ユニバーサルエンコーディング検出器デルファイ」を検索しました。この投稿が約45分間生きていた後、この投稿が1位に掲載されたことに驚きました。それは速いグーグルボッティングです!また、Stackoverflowがすぐに1位になるのも驚くべきことです。

Googleの2番目のエントリは、さまざまな言語のアルゴリズムをリストした文字エンコード検出に関するFredEakerのブログエントリでした。

そのページでDelphiについての言及を見つけたので、Delphiで記述されMozillaのi18nコンポーネントに基づいたSourceForgeの無料のオープンソースChsDet文字セット検出器に直接たどり着きました。

素晴らしい!答えてくれたすべての人に感謝します(すべて+1)、ShreevatsaRに感謝し、Stackoverflowにもう一度感謝します。1時間以内に私の答えを見つけるのを手伝ってくれました!

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

delphi - Delphi 2009 のアプリケーションをデフォルトで 2 番目のモニタで開くにはどうすればよいですか?

デバッグ中は、Delphi でアプリケーションを常に 2 番目のモニターで開く必要がありますが、常に最初のモニターで開きます。閉じる前にアプリケーションの配置を保存できることはわかっていますが、デバッグ モードでは常に 2 番目のモニターで開く必要があります。

それを行うために Delphi 2009 を構成する方法はありますか?

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

delphi - WideStringはDelphi2009のStringと同じですか

2009年に、さまざまなポイントでワイドストリングを使用したいくつかのアプリケーションを再コンパイルすると、奇妙な動作が発生します。

Delphi 2009アプリでは、WidestringはStringと同じですか?

0 投票する
3 に答える
893 参照

delphi - acrobat は、付箋として PDF に追加された注釈をどのようにエンコードしますか?

私たちは何年もの間、アプリケーションの ActiveX コントロールを介して PDF への付箋/注釈/コメントの読み書きを行ってきました。最近、Unicode をサポートする Delphi2009 にアップグレードしました。以下が問題を引き起こしています。

電話すると

CAcroPDAnnot.GetContents

結果はかなり奇妙に見え、Unicode Char が失われます。通常は ????? が返される ansi 文字列として保存するのとは異なります。代わりに、次のような文字列を取得します

‚És‚"ú‚É•—Ž×‚ð‚Ђ¢‚½‚ç</p>

日本語の文字列の場合。

ただし、pdf自体のメニューを介してpdfのコメントをデータファイルに保存すると、次のようなファイルに書き込まれます

0kˆL0Oeå0k˜¨ª0'0r0D0_0‰</p>

後者は、エクスポートして acrobat pdf に再インポートすることができ、正しい Unicode 文字を再作成します。ただし、コードで CAcroPDAnnot.GetContents を呼び出すと、別のものとして戻ってきます。

  1. CAcroPDAnnot.GetContents は壊れていますか?
  2. 知っておくべきエンコード方式はありますか?
  3. 私ができるかもしれない代替手段はありますか?

ありがとう

0 投票する
7 に答える
4490 参照

delphi - RAD Studio 2009 で Unicode サポートを無効にすることはできますか?

RAD Studio 2009 で少し問題があります。
ご存知のように、MSVS で Unicode サポートをオフに切り替えることができます (ソリューションを右クリック -> プロパティ -> 文字セット = 設定なし)。RAD Studio でこの機能を見つける必要があります。存在することは知っていますが、正確な場所がわかりません。
ソケット チャットの大学プロジェクトでの私の仕事を止める唯一のことです。
PS CodeGear 公式サイトからアップデートをインストールした後に問題が発生しました。

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

delphi - Generics: "CONSTRUCTOR 制約" とは?

基本オブジェクト クラスのサブクラスを保持するように設計されたカスタム TObjectList 子孫を作成しました。次のようになります。

新しいリストはそれぞれ、空白のオブジェクトが 1 つで始まるようにしたいと考えています。とても簡単ですよね?しかし、コンパイラはそれを好まない。それは言います:

「型パラメーター宣言でコンストラクター制約なしで新しいインスタンスを作成できません」これはジェネリック関連のものであるとしか思えません。何が起こっているのか、このコンストラクターを機能させる方法を知っている人はいますか?

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

delphi - 特定の基本クラスから汎用オブジェクト リストを機能させるにはどうすればよいですか?

ブログの投稿 (どこにあるか覚えていません) で、これがジェネリック オブジェクトの特定の基本型を持つジェネリック ベースのクラスを宣言する方法であると読みました。そして、コンパイラはそれを問題なく受け入れます。でも使おうとすると協力してくれない。

これにより、コンパイラ エラーが発生します。

[DCC エラー] my_database.pas(1145): E2010 互換性のない型: 'TDescendantDatafile' および 'TBaseDatafile'

問題は、1145 は有効な回線でさえないということです。問題のファイルは #1142 で終わり、問題の型宣言は #20 行にあります。これは、コンパイラの不具合ではないかと思います。それとも、構文が正しくないだけですか?これを機能させる方法を知っている人はいますか?

編集: Jim は、試してみると問題なくコンパイルできると指摘しました。もう少し情報: 基本データファイル型と汎用リストは同じユニットで宣言されていますが、TDescendantDatafile は 2 番目のユニットにあり、TDescendantList は 3 番目のユニットに定義されています。私はすでに D2009 のコンパイラで、ジェネリックが複数のユニットにまたがって型をめちゃくちゃにするバグを発見し、報告しました。これは関連している可能性があります。誰でもこれを確認できますか?