掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
FDMemTable登録時におけるDataType判定 (ID:150935)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
お世話になります。 Delphi11.3 ENTで開発を行っております。 JSONで取得したデータをFDMemTableにデータを登録する際に、次の様にデータ型を判定して登録を行おうとしておりますが、 「'TFieldType' と 'TGeneratorFieldType' には互換性がありません」とエラーになってしまいます。 function TDMSample.InitializeMaster: Boolean; var // データJSONValue resJval, recJval: TJSONValue; // 対象MemTable mem: TFDMemTable; fdf: TFieldDef; val: TJSONValue; :::中略::: for var j := 0 to TJSONArray(resJval).Count-1 do begin // 配列の1要素を取り出す recJval := TJSONArray(resJval).Items[i]; // 対象MemTableのフィールド数分繰り返し for var k := 0 to mem.FieldDefs.Count-1 do begin // FieldDefs fdf := mem.FieldDefs[k]; // JSONから値を取得 val := recJval.FindValue(fdf.Name); if Assigned(val) then begin // データ型判定 case fdf.DataType of ftString: mem.FieldByName(fdf.Name).AsString := val.ToString; ftInteger: mem.FieldByName(fdf.Name).AsInteger := val.Value.ToInteger; end; end; end; end; 確かに、ftStringはTGeneratorFieldTypeにもTFieldTypeにも存在している模様ですね。 そこで、case文の中を TFieldType(ftString): mem.FieldByName(fdf.Name).AsString := val.ToString; TFieldType(ftInteger): mem.FieldByName(fdf.Name).AsString := val.ToString; の様に型キャストするとエラーは消えましたが、対応としては正しいでしょうか。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.