4 параметр в CreateThread это Pointer, указатель, а вы передаёте строку, тогда уж надо так:
Код:
function MyProc(str: pchar):DWORD;
var P : Pointer;
i: integer;
begin
i:=GetFileSize(StrToCard(str),P);
MainForm.Label1.Caption := intToStr(i);
Result := 0;
end;
procedure TMainForm.BitBtn1Click(Sender: TObject);
Var thID:DWORD;
begin
CreateThread(NULL, 0, MyProc, pchar(MainForm.Name.Text), 0, thID);
end;
либо эту строку сохранять в глобальной переменной, но здесь могут быть "погони" потоков
и кстати, установка переменных формы (vcl) из потока может (в определённых ситуациях) повиснуть оба потока, для этого нужно использовать функцию Synchronize