問題タブ [jedi-code-library]

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

delphi - JCL UNITVERSIONING を使用する理由

JCL ライブラリには、UNITVERSIONING の条件定義があります。このオプションが存在する理由がわかりません。また、これを使用する方法もわかりません。JclUnitVersioning.pas というユニットがあることは知っていますが、用途が見つかりません。

実際のプロジェクトでこれをどこで使用しますか?

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

delphi - 例外を発生させずに JCL でコールスタックをログに記録するにはどうすればよいですか

バックグラウンド

Devexpress のグリッドで「Raised EConvertError: Cannot assign a nil to a TFont」という例外が発生することがあるという問題があります。

しかし、この本当の原因を追跡するために、cxEdit の Font を get および set メソッドの代わりに public プロパティに変更しました。ここで、コールスタックをログに記録します。

私の質問

通常、JCL は、例外が発生したときにコールスタックをログに記録するために使用されます。しかし、レイズ例外を使用せずにコールスタックをログに記録し、これについてユーザーにダイアログを表示するにはどうすればよいですか?

私は行を見つけました:

JclDebug で使用しますが、使用できません。誰かがコールスタックを取得する方法の例を持っていれば、私は幸せです.

よろしく ローランド・ベングソン

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

delphi - 実行可能ファイルに含まれる JCL デバッグ情報にアクセスしますか?

実行可能ファイルに含まれるJedi Debug Information (JDBG)にアクセスする方法はありますか?

Microsoft デバッグ ツールは、バイナリ内のスタック チェーンを指摘してくれました。これらのオフセットが対応するメソッド/手順/関数を知りたいです。

明らかに私は電話をかけSendMessageていますが、どこからかわかりません。実行可能ファイルは、実行可能ファイルに埋め込まれた Jcl Debug 情報を使用してビルドされました。しかし、読み方がわかりません。

のいくつかの関数とクラスを見るとJclDebug.pas、すべてが現在のプロセス内のデバッグ情報を取得するように調整されているようです。たとえば、次のようになります。

現在のプロセスのアドレス空間でアドレスを取ります。HMODULEアドレスがどこにあるかがわかります。たとえば、次のようになります。

  • スタックオーバーフロー.exe
  • GDI32.dll
  • USER32.dll
  • KERNELBASE.dll
  • dwmapi.dll
  • UxTheme.dll

LoadLibrary(これは を返します) を使用HMODULEしてモジュールを手動でロードし、デバッグ情報を得るためにモジュール イメージを掘り下げるいくつかのクラスにそれをフィードできると考えていました。

保護されていることを除いて。

バイナリ (*.exe) を選択し、アドレスを入力して、

  • 関数
  • 方法
  • ファイル
  • 行番号

オフセットの。

例えば

可能?


編集:map私の最初のラフで準備の整ったアプローチは、圧縮ファイルを抽出して、それを見ることができるようにすることでした。ただし、リソースとして保存されません ( ? ):

ここに画像の説明を入力

一般的なツールの方が便利ですが:

ここに画像の説明を入力


更新

使ってみTJclDebugInfoListた; ItemFromModule配列プロパティが保護されたメソッドにアクセスすることに気付きました:

ただし、下位クラスの 1 つのコードTJclDebugInfoSourceが、仮想アドレスであると想定しているものをオフセット アドレスに変換しようとすると、アンダーフローが発生します。

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

delphi - JEDI JCL 圧縮ライブラリがスパンされたアーカイブ ファイルを開けない

概要:

JCL 圧縮ライブラリを取得して、スパンされたアーカイブを開くことができません。borlands 'windows.pas' で定義されているエラー「(0000001) Incorrect Function」が表示されます。

シナリオ:

JCL 圧縮の例を使用して圧縮された単一のアーカイブ。
-JCL サンプルと 7zip GUI の両方で解凍します。

JCL 圧縮の例を使用して圧縮された 7 つのファイルにまたがるアーカイブ。
-7zip gui のみで解凍します。JCL の例を使用した圧縮解除に失敗します。

7zip gui を使用して圧縮された単一のアーカイブ。
-JCL サンプルと 7zip GUI の両方で解凍します。

7zip GUI を使用して 7 つのファイルに圧縮されたスパン アーカイブ。
-7zip gui のみで解凍します。JCL を使用した解凍に失敗する

追加情報

JCL 圧縮のデモは、JCL ライブラリに含まれているものです。
JCL: 2.2.1.3970
7zip dll: 9.20.0.0 および 9.65.0.0
スパン アーカイブ セットのファイル名の例: "Test Archive.7z.002"
.tar および .7z 圧縮の両方で試行
異なるファイル サイズが使用されました。2048 バイトおよび 2048KB
Delphi 2009。

これは私が使用しているコードです。その JCL 圧縮デモから。「TJclDecompressArchive(FArchive).ListFiles」行でエラーが発生します。

JCL の例はファイルを認識しており、それらを開きます。(画像で使用されているzip形式。同じ問題)。 JCL 圧縮の例で開かれたファイルのイメージ。

おそらく誰かがこれに遭遇したことがありますか?
誰かが私を正しい方向に向けることができますか?.
お時間をいただきありがとうございます。

スコット M.

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

delphi - Delphi JCL 7zCompression を使用して、ファイル操作なしでインメモリ ストリームを圧縮/解凍できますか?

以前、 TJcl7zCompressArchive / TJcl7zDecompressArchive を使用してアーカイブ操作を行っていました。

今、ファイル操作なしでメモリ内ストリームを直接圧縮/解凍したいと思います。ただし、Web で検索している JCL デモの例を見ると、そのライブラリを使用してそれを行う方法が見つかりません。それを行うための他のツールを見つけましたが、圧縮率は 7zip ほど良くないようです。

これを達成する方法を示す指示やサンプルコードを誰かに教えてもらえますか? どうもありがとう!

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

delphi - DelphiXEでJCLを使用したスタックトレースはありません

Delphi2007からDelphiXEに変換したプロジェクトがあります。2007バージョンでは、JCLのデバッグ機能を使用して、例外が発生したときにスタックトレースを取得しました。実際、スタックトレースを取得するために次の行に依存するJCLの標準のExceptionDlgウィザードを使用しました。

これはDelphi2007で機能していましたが、XEでは機能しなくなりました(「空白」スタックをスローします)。

そのことを古典的なものに置き換えると

...動作します(したがって、マップなどにWRTが正しく設定されています)が、(残念ながら)現在のスタックトレース(もちろん、例外ダイアログが表示されます)が表示され、最後のスタックトレースは表示されません。例外。

これを修正する方法はありますか?

TIA

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

delphi - pre-vistaでDwmIsCompositionEnabled(JwaDwmApi)を使用すると、エラーが発生します

Windows Aeroが有効になっているかどうかを確認するために、次のコードを使用しようとしています。

ただし、pre-vistaマシンでこれを行うと、DWMApi.dllが見つからないため、アプリがクラッシュします。私もこのコードを試しましたが、2つのAVが連続して生成されます。これどうやってするの ?私はDelphi2010を使用しています。:)

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

delphi - JclCompression でファイルを圧縮する

JclCompressionJCL Demoを使用して .zip ファイルを保存 (圧縮) しようとしています。[読み取りと書き込み] タブの [保存] ボタンを押すと、デモが次のように呼び出します。

を実行する(FArchive as TJclCompressArchive).Compress;と、次の例外が生成されます。また、保存ボタンを押すと、フォームのキャプションに「アプリケーションが応答していません」と表示されることがあるため、デモをシャットダウンする必要があります。

このコードは正しいですか、それとも zip ファイルを正常に圧縮して保存するにはコードを変更する必要がありますか? JclCompressionこれらのクラスの使用方法を学習できるように、他のデモはありますか?

この問題を除けば、デモは正しく動作しているようです。zip ファイルを開く、新しい zip ファイルを作成する、ファイルを追加する、ディレクトリからファイルを追加する、選択したファイルを抽出する、すべてを抽出する、zip ファイルのプロパティを取得することができます。節約は難しそうですね。

Windows 7 で Delphi 2010 を使用しています。

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

delphi - TJclCompressArchive (プロジェクト Jedi)。圧縮形式の選択方法は?

Win7 x64 で Delphi XE を使用している場合は、Jedi Class Library ver. 3.45、および 7z.dll バージョン。9.20、

「//」付きのコメントとして上記の圧縮オプションを選択するにはどうすればよいですか?

ジェダイのドキュメントは事実上ゼロです。誰かがそのような問題に直面している可能性はありますか?

7z でいくつかの異なるバージョンの「ジョブ」を試してみました: tSevenZip、SevenZipVcl、SevenZip Api。

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

delphi - JCL: UnicodeIsWord の代わりに何を使用しますか?

リビジョン 3256 から 3594 の間にUnicodeIsWord()、JCL から削除されましたjclUnicode.pas。代わりに使用すべき代替方法または代替アプローチはありますか?