問題タブ [ansistring]

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

string - 定義: AnsiString、WideString、String、char[]、char*、BSTR、

これはこの質問のフォローアップです

AnsiStringクラスもですか?そしてstring?クラスですか?そしてchar[]

WideStringaは 2 バイト文字AnsiStringのラッパーであり、1 バイト文字のラッパーであり、1 バイト文字char[]の配列であると言えますか? stringそれが何であるかよくわかりません...

Code Builder C++ 2007 で利用可能なさまざまな種類の文字列型とその移植性についてはわかりません。

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

delphi - ストリーミングする AnsiString

次のコードを作成しました。

しかし、私は「W1057 'AnsiString' から 'string' への暗黙的な文字列キャスト」です。

彼に何か問題がありますか?

ありがとうございました。

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

unicode - Delphi2006アプリのXEへの移植

Delphi2006からXEにいくつかの大きなアプリを移植したいと思っています。その理由はUnicodeとはあまり関係がありませんが、(うまくいけば)IDEの安定性の向上、ネイティブPNGのサポート、コンポーネントの増加、VCLのバグの減少、サードパーティのものへの依存の減少、皆さんからのリブの減少などを利用するためです。一部のアプリはUnicodeの恩恵を受ける可能性がありますが、現時点ではそれは問題ではありません。現時点では、それらを再度コンパイルするための最も直接的なルートをたどりたいと思っています。

まず、あいまいな文字列宣言をすべて変更しました。つまり、stringをAnsiStringまたはShortStringに、charをAnsiCharに、pCharをpAnsiCharに変更し、D2006で再コンパイルしました。ここまでは順調ですね。何も壊れませんでした。

私の質問は:ここからどこへ?ソースをXEコンパイラに提示し、タッチペーパーに光を当てると仮定すると、大きな問題になる可能性が高いのは何ですか?

例えば、

これはエラーを生成しますか?警告?VCLがUnicodeになっていると思いますか、それともXEが非Unicodeコンポーネントをプルするのでしょうか、それとも文字列を変換するのでしょうか?XEで8ビット文字列を使用してアプリを維持することは実際に実行可能ですか、それとも頭痛の種が多すぎますか?

Unicodeを使用するのが最善/最も簡単な方法である場合は、少なくとも近い将来、拡張文字を使用しない場合でも、それを実行します。

私が疑問に思うもう一つのことは、サードパーティのものです。XE互換のアップデートバージョンを入手する必要があると思います。

(肯定的な!)コメントをいただければ幸いです。

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

oracle - Oracle を使用した NHibernate クエリのタイプを AnsiString として設定する

掘り下げた後、次のNHibernateクエリの理由がわかりました

Oracle で動作しなかったのは、マッピングのプロパティを "AnsiString" として設定しなかったことです。すなわち

なぜこれをしなければならないのか誰か教えてもらえますか?Oracle の基礎となるデータ型は varchar2 です

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

c# - DbType.AnsiStringまたはDbType.Stringを使用する必要がありますか?

私は他の誰かによって書かれたコードを見ています。

どこでも。DbType.AnsiStringの代わりに使用しDbType.Stringます。なんで?

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

nhibernate - ニベネート。Projections.ConstantでITypeを設定するには?

古いOracle 8i本番データベースに接続するために、.Net OracleClientでNHibernate 2.1.2.4000を使用するプロジェクトがあります。正しいクエリを生成する ICriteria を実装しましたが、次の内部例外が発生します: System.Data.OracleClient.OracleException: ORA-12704: character set mismatch

私の質問は: Projections.Constant(object, IType) の引数で IType AnsiString を宣言するにはどうすればよいですか? これで問題が解決する可能性があると思います。Projections.Constant() の削除をテストしましたが、すべて正常に動作します。

生成されたクエリの例:

前もって感謝します。

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

c++ - AnsiString と C++ ビルダーの UnicodeString から転送された AnsiString との違い

C++ Builder XE3 を使用していますが、AnsiString で奇妙な問題に遭遇しました。

以下のコードを見てください

私の想像では、最初はうまくいきますが、2回目には「Bad Format」例外がスローされます。そして、コード 2 で一度 funcA を呼び出しただけでも、問題は残りました。

temp1またはtemp2内でShowMessageを実行しても違いはありません。2回の呼び出しで異なる結果が得られた理由がまったくわかりません。

funcA は、少し複雑なコードを持つ 3 番目のライブラリからのものです。したがって、このライブラリのコードをたどる前に、Code1 と Code2 の違いを知っておく必要があると思います。

ありがとう。

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

map - マップのキーとしてAnsiStringを使用する場合の奇妙な問題

私は地図を持っています

map<AnsiString, Foo*>

マップで値を検索しようとすると、から受け取った文字列を使用しTMemoryStreamて関数に送信しますFoo* GetFoo(AnsiString)。関数はイテレータを作成し、見つかったオブジェクトを返します。これはほとんどの場合正常に機能しますが、1つの関数では値を返しません。

ルックアップに使用するAnsiStringがFooID = FooID.SetLength(FooID.Length() - 1);どこにあるかを実行すると、それが機能し、正しい結果が返されます。FooIDストリームにゴミがあるのではないかと思っていたのですが、箱から出してすぐに使える場所とハックが必要な場所で使われているAnsiStringsを見ると同じです!?

これは、IDEのデバッグ値インスペクターによるものです...したがって、そこではいくつかのトリックが行われている可能性があります。しかし、いったい何がこれを引き起こしているのでしょうか?

アップデート:

中古の実装を見つけましたoperator>>

ステップスルーすると、受信した文字列が正しく処理されるようです。WideStringしかし、問題が珍しくないということを聞いたことを思い出しているようです:P

更新2: 返される文字列の長さが6文字に末尾を加えたものであるインスタンスを実際に見つけました\0が、サイズは7に設定されています。したがって、間違ったサイズを提供するため、その文字列を送信するアプリケーションに解決策があると思います。

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

delphi - Delphi(2009)-AnsiStringの読み取り値を変換しますか、それとも改行を保持しますか?

この(テスト)コードを使用して、PNGからtEXtチャンクを読み取ります。

このコードは、TPNGObjectの元の作成者による例からのものであり、embercardoのWebサイトからダウンロードされました。KeyWordには、tEXtチャンクの値(この場合はコメント)が含まれています。テキストには、必要なテキストが含まれています。これはAnsiStringであり、区切りがあるはずですが、AnsiStringからUnicodeにキャストすると、それらは失われ、行の終わりと始まりの間にスペースさえない1つの文字列になります。

デバッガーをステップスルーすると、各行が一重引用符で囲まれ、行の間に#$ Aがあります。これは、16進数でチェックインした場合に何らかの制御文字であると想定しています。

comment = PunkBusterスクリーンショット(ñ)BF3レベル/ MP_017 / MP_017'#$ A'1135998 31.204.131.11:25530 GoTBF3.nl#4 | 32p | TDM運河のみ| 500チケット'#$ A'geawtaw46y4w63a46a34643a BorislavFatsolka'#$ A'試行:w = 320 X h = 240 at(x = 50%、y = 50%)'#$ A'結果:w = 320 X h=200サンプル= 1 '

サンプル画像 http://www.pbbans.com/pbss_evidence/bf3/31.204.131.11:25530/5d00a95d22fae4a287bd510c076db1bf-2e36c3b4.png これがサンプルです。私がやっていることは、パンクバスターの画像からデータを読み取って、コミュニティデータベースで検索できるようにすることです。ただし、画像とIDの横に情報を表示して、改行したり、行がいつ終了するかを確認したりします。

メモや文字列リストに直接配置すると、次のようにすべて1行になります。

comment = PunkBusterスクリーンショット(ñ)BF3レベル/MP_017/MP_017113599831.204.131.11:25530 GoTBF3.nl#4 | 32p | TDM運河のみ| 500チケット*geawtaw46y4w63a46a34643a* BorislavFatsolka試行:w = 320 X h = 240 at(x = 50%、y = 50%)結果:w = 320 X h=200サンプル=1

質問

元の画像からのものであるこのansistringを処理するための最良の方法は何ですか、またはTPNGImageには実際の選択肢はありません。ブレークをそのままにして、メモ、リッチエディット、または文字列リストに入れます。

最初に頭に浮かぶのはおそらく非効率的であり、それをバイト配列などに入れて、行マークの終わりで各行をバイトごとにカットして読み取るだけです。

例からのより多くのデータ 例の画像をダウンロードすることでこれを見ることができるはずですが、これは16進エディターでの外観です(ファイルの最初の部分はそのまま、pngヘッダー、tEXtチャンクヘッダーキーワードなど)。

その他の結果 チャンク(PngVar.Chunks.item [n] .SaveToStream)をダンプすると、基本的に16進エディターで見つけたものが得られます。制御文字は0Aです。#$ Aが変換前か後かはわかりませんが、pngimageコードが原因である可能性があります。

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

delphi - Delphi AnsiString 操作 - PAnsiChar が破損する?

を移動して操作するには、次のアプローチを使用しますAnsiString。ほとんどの場合は機能しますが、文字列へのポインターが機能しなくなることがあります。次のコードがあるとします。

デバッグ時、ループが終了した直後にrepeat..untilインスペクタを見て、それを確認できますp = 'field>delimiters>'Insert()ステートメントの後、s = 'some>very>long>string>with>something new>field>delimiters>'およびp = 'something new>field>delimiters>'インスペクターで。これは予想通りです。

私の実際の文字列は数千文字の長さです。文字列を移動して新しいフィールドを追加するこの方法は、何十回も機能しますが、突然機能しなくなります。 pの呼び出し後、文字列の先頭に挿入された値が表示されなくなりましたInsert()pそれが変わったことを知らないようですs...

ほとんどのステートメントの後pに文字を適切に参照し、いくつかの呼び出しの後に突然動作を停止するのはなぜですか?sInsert()Insert()

(質問を入力しているときに答えを見つけました。答えは今では明らかですが、問題に苦しんでいる間はそうではありません。おそらく質問と答えを投稿すると、他の人の助けになるでしょう...)