問題タブ [string-table]
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.
c - stringtableのポインタをインクリメントするにはどうすればよいですか?
stringtable char* data [500] にさまざまな文字列へのポインターを入力しています。
ここでは、別のバッファを使用して、文字列にインデックスを格納できるようにします。
デバッグ時に、ポインターが常に同じアドレスを指していることがわかります。
別のバッファー (PrintBuffer) を使用せずに純粋な文字列がある場合、すべてのポインターが別のアドレスを指し、次のようになります。
A テキスト 0 B テキスト 1 C テキスト 2
しかし、この星座では次のようになります。
C テキスト 2 C テキスト 2 C テキスト 2
別のアドレスを指すようにポインタをインクリメントする方法はありますか?
c++ - 文字列テーブルの作成方法
奇妙なことに、このテーマに関するオンライン ドキュメントはほとんどありません。UI 用にハードコードされた文字列を含むアプリケーションと、ソース全体に散在するさまざまなものがあります。アプリケーションがコンパイルされているプラットフォームに応じて、それらの多くを変更する必要があるため、少なくともいくつかを切り上げようとしています。
ここでは 2 番目の例(参照用に以下にコピー) を使用しましたが、これが実際にどのように機能するかの詳細についてはやや軽快です。すべてが再初期化されproject_strings.cpp
、コードが実際に呼び出されることはないようです。
誰かがこれを説明できますか、それともひどい考えだと私に言うことができますか?
c# - 実行中のプロセスで文字列テーブルの内容を確認できますか?
実行中の .NET アプリケーションで文字列テーブルの内容を確認する方法はありますか?
通常の文字列連結を使用するコンソール アプリケーションと、文字列ビルダーを使用するコンソール アプリケーションを比較したいと思います。
c - c89 の指定子
C99 では、配列初期化子 (とりわけ) が、配列のどの要素を正の整数指定子 ($6.7.8.6、$6.7.8.17) で設定するかを指定できます。たとえば、次のようになります。
私は以前にこれを使用して、列挙型から文字列へのテーブルを次のように作成しました。
ただし、現在、コードが c89 に準拠しているという要件の下で作業しています。
私はプリプロセッサの魔法を調べました (たとえば、ここのように) が、列挙型シンボルのコピーではなく、文字列を任意にする必要があります。
するだけでは不十分
将来、列挙要素を追加する必要があるためです。c99 メソッドを使用すると、テーブルに NULL ポインターが発生し、問題が発生した場合にデバッグが容易になります。このメソッドを使用して文字列テーブルを更新するのを忘れると、デバッグが困難なセグメンテーション違反が発生します。また、とにかくオフセットを覚えておく必要がある場合、シンボルを持つという点が無効になります。
宣言が関数内にある場合、次のように目的の効果を達成できます。
ただし、少なくとも ではgcc
、これは最適化されません。
c89 でそのような文字列テーブルを宣言する方法はありますか? (組み立てには問題ありません。)
c - チェス盤の内容を C 言語の文字列として表示し、その文字列をテーブルに格納するにはどうすればよいですか?
チェス盤のコンテンツを C 言語の文字列 (チェスの駒と空のスポットのドットまたはスペース) として表示し、文字列をテーブルに保存するにはどうすればよいですか? 私はすでに行ったことを示すことができます。
windows - EXE に含まれる STRINGTABLE を特定する
私の Delphi アプリケーションは、Microsoft Resource Compiler (rc.exe) を使用して、次の.rc
ように文字列のリスト (ファイル内のテキスト形式) をコンパイルします。
.res
ファイルに。すべてのテーブルに同じ ID ( などcszLanguageName
) が含まれています。2 つの個別のリソース文字列ファイルを維持しています。1 つは主にヨーロッパ言語 (英語、チェコ語など) を含み、これを "Standard.rc" と呼んでいます。もう 1 つは「Alternate.rc」と呼ばれ、韓国語、タイ語などの他のすべての言語が含まれています。
コンパイル時のスイッチは、EXE にリンクされるファイルを決定します。
それが背景でした。では質問に移りましょう。
EXE へのパスが与えられ、WindowsGetFileVersionInfo
メソッドのようなものを使用して、どの STRINGTABLE リソースが EXE にあるかを判断することは可能ですか? 次のことを判断できた場合:
また
が含まれている場合、EXE は「標準」または「代替」として識別できます。
現在、EXE を実際に実行しなくても、唯一の違いはバイト単位のサイズであり、信頼性の低いヒューリスティックです。C++ または C# で問題ありません。Delphi に適応したり、Delphi から呼び出される別のユーティリティを作成したりできます。
アップデート
LU RD からのコメントに基づいて、次の Version.rc ファイルを作成しました。
次に、これを (Microsoft Resource Compiler を使用して) Version.res にコンパイルし、.xml を使用してアプリケーションにリンクしました{$R 'source\Version.res'}
。これは期待どおりにコンパイルされますが、EXE からフィールドを読み取ろうとするInternalName
と空白になります。プロジェクトのプロパティを手動でInternalName
「テスト」に設定すると、「テスト」として設定されます。プロジェクトのプロパティに手動で入力した内容を上書きするにはどうすればよいですか?