問題タブ [tvalue]
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 - Delphi 2010 RTTI:TValueを使用してデータを保存する
TValueを使用してデータをTList<>に格納できるようにしたいと思います。のように :
そして少し後、メインプログラムで、次のような「流暢な」xmlビルダーを使用します。
2回目の呼び出しで、プログラムはアクセス違反の例外を発生させます。
最初のTValueが「解放」されたようです。TValueを使用して「バリアント」データをランタイムに保存することは本当に可能ですか?
Delphiにはバリアントが存在することを知っています。私のXMLビルダーは、RTTIを使用してネイティブのdelphiオブジェクトをXMLに(逆)シリアル化するために使用されるため、どこでもTValueを使用します。
よろしく、
-ピエール・イェーガー
delphi - TValueを使用して文字列を列挙型に変換しますか?
TValueを使用して文字列を列挙型に変換したいのですが、グーグルで検索しましたが、その方法が見つかりませんでした。
動作しません。それは私が見ていなかった愚かなことであるに違いありません-しかし私はそれを見つけませんでした。何を間違えたの?
GetEnumValueの使用方法を知っています。
編集:@ウォーレン、これはコードを投稿するのが簡単なので、ここに行きます:
使用法:
delphi - Delphi 2010 での Rtti データ操作と一貫性
元のデータへの参照を使用して TValue を作成する方法を知っている人はいますか? 私のシリアライゼーション プロジェクトでは、( XML-Serializationで提案されているように) TValues を内部ツリー構造に格納する汎用シリアライザーを使用します (例の MemberMap に似ています)。
このメンバ ツリーは、動的セットアップ フォームを作成し、データを操作するためにも使用する必要があります。私の考えは、データのプロパティを定義することでした:
GetData、SetData メソッドの実装:
残念ながら、TValue.From メソッドは常に元のデータのコピーを作成します。したがって、アプリケーションがデータに変更を加えるたびに、DataModel は更新されません。逆に、DataModel を動的な形式で変更しても、元のデータは影響を受けません。確かに、何かを変更する前後にいつでも Data プロパティを使用できますが、DataModel 内で多くの Rtti を使用するため、いつでもこれを実行したくありません。
おそらく誰かがより良い提案をしていますか?
delphi - RTTI Delphi n 次元行列を TValue として作成
良い一日、
TValueは Delphi-2010 以降の RTTI 機能です。
以前の質問に続いて、TValue を n 次元として返す再帰関数を作成しようとしました。行列(2D、3D、4D...)
たとえば、次の手順では n 次元のマトリックスが表示されます (n 次元のマトリックスのすべての要素が TValue 変数としてリストされます)。
TValue から n 次元の行列を作成する関数を作成する方法がわかりません。たとえば、関数 CreateDynArray(Dimensions:array of integer; Kind:TTypeKind):TValue; が必要です。関数は、次のような次元を含む動的配列である TValue を返します。
Return=CreateDynArray([2,3],tkInteger); TValue を tkDynArray として返し、(Return) を表示する場合はリストします
終了していません。TValue から、n 次元の DynArray を作成しようとしています
どうもありがとうございました。よい一日を!
delphi - Delphi XE:私のTValue.Equals()はどこにありますか?
私の意見では、必須のメソッドがTValueから欠落しているようです。TValue.Equals(TValue)。
したがって、2つのTValueを比較するための高速で適切な方法は、できればTValue.ToString()を使用せずに、バリアントやレコードなどの間で誤った一致を許可する方法です。
delphi - TEditBox.data を TValue.TypeInfo に自動的に検証
TEdit.Data
FMX 編集ボックスがあり、入力した値 ( ) をTValue
オブジェクトのプロパティに割り当てたいと考えています。このオブジェクトTypeInfo
には、編集ボックスに入力されたデータの型を指定するポインタも含まれています。
私が達成したいのは、入力されたデータを TAtrib.Value に割り当ててから、次のように、WantedType に従って、入力されたデータが正しい形式であるかどうかを検証できることです。
Value
は常に文字列型でありTryCast
、入力された文字列が ie で適切に変換される場合でも、文字列から拡張された ie に変換されないため、これは失敗します。StrToFloat()
どうすればこれを達成できますか?
delphi - TValue を TDateTime に変換する
TDateTime で TValue を変換するにはどうすればよいですか?
AsInteger、AsDouble などのメソッドがありますが、TDateTime には何もありません。