問題タブ [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.
delphi - JCL UNITVERSIONING を使用する理由
JCL ライブラリには、UNITVERSIONING の条件定義があります。このオプションが存在する理由がわかりません。また、これを使用する方法もわかりません。JclUnitVersioning.pas というユニットがあることは知っていますが、用途が見つかりません。
実際のプロジェクトでこれをどこで使用しますか?
delphi - 例外を発生させずに JCL でコールスタックをログに記録するにはどうすればよいですか
バックグラウンド
Devexpress のグリッドで「Raised EConvertError: Cannot assign a nil to a TFont」という例外が発生することがあるという問題があります。
しかし、この本当の原因を追跡するために、cxEdit の Font を get および set メソッドの代わりに public プロパティに変更しました。ここで、コールスタックをログに記録します。
私の質問
通常、JCL は、例外が発生したときにコールスタックをログに記録するために使用されます。しかし、レイズ例外を使用せずにコールスタックをログに記録し、これについてユーザーにダイアログを表示するにはどうすればよいですか?
私は行を見つけました:
JclDebug で使用しますが、使用できません。誰かがコールスタックを取得する方法の例を持っていれば、私は幸せです.
よろしく ローランド・ベングソン
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
が、仮想アドレスであると想定しているものをオフセット アドレスに変換しようとすると、アンダーフローが発生します。
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形式。同じ問題)。
おそらく誰かがこれに遭遇したことがありますか?
誰かが私を正しい方向に向けることができますか?.
お時間をいただきありがとうございます。
スコット M.
delphi - Delphi JCL 7zCompression を使用して、ファイル操作なしでインメモリ ストリームを圧縮/解凍できますか?
以前、 TJcl7zCompressArchive / TJcl7zDecompressArchive を使用してアーカイブ操作を行っていました。
今、ファイル操作なしでメモリ内ストリームを直接圧縮/解凍したいと思います。ただし、Web で検索している JCL デモの例を見ると、そのライブラリを使用してそれを行う方法が見つかりません。それを行うための他のツールを見つけましたが、圧縮率は 7zip ほど良くないようです。
これを達成する方法を示す指示やサンプルコードを誰かに教えてもらえますか? どうもありがとう!
delphi - DelphiXEでJCLを使用したスタックトレースはありません
Delphi2007からDelphiXEに変換したプロジェクトがあります。2007バージョンでは、JCLのデバッグ機能を使用して、例外が発生したときにスタックトレースを取得しました。実際、スタックトレースを取得するために次の行に依存するJCLの標準のExceptionDlgウィザードを使用しました。
これはDelphi2007で機能していましたが、XEでは機能しなくなりました(「空白」スタックをスローします)。
そのことを古典的なものに置き換えると
...動作します(したがって、マップなどにWRTが正しく設定されています)が、(残念ながら)現在のスタックトレース(もちろん、例外ダイアログが表示されます)が表示され、最後のスタックトレースは表示されません。例外。
これを修正する方法はありますか?
TIA
delphi - pre-vistaでDwmIsCompositionEnabled(JwaDwmApi)を使用すると、エラーが発生します
Windows Aeroが有効になっているかどうかを確認するために、次のコードを使用しようとしています。
ただし、pre-vistaマシンでこれを行うと、DWMApi.dllが見つからないため、アプリがクラッシュします。私もこのコードを試しましたが、2つのAVが連続して生成されます。これどうやってするの ?私はDelphi2010を使用しています。:)
delphi - JclCompression でファイルを圧縮する
JclCompression
JCL Demoを使用して .zip ファイルを保存 (圧縮) しようとしています。[読み取りと書き込み] タブの [保存] ボタンを押すと、デモが次のように呼び出します。
を実行する(FArchive as TJclCompressArchive).Compress;
と、次の例外が生成されます。また、保存ボタンを押すと、フォームのキャプションに「アプリケーションが応答していません」と表示されることがあるため、デモをシャットダウンする必要があります。
このコードは正しいですか、それとも zip ファイルを正常に圧縮して保存するにはコードを変更する必要がありますか? JclCompression
これらのクラスの使用方法を学習できるように、他のデモはありますか?
この問題を除けば、デモは正しく動作しているようです。zip ファイルを開く、新しい zip ファイルを作成する、ファイルを追加する、ディレクトリからファイルを追加する、選択したファイルを抽出する、すべてを抽出する、zip ファイルのプロパティを取得することができます。節約は難しそうですね。
Windows 7 で Delphi 2010 を使用しています。
delphi - TJclCompressArchive (プロジェクト Jedi)。圧縮形式の選択方法は?
Win7 x64 で Delphi XE を使用している場合は、Jedi Class Library ver. 3.45、および 7z.dll バージョン。9.20、
「//」付きのコメントとして上記の圧縮オプションを選択するにはどうすればよいですか?
ジェダイのドキュメントは事実上ゼロです。誰かがそのような問題に直面している可能性はありますか?
7z でいくつかの異なるバージョンの「ジョブ」を試してみました: tSevenZip、SevenZipVcl、SevenZip Api。
delphi - JCL: UnicodeIsWord の代わりに何を使用しますか?
リビジョン 3256 から 3594 の間にUnicodeIsWord()
、JCL から削除されましたjclUnicode.pas
。代わりに使用すべき代替方法または代替アプローチはありますか?