做网站优化有前景吗,一般大概需要多少钱,个人flash网站源码,怀化网络科技有限公司Delphi TClientDataSet[5]: 读取数据。本例用到:TClientDataSet.Fields[]; { 字段集合; 它比 FieldList 有更多功能, 如可获取嵌套字段 }TClientDataSet.FieldList[]; { 字段列表; 它比 Fields 轻便, 如果只是取值用它快一些 }TClientDataSet.Fi…Delphi TClientDataSet[5]: 读取数据。本例用到:TClientDataSet.Fields[]; { 字段集合; 它比 FieldList 有更多功能, 如可获取嵌套字段 }TClientDataSet.FieldList[]; { 字段列表; 它比 Fields 轻便, 如果只是取值用它快一些 }TClientDataSet.FieldByName(); { 根据字段名称获取字段对象; 获取一个字段对象时它比上两个快 }TClientDataSet.FindField(); { 根据字段名称查找字段对象 }TClientDataSet.FieldValues[]; { 根据字段名称获取字段值; 如果仅是获取字段值, 这个最快 }TClientDataSet.First; { 到第一个记录 }TClientDataSet.Next; { 到下一个记录 }TClientDataSet.Last; { 到最后一个记录 }TClientDataSet.Prior; { 到上一个记录 }TClientDataSet.RecNo; { 设置或读取当前记录的位置 }TClientDataSet.Bof; { 当前位置是否是第一个记录 }TClientDataSet.Eof; { 当前位置是否是最后一个记录 }TClientDataSet.RecordSize; { 一个记录的大小; 所谓一个记录就是当前行的所有字段 }TClientDataSet.RecordCount; { 记录总数; 也就是总行数 }TClientDataSet.GetFieldList(); { 根据指定的几个字段名获取字段对象的列表 }TClientDataSet.GetFieldData(); { 把指定字段的值写入一个缓冲区 }TClientDataSet.GetCurrentRecord(); { 把当前记录(不包括 Bolb 字段)写入到一个缓冲区 }关键字 TClientDataSet GdiPlus[1] RegularExpreio GdiPlus XMLDocument 类详解TClientDataSet[5]: 读取数据。读取字段的结构信息可以使用 TFieldDef 对象(一般来源于 FieldDefs 或 FieldDefList);现在要读取其中的数据, 应该使用 TField 对象(一般来源于 Fields 或 FieldList).Fields[0]、Fields[1] ... Fields[n] 获取的是当前行的第几个字段, 可用 Next、RecNo 等指定当前位置(行).下面的例子使用了 Common Files\CodeGear Shared\Data\holdings.xml, 若更换文件需调整代码.这是 holdings.xml 的字段信息:ACCT_R { 类型是 r8, 对应 ftFloat, 相当于 Double }SYMBOL { 类型是 string, 对应 ftString, 相当于 AiString; 指定 Size7, 加上空结束, 大小是 8 }SHARES { 类型是 r8, 对应 ftFloat, 相当于 Double }PUR_PRICE { 类型是 r8, 对应 ftFloat, 相当于 Double }PUR_DATE { 类型是 date, 对应 ftInteger, 相当于 Integer }先窗体上放置 ClientDataSet1、DataSource1、DBGrid1、Memo1 和七个 Button, 然后:{ 准备数据, 也可在设计时完成 }procedure TForm1.FormCreate(Sender: TObject);beginChDir(GetEnvironmentVariable(CommorogramFiles) \CodeGear Shared\Data\);ClientDataSet1.LoadFromFile(holdings.xml);DBGrid1.DataSource : DataSource1;DataSource1.DataSet : ClientDataSet1;end;{ 读取字段值的几种方法 }procedure TForm1.Button1Click(Sender: TObject);varv1,v2,v3,v4,v5,v6,v7,v8: Variant;num: Double;fName: string;begin{ 获取首字段的名称 }fName : ClientDataSet1.Fields[0].FieldName;{ 获取第一个字段值的几种方法: }v1 : ClientDataSet1.Fields[0].Value;v2 : ClientDataSet1.FieldByName(fName).Value;v3 : ClientDataSet1.FindField(fName).Value;v4 : ClientDataSet1.FieldValues[fName];v5 : ClientDataSet1.FieldList[0].Value;v6 : ClientDataSet1.FieldList.FieldByName(fName).Value;v7 : ClientDataSet1.FieldList.Find(fName).Value;v8 : ClientDataSet1.FieldList.Fields[0].Value;{ 已知这个字段是 Double 类型的, 可同时转换 }num : ClientDataSet1.Fields[0].AsFloat;{ 查看结果 }with Memo1.Lines do beginClear;Add(v1); Add(v2); Add(v3); Add(v4); Add(v5); Add(v6); Add(v7); Add(v8);Add(FloatToStr(num));end;end;{ 遍历当前行字段的几种方法 }procedure TForm1.Button2Click(Sender: TObject);varField: TField;i: Integer;beginMemo1.Clear;for Field in ClientDataSet1.Fields dobeginMemo1.Lines.Add(Field.Value);end;Memo1.Lines.Add();for i : 0 to ClientDataSet1.FieldCount - 1 dobeginMemo1.Lines.Add(ClientDataSet1.Fields[i].Value);end;Memo1.Lines.Add();for i : 0 to ClientDataSet1.FieldList.Count - 1 dobeginMemo1.Lines.Add(ClientDataSet1.FieldList[i].Value);end;Memo1.Lines.Add();end;{ First、Next、Last、Prior、RecNo }procedure TForm1.Button3Click(Sender: TObject);vars1,s2,s3: string;begin{ 读取第二行第二个字段 }ClientDataSet1.First;ClientDataSet1.Next;s1 : ClientDataSet1.Fields[1].Atring;{ 读取倒数第二行第二个字段 }ClientDataSet1.Last;ClientDataSet1.Prior;s2 : ClientDataSet1.Fields[1].Atring;{ 读取第四行第二个字段 }ClientDataSet1.RecNo : 4;s3 : ClientDataSet1.Fields[1].Atring;{ 查看结果 }with Memo1.Lines do beginClear;Add(第二行第二个字段: s1);Add(倒数第二行第二个字段: s2);Add(第四行第二个字段: s3);end;end;{ 遍历指定字段的所有记录 }procedure TForm1.Button4Click(Sender: TObject);vari: Integer;beginif not ClientDataSet1.Bof then ClientDataSet1.First;Memo1.Clear;while not ClientDataSet1.Eof dobeginMemo1.Lines.Add(ClientDataSet1.FieldList[0].Value);ClientDataSet1.Next;end;Memo1.Lines.Add(-------);for i : 1 to ClientDataSet1.RecordCount dobeginClientDataSet1.RecNo : i;Memo1.Lines.Add(ClientDataSet1.FieldList[1].Value);end;end;{ 通过 GetFieldList 可以读取几个指定字段的 TField 对象的列表 }procedure TForm1.Button5Click(Sender: TObject);varList: TList;Field: TField;i: Integer;beginList : TList.Create;ClientDataSet1.GetFieldList(List, ACCT_R; SYMBOL; SHARES);Memo1.Clear;for i : 0 to List.Count - 1 dobeginField : List[i];Memo1.Lines.Add(Field.Value);end;List.Free;end;{ GetFieldData 读取字段值到指针 }procedure TForm1.Button6Click(Sender: TObject);varF1: Double;F2: array[0..7] of AiChar;beginClientDataSet1.GetFieldData(ClientDataSet1.Fields[0], F1);ClientDataSet1.GetFieldData(ClientDataSet1.Fields[1], F2);with Memo1.Lines do beginClear;Add(FloatToStr(F1));Add(F2);end;end;//这是后面的例子用到的函数, 转换 TClientDataSet 时间格式到 TDateTimefunction TDateTimeRecToDateTime(DataType: TFieldType; Data: TDateTimeRec): TDateTime;varTimeStamp: TTimeStambegincase DataType offtDate:beginTimeStamp.Time : 0;TimeStamp.Date : Data.Date;end;ftTime:beginTimeStamp.Time : Data.Time;TimeStamp.Date : DateDelta;end;elsetryTimeStamp : MSecsToTimeStamp(Data.DateTime);exceptTimeStamp.Time : 0;TimeStamp.Date : 0;end;end;Result : TimeStampToDateTime(TimeStamp);end;{ GetCurrentRecord 是把当前行的所有字段(不包括 Blob 字段)读入到缓冲区 }procedure TForm1.Button7Click(Sender: TObject);typeTHoldingtruct packed record { 这是根据 holdings.xml 建立的数据结构 }ACCT_R: Double;SYMBOL: array[0..7] of AiChar; { 其 Size7, 但后面还有个 #0 }SHARES: Double;PUR_PRICE: Double;PUR_DATE: Integer;// Other: array[0..4] of Byte; { 它后面还空着若干字节, 其字节数等于前面的字段数 }end;varbuf: THoldingtruct;DateTimeRec: TDateTimeRec;begin//ShowMeage(IntToStr(ClientDataSet1.RecordSize)); { 可通过这个值对照上面的结构 }if ClientDataSet1.GetCurrentRecord(buf) then with Memo1.Lines dobeginClear;Add(FloatToStr(buf.ACCT_R));Add(buf.SYMBOL);Add(FloatToStr(buf.SHARES));Add(FloatToStr(buf.PUR_PRICE));DateTimeRec.Date : buf.PUR_DATE;Add(DateToStr(TDateTimeRecToDateTime(ftDate, DateTimeRec)));end;end;