問題タブ [blitzmax]

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

string - 文字列が float に間違って変換されていますか? (ブリッツマックス - 反射)

ブリッツマックスで少し問題があります。INI ファイルを読み取ろうとしましたが、float を読み取ると、非常に奇妙な方法で変換されます。関連するファイルの行は、たとえば次のようになります。

この出力は次のようになります。

私が読むために使用するコードは、リフレクションで動作し、次のようになります。

これは、「。」の後の数字が次の場合にのみ発生することがわかりました。は 5 または 0 と等しくありません。反射を使用しない場合は正常に動作するため、この動作を説明することはできません。

誰か助けてくれませんか?

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

c++ - C++ でファイル ストリームとの間でバイナリ バイト/int/long を読み書きする

だから私は最近C++を試し始めたばかりで、すでに基本を学んでいます。私が知りたいのは、ファイルとの間でバイト/整数/ロングをどのように読み書きできるかだけです。

まず、なぜそれが必要なのかをお話ししたいと思います。基本的に、特別な形式のファイルからデータを読みたいと思っています。すべてのデータは、そのファイルにバイナリで書き込まれます。

ファイル形式の仕様

私はすでにそのプログラムを別の言語で書いていて、自分のプログラムを C++ で書き直したいと思っています。私が以前に使用した言語は BlitzMax と呼ばれ、その言語関数は既に実装されており、WriteByte、ReadByte、WriteInt、ReadInt などと呼ばれています。必要です、それは非常に高く評価されます。そして、もし私のためにそれらを書いてくれるなら、それらがどのように機能するかについても説明できますか?

私を助けてくれるすべての人に感謝します!:)

編集:ここでは、要求に応じて、コードが必要なことを多少行います。int 50 をバイナリでファイルに書き込みますが、それは私ができる限りです。私はまだいくつかの部分を理解できません(コードはグーグルで見つかりました、私はそれを少し編集しました)。そして、バイトとロングを書き込む方法がまだ必要です。

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

linker - テキスト セグメントの最小開始アドレスを指定します

特定の位置またはそれより上にコードを配置するように lld に指示するにはどうすればよいですか?

かなり疑わしいロジックに依存する従来のコードがあります。特定の関数は、関数ポインターの配列へのインデックスを表す値、または実際には関数ポインターである値を受け取ることができます。この関数は、値が より小さいかどうかをチェックして、値の型を決定します0x10000。もしそうなら、それはインデックスです。そうでない場合は、関数ポインターです。

どうしてもやりたいのですが、このコードを変更することはできません。

残念ながら、このテストは機能しません。OSX では (他の場所ではまだ問題として現れていません)、プログラム内の関数ポインターは、そのしきい値よりもはるかに低いアドレスを持つことができます。つまり、問題の関数がそれらを検出することを意味します。ポインターではなくインデックスとして、すべてがうまくいかない。

0x10000誰かがばかげたテストを修正できるまでこの問題がなくなるように、生成されたすべてのコードを上または上に配置するようにリンカーに強制する指示がありますか (この場合は lld) 。

オプションを試しました-sectalignが、次のエラーが発生します。

ld: -sectalign の引数は 0x8000 以下である必要があります

0x8000十分ではありません。コードはまだそれとの間のスペースに配置されて0x10000おり、ロジックはまだ失敗しています。

これを行うために使用できる別のオプションはありますか?