2017-12-11 3 views
1

D10シアトルに次のコードがコンパイルされますが、D10がインストールされているパソコンは壊れています。その後、DXE5を使用して私のプロジェクトで小さな更新を行う必要がありますが、コマンドTJSONBool.Create(False)JSONObj.ToJSONが存在するためコンパイルできません。D10からDXE5:TJSONBool.Create(False)およびJSONObj.ToJSONと同等のものは何ですか?

TJSONBool.Create(False)JSONObj.ToJSONはそれぞれDXE5に相当しますか?

uses 
Data.DBXJSON, SHFolder; 

function GetSpecialFolderPath(folder : integer) : string; 
const 
    SHGFP_TYPE_CURRENT = 0; 
var 
    path: array [0..MAX_PATH] of char; 
begin 
    if SUCCEEDED(SHGetFolderPath(0,folder,0,SHGFP_TYPE_CURRENT,@path[0])) then 
    Result := path 
    else 
    Result := ''; 
end; 

procedure ChangeChromeSetting(const ATarget, Avalue: string); 
var 
    specialfolder: integer; 
    pathchrome: String; 
    JSONObj, ObjIpp: TJSONObject; 
    JSONPair: TJSONPair; 
    OldValue: string; 
begin 
    specialFolder := CSIDL_LOCAL_APPDATA; 
    pathchrome := GetSpecialFolderPath(specialFolder); 
    pathchrome := pathchrome + '\Google\Chrome\User Data\Local State'; 

if fileexists(pathchrome) then 
    begin 
    JSONObj := TJSONObject.ParseJSONValue(TFile.ReadAllText(pathchrome)) as TJSONObject; 
    if not Assigned(JSONObj) then Exit; {raise Exception.Create('Cannot read file: ' + pathchrome);} 
    try 
     OldValue := JSONObj.GetValue<string>(ATarget); 
     if OldValue = '' then 
       Exit; 
     if not SameText(OldValue, Avalue) then 
     begin 
     JSONPair := JSONObj.Get(ATarget); 
     JSONPair.JsonValue.Free; 
     JSONPair.JsonValue := TJSONString.Create(Avalue); 

     ObjIpp := TJSONObject.Create; 
     ObjIpp.AddPair('enabled', TJSONBool.Create(False)); 
     JSONObj.AddPair('hardware_acceleration_mode', ObjIpp); 

     TFile.WriteAllText(pathchrome, JSONObj.ToJSON); 
     end; 
    finally 
     JSONObj.Free; 
    end; 
    end; 
end; 

////////////////////// USAGE ///////////////////////// 

ChangeChromeSetting('hardware_acceleration_mode_previous', 'false'); 

答えて

4

TJSONBoolTJSONAncestor.AsJSONはXE5にはまだ存在しませんでした。 ToJSONをXE7に加え、TJSONBoolを10.0シアトルに加えた。古いバージョンでは

、代わりにTJSONTrue/TJSONFalseTJSONObject.ToStringを使用します。

ObjIpp.AddPair('enabled', TJSONFalse.Create); 
... 
TFile.WriteAllText(pathchrome, JSONObj.ToString); 
関連する問題