我程序中定义有很多结构体,虽然他们字段各异,但给他们赋值的方法是一样的,我在想能用什么办法写个通用的赋值函数呢?已知:结构体A,B,C和他们的字段字符串列表,意思就是type
A = record
 a1: integer;
 a2: word;
 a3: word;
end;B = record
 b1: Longword;
end;var 
 string fieldA='a1,a2,a3';
 string fieldB='b1';
//想写一个类似下面这样的通用函数
procedure assign(struct:pointer;fields: String,sType: Integer);assign函数给定一个结构体指针struct,该结构体字段列表fields,同时指定struct的类型sType。平时访问一个结构体成员,只能这样:a.a1:=0;如何用fieldA中的字符a1 替换a.a1中的a1呢?

解决方案 »

  1.   

    var
      p:A
    begin
      p.a1 := 'a1';
      p.a2 := 'a2';
      p.a3 := 'a3';
    ......
    end;
    end;
      

  2.   

    var 
     string fieldA='a1,a2,a3';
     string fieldB='b1';
    ----------------------
    弱弱的问一下:
    这是 Pascal for C ?
      

  3.   

    如果结构的成员都是数值型的话比较简单,首先得到结构的地址,用Move或CopyMemory赋值,再移到下一个地址,直到完成。
      

  4.   

    全局变量初始化该这样写啦:
    var
     fieldA: string ='a1,a2,a3';
     fieldB: string ='b1';谢谢taxi的回答,我确实还有字段类型列表,还有字段的一些其他属性。