List<UnicardSwipeDetail> unicardSwipeDetails = new ArrayList<UnicardSwipeDetail>();
UnicardSwipeDetail u = new UnicardSwipeDetail();
u.setBalance(1111);
u.setCardNumber("1111");
u.setId("1111");
u.setSchoolId("130011");
u.setStudentId("1111");
u.setSwipeAmount(1111);
u.setSwipeTime(new Date());
u.setSwipeType(1);
unicardSwipeDetails.add(u);
service.unicardSwipeDetailSyncService(unicardSwipeDetails.toArray(new UnicardSwipeDetail[0]), key);
UnicardSwipeDetail:为一个类
UnicardSwipeDetail u = new UnicardSwipeDetail();
u.setBalance(1111);
u.setCardNumber("1111");
u.setId("1111");
u.setSchoolId("130011");
u.setStudentId("1111");
u.setSwipeAmount(1111);
u.setSwipeTime(new Date());
u.setSwipeType(1);
unicardSwipeDetails.add(u);
service.unicardSwipeDetailSyncService(unicardSwipeDetails.toArray(new UnicardSwipeDetail[0]), key);
UnicardSwipeDetail:为一个类
解决方案 »
- stringgrid怎么不能及时显示access中的数据
- 在DBGrid1表格控件中我使用clientdataset1连接数据,当数值为"0"时不显示在DBGrid1中,我该如何写
- 没有人知道怎么做吗?救命啊----------------------------------!!!!!!!!!!!!!!
- 实现添加,修改,删除等功能
- 如何连接远程数据库
- 更新数据小问题,在线等待
- 为什么第一次访问数据库的时候总是要求输入用户名密码?
- 新论坛大家有什么看法??
- 请问如何更改标题栏的外观,就像金山词霸的效果一样?百分相赠!
- delphi控件与sql server 不匹配问题:
- 自己写VCL组件,继承StringGrid问题
- fieldbyname(列名)是提取列的哪个值?怎么指定他提取列的某个值?
其实很简单
就是一个tlist和一个类的操作,完全帮你敲了,恐怕你什么也学不到,给你两个链接,稍微看下就懂了
tlist的操作
http://anony3721.blog.163.com/blog/static/511974201082443238978/
类的操作
http://www.cnblogs.com/hi-ilovefeng/archive/2006/06/15/426180.html另外补充下,delphi没有垃圾回收器,用完后记得要释放
service.unicardSwipeDetailSyncService(unicardSwipeDetails.toArray(new UnicardSwipeDetail[0]), key);
var
Iservice: XxtDataSyncServiceImpl;
B, c, TempLocal: WideString;
XMLDoc: IXMLDocument; UPDateinfo: UnicardSwipeDetail;
LL: TLIST;
begin Iservice := HTTPRIO1 as XxtDataSyncServiceImpl updateinfo := UnicardSwipeDetail.Create
updateinfo.id := '1'; //充值记录ID
updateinfo.schoolId := '000001'; //学校ID
updateinfo.studentId := '1'; //学生ID
updateinfo.cardNumber := '000001'; //卡号
updateinfo.swipeType := 1; //刷卡类型
// updateinfo[I].swipeTime := strtodatetime(formatdatetime('yyyy-mm-dd hh:mm:ss', now));
updateinfo.swipeAmount := 5; //刷卡金额 全部整形?
updateinfo.balance := 10; //余额
ll := tlist.Create();
ll.Add(updateinfo); //向SERVER提交数据
Iservice.unicardSwipeDetailSyncService(ll[0], '8117f0657e022053f46895aff1b998e2');
LL.Destroy;
问题是现在数据传到服务端是空。谢谢!
这是接口中类的定义: UnicardSwipeDetail = class(TRemotable)
private
Fbalance: Integer;
FcardNumber: WideString;
Fid: WideString;
FschoolId: WideString;
FstudentId: WideString;
FswipeAmount: Integer;
FswipeTime: TXSDateTime;
FswipeType: Integer;
public
destructor Destroy; override;
published
property balance: Integer read Fbalance write Fbalance;
property cardNumber: WideString read FcardNumber write FcardNumber;
property id: WideString read Fid write Fid;
property schoolId: WideString read FschoolId write FschoolId;
property studentId: WideString read FstudentId write FstudentId;
property swipeAmount: Integer read FswipeAmount write FswipeAmount;
property swipeTime: TXSDateTime read FswipeTime write FswipeTime;
property swipeType: Integer read FswipeType write FswipeType;
end;
ArrayOf_tns2_UnicardSwipeDetail = array of UnicardSwipeDetail;
var
Iservice: XxtDataSyncServiceImpl;
B, c, TempLocal: WideString;
XMLDoc: IXMLDocument; UPDateinfo: UnicardSwipeDetail;
LL: ArrayOf_tns2_UnicardSwipeDetail;
begin
SetLength(LL,1);
Iservice := HTTPRIO1 as XxtDataSyncServiceImpl updateinfo := UnicardSwipeDetail.Create
updateinfo.id := '1'; //充值记录ID
updateinfo.schoolId := '000001'; //学校ID
updateinfo.studentId := '1'; //学生ID
updateinfo.cardNumber := '000001'; //卡号
updateinfo.swipeType := 1; //刷卡类型
// updateinfo[I].swipeTime := strtodatetime(formatdatetime('yyyy-mm-dd hh:mm:ss', now));
updateinfo.swipeAmount := 5; //刷卡金额 全部整形?
updateinfo.balance := 10; //余额
LL[0] := updateinfo; //向SERVER提交数据
Iservice.unicardSwipeDetailSyncService(LL, '8117f0657e022053f46895aff1b998e2');
end;
但还有小问题,如果多笔:怎么ll 中的10笔数据都 变成最后一次的数据了 ,
SetLength(ll, 10);
for i := 0 to 9 do
begin
updateinfo := UnicardSwipeDetail.Create;
updateinfo.id := inttostr(I); //充值记录ID
updateinfo.schoolId := '000001'; //学校ID
updateinfo.studentId := '1'; //学生ID
updateinfo.cardNumber := '000001'; //卡号
ll[i] := updateinfo;
updateinfo.Destroy;
end;
LL中的前面存放的数据的此字段值也变成此时的赋值
for i := 0 to 9 do
begin
updateinfo := UnicardSwipeDetail.Create;
updateinfo.id := inttostr(I); //充值记录ID
updateinfo.schoolId := '000001'; //学校ID
updateinfo.studentId := '1'; //学生ID
updateinfo.cardNumber := '000001'; //卡号
ll[i] := updateinfo;
end;把对象释放去掉看看,应该是这的问题 你的对象添加到数组里 结果又释放掉了。而重新创建的新对象可能启用了内存里的碎片,就是之前的对象地址,所以引起数组里的元素全都只想同一地址。
搞定了。结帐 了!