delphi结构体转c++结构体_C++结构体与Delphi结构体相互传参,结构体中包含结构体的嵌套,数组指针...

__declspec(dllexport) Rootobject __stdcall RefRootobjectValues(char*path)

{

ifstream t(path);

Rootobject Root;string str((istreambuf_iterator(t)), istreambuf_iterator());

CJsonObject Objson=CJsonObject(str);stringstrsss;

Objson.Get("gridStartTime", strsss);

Root.gridStartTime=ReturnCharArr(strsss);

Objson.Get("gridEndTime", strsss);

Root.gridEndTime=ReturnCharArr(strsss);

Objson.Get("resultStartTime", strsss);

Root.resultStartTime=ReturnCharArr(strsss);

Objson.Get("resultEndTime", strsss);

Root.resultEndTime=ReturnCharArr(strsss);

Objson.Get("WindSpeedBorder", strsss);

Root.WindSpeedBorder=ReturnCharArr(strsss);

Objson.Get("WindDirectBorder", strsss);

Root.WindDirectBorder=ReturnCharArr(strsss);

Objson.Get("resultWindDirectGrid", strsss);

Root.resultWindDirectGrid=ReturnCharArr(strsss);int nums = Objson["WindDirectLine"]["coordinates"].GetArraySize();

Root.WindDirectLine.coordinates= (struct Coordinate *)malloc(nums * sizeof(structCoordinate));/*Coordinate* coor=new Coordinate [nums];*/

/*由于School_T中定义的student是一个结构体指针,必须要对其进行分配内存*/

//Root.WindDirectLine->coordinates = (coordinates *)malloc(sizeof(Student_T));

for (int i = 0; i < nums; i++)

{int mWindDirectBaseLine_Length = Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBaseLine"].GetArraySize();

Root.WindDirectLine.coordinates[i].mWindDirectBaseLine= (struct Mwinddirectbaseline *)malloc(nums * sizeof(structMwinddirectbaseline));for (int j = 0; j < mWindDirectBaseLine_Length; j++)

{stringStr1;

Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBaseLine"][j].Get("p", Str1);

Root.WindDirectLine.coordinates[i].mWindDirectBaseLine[j].p=ReturnCharArr(Str1);

Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBaseLine"][j].Get("i", Root.WindDirectLine.coordinates[i].mWindDirectBaseLine[j].i);

Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBaseLine"][j].Get("s", Root.WindDirectLine.coordinates[i].mWindDirectBaseLine[j].s);

Root.WindDirectLine.coordinates[i].mWindDirectBaseLine++;

}int mWindDirectBars_Length = Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBars"].GetArraySize();

Root.WindDirectLine.coordinates[i].mWindDirectBars= (struct Mwinddirectbar *)malloc(nums * sizeof(structMwinddirectbar));for (int k = 0; k < mWindDirectBars_Length; k++)

{stringStr2;

F f;

H h;

Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBars"][k]["f"].Get("p", Str2);

f.p=ReturnCharArr(Str2);

Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBars"][k]["f"].Get("s", f.s);

Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBars"][k]["f"].Get("i", f.i);

Str2= "";

Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBars"][k]["h"].Get("p", Str2);

h.p=ReturnCharArr(Str2);

Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBars"][k]["h"].Get("s", h.s);

Objson["WindDirectLine"]["coordinates"][i]["mWindDirectBars"][k]["h"].Get("i", h.i);

Root.WindDirectLine.coordinates[i].mWindDirectBars[k].f=f;

Root.WindDirectLine.coordinates[i].mWindDirectBars[k].h=h;

Root.WindDirectLine.coordinates[i].mWindDirectBars++;

}

Root.WindDirectLine.coordinates++;

}returnRoot;//strs->WindDirectLine.coordinates = coor;//strs->WindDirectLine->coordinates = coor;//strs->gridMethod = 50;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值