procedure TForm1.Button1Click(Sender: TObject);
type a = record
info : string;
end;
pa = ^a;
var Buffer :string ;
    atmp,btmp:pa;
begin
 new(atmp);
 new(btmp);
atmp^.info := 'thank you';
buffer:=atmp^.info;
dispose(atmp);
btmp^.info :=buffer;
showmessage(btmp^.info) ;
dispose(btmp);
end;

解决方案 »

  1.   

    给你一段代码,其实都差不多,希望对你有用
    type                               //定义连表
      PStMyHz= ^StMyHz;
      StMyHz = Packed Record
        Word : String[2];
        Code : String[10];
        Next : PStMyHz;
      end;procedure Create;
    var
      I : Longint;
      Temp,Str : AnsiString;
      PNew,Tail : PStMyHz;
    begin
      Temp := HZCODETEXT; I := 1;
      Head := nil; Tail := Nil;
      while Temp[I]<>'\' do
      begin
        New(PNew);
        PNew^.Word := Temp[I]+Temp[I+1];   //取出汉字
        I := I+2; Str := '';
        while (Temp[I] in ['0'..'9']) do   //取出汉字对应编码
        begin
          Str := Str+Temp[I];
          I := I+1;
        end;
        PNew^.Code := Str;                 //新节点赋值
        PNew^.Next := nil;                 //新节点指针
        if Head=nil then
        begin
          Head := PNew;
          Tail := PNew;
        end else begin                    //新节点加入链表
          Tail^.Next := PNew;             //Tail始终指向尾节点
          Tail := PNew;
        end;
      end;
    end;end.
      

  2.   

    to  outer2000(天外流星) 先谢谢你。但我要的是存整个RECORD,不是一个子域。(这是我举的个例子,只写了一个子域)。等问题解决后,也给分。谢谢参与。你有办法吗?
      

  3.   

    // 完全按照你的要求procedure TForm1.Button1Click(Sender: TObject);
    type
      a = record
        info : string;
      end;  pa = ^a;
    var
      Buffer: array[0..1023] of char;
      atmp, btmp: pa;
      Vi: Integer;
    begin
      atmp := New(pa);
      btmp := New(pa);
      atmp^.info := 'thank you';  Vi := StrLen(PChar(atmp^.info));
      StrCopy(Buffer, PChar(atmp^.info));
      Dispose(atmp);  SetLength(btmp^.info, Vi);
      StrCopy(PChar(btmp^.info), Buffer);  Button1.Caption := btmp^.info;
      Dispose(btmp);
    end;
      

  4.   

    to amiao ,存放这个RECORD的内存,我是要释放掉,然后另用RECOED来读出的。
    等问题解决后,也给分。谢谢参与。
      

  5.   

    实际上
      
    a = record
      info : string;
    end;中的 info 只是一个指针,不是记录本体,类似于这些要单独处理。如果是a = record
      info : integer;
      info1: array [0..127] o char;
    end;什么的,就可以直接用 Move 进行内存传输了,因为记录结构本身已经确定
      

  6.   

    : torble(阿裕) 但若有个INTEGER的子域呢?就是说有一个以上不同类型的子域呢?你说的这个我知道,大体就是自行读出数据。我需要的是一个内存操作,一次赋值给RECORD。等下一起给分,参于的都给分。还有方法吗,帮帮我!
      

  7.   

    torble(阿裕) 能说说吗,下午给分。
      

  8.   

    我上面说了, string 只是指针,如果 string 被释放掉,则 Record 里面的值就变得毫无意义了,所以在转换完毕以前还是不要释放掉。如a = record
      info: string; 
      abc: Integer;
    end;pa = ^a;......
    ......atmp := New(pa); // 这时只是分配了 info 指针,也就是四个字节;但是 abc 这个整形变量分配好了四个字节;因为编译器不知道 string 有多长。
      

  9.   

    换而言之, Record 记录如果想要进行缓存,做好的方法是把 string 变成 字符数组类型, 如 array [0..1023] of Char 什么的,它就可以保存在记录结构体内,如果是 string 则是不确定,实际上这两种数据结构可以很好的进行转换,何乐而不为呢?
      

  10.   

    TO torble(阿裕,按你说的,用MOVE。
    type a = record
         info : char;
         data : Integer;
    end;type pa = ^a;procedure TForm1.Button1Click(Sender: TObject);
    var tmpa,tmpb :pa;
        buf : array[0..1023] of char;
    begin
      tmpa := New(pa);
      tmpb := New(pa);
      tmpa^.info := 'a';
      tmpa^.data := 9;
      FillChar(buf,sizeOf(buf),0);
      Move(tmpa,buf,sizeof(a));
      dispose(tmpa);
      Move(buf,tmpb,sizeof(a));
      ShowMessage(tmpb^.info);
      dispose(tmpb);
    end;
    结果不对啊,我用MoveMemory也不行。我的目的就是Record 记录进行缓存。
      

  11.   

    torble(阿裕),outer2000(天外流星),amiao(amiao)  大家还有建议吗?
      

  12.   

    应该是Move(tmpa^,buf,sizeof(a)); ,我自己写错了!TO torble(阿裕)谢谢你告之MOVE,我先用MoveMrmory未成功的。问题解决,给分!感谢各位的帮助!
      

  13.   

    Move 用错了,应该是:Move(tmpa^,buf,sizeof(a));
    dispose(tmpa);
    Move(buf,tmpb^,sizeof(a));
    ShowMessage(tmpb^.info);
    dispose(tmpb);
      

  14.   

    感谢 torble(阿裕) 在线帮助。
      

  15.   

    就用TStream类型的Read和Write就行,我今天刚做了一个,你可以读一读《Delphi 5 开发人员指南》的文件操作部分。
      

  16.   

    原代码革命狂飕-一个程序员的吐血之作
       集本人多年开发积累和精心收藏所铸就而成的软件及系统原代码光盘,价格便宜,只需100元(RMB)(限量发行100套,先购先得),有意者请速发邮件至:[email protected]
       本人承诺尽快回复汇款地址及系统的详细介绍。
    光盘内容:
    [MP3播放程序源代码]
    [ERP系统源代码系列]:包含的模块有系统管理、基本资料管理、生产管理、采购管理、仓库管理、质量管理、设备管理、人力资源管理等模块。
    [GIS地理信息管理系统源代码]
    [IDE开发平台界面(类似delphi)源代码]
    [报表设计系统源代码]
    [伯乐股市分析系统源代码(C++)][通用的SQL查询语言生成器]
    [超级程序管理器源代码]
    [超级电子小说阅读器源代码]
    [豪杰超级解霸2.0程序源代码(C++)]
    [机关单位通用工资管理系统(VB)源代码]
    [家庭财账管理软件源代码]
    [进销存管理(VB)源代码]
    [进销存系统源代码本系统]
    [挖地雷游戏的源程序(VB)]
    [网络RPG游戏系统源代码(Java/asp)]
    [网页在线编辑系统源代码(Java/asp)]
    [文件传输系统1源程序]
    [文件传输系统2源程序]
    [邮件处理系统源程序]
    [语音识别系统源程序]
    [远程监控系统源程序]
    [文档资料管理系统源程序]
    [动态网站系统原码]:网上商店前后台管理软件、网站分类源程序、广告服务器源程序、网上超市源程序、投票(调查)源程序、投稿软件源程序、二手市场源程序、流量统计源程序、图片上传源程序、新闻服务器源程序、论坛源程序、BBS源程序、隐蔽留言簿源程序、公开留言板源程序、聊天室源程序、社区源程序
    [媒体播放器源代码]
    [扑克牌游戏源代码]
    [棋类游戏系统源代码]
    [软件注册系统源代码]
    [跳舞机的源程序(VB)]
    [图片浏览器系统(C++)源代码]