program Project1;uses
windows,, Dialogs, SysUtils;type
MYPARA = record
title: pchar;
end;function MyThreadfunc(para: MYPARA): string;
begin
createfile(pchar('U:\' + para.title + '.TXT'), GENERIC_WRITE, 0, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);end;
var
P: MYPARA;
i:integer;
begin
i := 123;
P.title := pchar(inttostr(i));
CreateThread(nil, 0, @MyThreadfunc, P, 0, ThreadID); sleep(60000);
end.大概程序就是上面那样,我要怎么把参数I传递到MyThreadfunc函数中,
windows,, Dialogs, SysUtils;type
MYPARA = record
title: pchar;
end;function MyThreadfunc(para: MYPARA): string;
begin
createfile(pchar('U:\' + para.title + '.TXT'), GENERIC_WRITE, 0, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);end;
var
P: MYPARA;
i:integer;
begin
i := 123;
P.title := pchar(inttostr(i));
CreateThread(nil, 0, @MyThreadfunc, P, 0, ThreadID); sleep(60000);
end.大概程序就是上面那样,我要怎么把参数I传递到MyThreadfunc函数中,
解决方案 »
- TComboBox 重画问题!急-----在线等!大虾帮帮忙!
- 是学delphi还是C#??
- procedure xx(var a:buffer);为什么提示buffer未定义?
- 我用了database,query和DataSource2来连接数据库,但为什么与之相关的DataSource确得不到query中的sql返回的数据
- 利用indy进行socket编程,服务器端如何对某客户端主动发消息?
- D7中单表打印出现问题了
- 请问怎么写程序更改本机时间!
- 估計誰都可以得分--新手上路請多提攜
- 做Powerpoint的东西怎么收费.
- 请教怎样在线更新本地数据?
- 求dxDBGrid的使用说明文件
- 续~~~做一个简单的抽奖系统
windows,, Dialogs, SysUtils; type
MYPARA = record
title: pchar;
str:pchar;
end; function MyThreadfunc(para: MYPARA): string;
begin
createfile(pchar('U:\' + para.title + '.TXT'), GENERIC_WRITE, 0, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0); end;
var
P: MYPARA;
i:integer;
begin
i := 123;
P.title := pchar(inttostr(i));
p.str:='sdfsf';
CreateThread(nil, 0, @MyThreadfunc, @P, 0, ThreadID); sleep(60000);
程序运行后出错
end.
P: MYPARA; //栈内存
i:integer;
begin
i := 123;
P.title := pchar(inttostr(i)); //栈内存(指IntToStr返回的串)
p.str:='sdfsf'; //栈内存(对于这个常量串,就这样子理解吧,这个内存跟编译选项等有关系)
CreateThread(nil, 0, @MyThreadfunc, @P, 0, ThreadID); sleep(60000);
程序运行后出错
end. 由于上面使用的是栈内存,而线程执行是不会阻塞的,所以上面的函数就有可能先于线程的执行而执行结束.从而栈内存被释放,那么在线程当中操作的数据,不仅是结构当中的PChar,包括结构指针本身,都就变成了野指针