多线程指针有关问题请问:记录指针传递出错

多线程指针问题请教:记录指针传递出错
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
PTRec_Code = ^TRec_Code;
TRec_Code = packed record
    Code,Date: String; //
end;


  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  G_Rec_Code : TRec_Code;

implementation

{$R *.dfm}

procedure Ana_Data(TheValues : PTRec_Code);
var
  TheRecData : TRec_Code;
begin
  TheRecData := TheValues^;
  showmessage(TheRecData.Code);
end;

procedure ThrFun_Data();
var
  TheThr:thandle;
  TheThrID:dword;
begin
  G_Rec_Code.Code := '0123';
  G_Rec_Code.Date := '2013-08-01';
  TheThr := beginthread(nil,0,@Ana_Data,@G_Rec_Code,0,TheThrID);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  ThrFun_Data();
end;

end.
/////////////////////////////////////////////
TheRecData.Code
这句出错,请教要如何修改???
指针 多线程 beginthread

------解决方案--------------------
因为showmessage是vcl方法,不是线程安全的,你得做同步操作。
或者你不要showmessage,用messagebox替代
MessageBox(0,PChar(TheRecData.Code),'',MB_OK);  

多线程指针有关问题请问:记录指针传递出错