var L: TStrings;//最后注意L的释放procedure SetStr(const Key,Value: string);var I: Integer;begin if not Assigned(L) then L := TStringList.Create; I := L.IndexOfName(Key); if I = -1 then//不存在此变量 L.Add(Key+'='+Value) else//存在 L.ValueFromIndex[I] := Valueend;function GetStr(const Key: string): string;var I: Integer;begin Assert(Assigned(L), 'L is not created!'); I := L.IndexOfName(Key); if I = -1 then//不存在此变量 Result := '' else//存在 Result := L.ValueFromIndex[I]end;procedure TForm1.FormCreate(Sender: TObject);begin SetStr('var1', '1aaaaaaaaa'); SetStr('var2', '2aaaaaaaaa'); ShowMessage(GetStr('var1')); ShowMessage(GetStr('var2')); SetStr('var1', '1abc'); ShowMessage(GetStr('var1'));end; [解决办法]
procedure LoadPropValues(query: TADOQuery; obj: TComponent);var i, nCount: Integer; PropList: PPropList; PropName:string; Field :TField;begin ncount := GetTypeData(obj.ClassInfo).PropCount; GetPropList(obj.ClassInfo,PropList); try for i := 0 to ncount - 1 do begin PropName := PropList[I]^.Name; Field := query.FindField(PropName); if Assigned(Field) then begin case (PropList[I]^.PropType)^.Kind of tkInteger,tkInt64: SetOrdProp(obj,PropName,Field.AsInteger); tkString, tkWChar,tkLString: SetStrProp(obj,PropName,Field.AsString); tkWString: SetWideStrProp(obj,PropName,Field.AsWideString); end; end; end; finally FreeMem(PropList); end;end; [解决办法] 这里是一个类的实例保存一条记录的数据,你可以根据实际情况进行修改 [解决办法] 这里是根据字段名,而你需要的是根据其中某个字段的值,来判断对应关系 [解决办法] 可以,没有问题 [解决办法] 呵呵,结帖子给分吧