为什么线程使用数组会变成一个空数组?
我定义了一个全局数组
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
GameStatus: array of record
sRecID : integer; //记录ID
sRowID : integer; //列表行ID
sPIDState:DWORD;
sPortState:DWORD;
sInetState:DWORD;
end;
implementation
{$R *.dfm}
Function CheckGameStatus(p:Pointer): DWORD ;stdcall;
begin
Form1.Text := IntToStr(high(GameStatus));
end;
procedure TForm1.Button1Click(Sender: TObject);
var ID :Thandle ;
begin
CreateThread(nil, 0, @CheckGamestatus, Nil, 0, ID);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(GameStatus,2);
GameStatus[0].sRecID := 0;
GameStatus[0].sPIDState := 0 ;
GameStatus[0].sPortState := 0 ;
GameStatus[0].sInetState := 0 ;
GameStatus[1].sRecID := 1 ;
GameStatus[1].sPIDState := 0 ;
GameStatus[1].sPortState := 0 ;
GameStatus[1].sInetState := 0 ;
end;
end.
[解决办法]
喂,我这边在线程中使用是成功的啊