問題タブ [delphi-5]

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

delphi - Delphi のサポートを学ぶ最も簡単な方法は何ですか?

私は Delphi で書かれたいくつかのアプリケーションのサポートを引き継ぎました。プログラミングの経験はありますが、Delphi の経験はなく、OOP の経験はほとんどありません。経験豊富な Delphi プログラマーの意見では、元のプログラマーの指示を解読し、コードの問題を修正する方法を学ぶ最も簡単な方法は何ですか?

ところで、コードは Delphi 5 で書かれており、元のプログラマーは彼の仕事に関する質問に答えることができません。

ティア

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

delphi - Delphi:オーバーライドされた仮想コンストラクターを呼び出さない構築

私は次の子孫の例を持っていますTBitmap

実行時に、これらのTMyBitmapオブジェクトの1つを作成し、それに画像をロードしてTImage、フォーム上のに配置します。

内部では、新しいグラフィックを作成し、新しく作成されたクローンTPicture.SetGraphicを呼び出すことで、グラフィックのコピーを作成していることがわかります。.Assign

新しいグラフィッククラスが構築される行:

コンストラクターを正しく呼び出し、すべてが順調です。


私は似たようなことをしたい、私はクローンを作りたいTGraphic

これが私のコンストラクターを呼び出すことも、コンストラクターを呼び出すこともないことを除いてTBitmap。コンストラクターを呼び出すだけTObjectです。建設後:

タイプは正しいですが、コンストラクターを呼び出しませんが、他の場所で同じコードを呼び出します。

なんで?


この架空の考案された例でも、のコンストラクターTBitmapが呼び出されていないため、まだ問題があります。内部状態変数が有効な値に初期化されていません:


TPictureのバージョン:

次のように逆コンパイルします。

私のバージョン:

次のように逆コンパイルします。

アップデートワン

「クローン作成」を別の機能にプッシュする:

助けにはなりません。

アップデート2

明らかに、私は明確なコードの明確なスクリーンショットを明確に提供しています。これは、明確なコードが明確にすべて存在することを明確に示しています。明らかに:

ここに画像の説明を入力してください

アップデート3

OutputDebugStringsを使用した明確なバージョンは次のとおりです。

そして生の結果:

そしてフォーマットされた結果:

アップデート4

私は私ができるすべてのコンパイラオプションをオフにしてみました:

ここに画像の説明を入力してください

注:オフにしないでくださいExtended syntaxResultこれがないと、関数のを割り当てることができません(宣言されていない識別子の結果)。

アップデートファイブ

@Davidの提案に従って、他のいくつかのマシン(すべてDelphi 5)でコードをコンパイルしてみました。

  • Ian Boyd(me):失敗(Windows 7 64ビット)
  • デール:失敗(Windows 7 64ビット)
  • デイブ:失敗(Windows 7 64ビット)
  • クリス:失敗(Windows 7 64ビット)
  • ジェイミー:失敗(Windows 7 64ビット)
  • ジェイ:失敗(Windows XP 32ビット)
  • カスタマービルドサーバー:失敗(Windows 7 32ビット)

これがソースです。

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

delphi - BDE、Windows 7、および UAC

Delphi 5 で書かれた非常に古いアプリケーションを、BDE を使用する一部の顧客で実行しています。現在、Windows Vista および 7 を使用している一部のユーザーは、マルチユーザー アクセスに関するいくつかの問題を実験していました。これらの問題は、net.and.lckファイルの場所に関連していると思います。BDE問題は、権限と UAC の競合を回避するために、Windows Vista および 7 でを構成する適切な方法はどれかということです。

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

wcf - Delphi 5 から WCF を呼び出す

非常に古いアプリケーションがぶら下がっています。書き換えるブロック上にあります。しかし、非常に複雑なため、書き直しは先送りされ続けています。

Delphi 5アプリケーションでWCF Webサービスを呼び出す方法があるかどうかを知る必要がありますか?

Delphi 5 がリリースされたとき、WCF はその発明者の目にはちらつきさえなかったと私は知っています...しかし、それは可能でしょうか? もしそうなら、どのように?

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

delphi - Delphi、デバッグ初期化セクション

私の問題は、システムの一部で例外が発生していることですが、初期化中に発生し、どこで、どの例外であるかがわかりません。システムが実行を開始した後、突然終了します。

そのような状況をデバッグする方法はありますか?

念のため、Delphi5を使用しています。

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

delphi - アプリを Delphi から Silverlight C# に移行する

Delphi 5 と Paradox を使用して開発された従来のデスクトップ会計アプリケーションがあり、SQL Server を使用する Web ベースの Silverlight (UX のため) アプリケーションに移行する予定です。

これをすばやく実装する方法を提案できる人はいますか?

これは自由回答形式の質問であることは承知しており、具体的な回答を求めているわけではありません。代わりに、SO ユーザーからの意見/経験です。

私の主な関心事は、移行アプローチ、可能なアーキテクチャ、および設計パターン (MVVM について知っている SL の場合) の実装についてです。

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

sql-server - テーブル フィールド変更後の更新

古い Delphi システムに問題があります。このシステムはデータを SQL Server テーブルに挿入します。

10 年後、テーブルのフィールドを 100 文字から 255 文字に変更します。

システムはテーブルのすべてのレジストリを選択し、変換後に別のテーブルに配置します。それはうまくいきます。

問題は、システムがフィールドを更新するときです。

それは私にエラーを示します

「別のユーザーがレコードを変更したため、編集を実行できませんでした」というメッセージの EDBEngineError。

UpdateMode: upWhereAll

cuentas テーブル:

  • NUM_SOL nvarchar 6 *PK
  • WALL tinyint 1
  • SEND_DATE smalldatetime 4
  • OBS_CRED nvarchar 255
  • FLCCリアル4
  • STREET nvarchar 30
0 投票する
2 に答える
2528 参照

delphi - Delphi の Fast Report VCL で変数の編集時にスタック オーバーフロー例外が発生するのはなぜですか?

Delphi 5 と Fast Report 4 を使用してレポート アプリケーションを作成しています。設計時に MyReport.f3 で変数 "ReportTitle" を定義し、実行時に値を割り当てました。コードで EStackOverflow 例外が発生するのはなぜですか?

ここにコードサンプルがあります

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

delphi - Delphi 5ビルドエラー:必要なパッケージが見つかりませんエラー

dcc32コンパイラを使用してコマンドラインからプロジェクトをコンパイルしています。このエラーが発生しました'必要なパッケージXが見つかりません'しかし、Windowsのパス変数で定義されたX.*内のすべてのファイルのパスがあります。私はこのエラーで立ち往生しています。どんな洞察も大歓迎です!ありがとう

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が、仮想アドレスであると想定しているものをオフセット アドレスに変換しようとすると、アンダーフローが発生します。