- Код: Выделить всё
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils, CustApp,
{ you can add units after this }
Windows,
ActiveX;
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
function ThreadProc(pDeffered:pointer):dword;stdcall;
const
TIME_TO_SLEEP_DURING_ANIMATION = 660;
var
FSEFirst, FSELast, FSEinx:integer;
FSE:pointer;
StubTextureInx :integer;
AtlasInx:integer;
TexLeft:Single;
TexRight:Single;
TexBottom:Single;
TexTop:Single;
msg:tagMSG;
path:WideString;
OleInitRes:HRESULT;
path2:array[0..MAX_PATH-1] of WideChar;
i:integer;
begin
result := 0;
OleInitRes := OleInitialize(nil);
FSEFirst := 1;
FSELast := 50;
i:= 4;
path := 'grehrh';
for FSEinx := FSEFirst to FSELast do
begin
GetFileAttributesW('c:\windows');
i := i + 1;
GetFileAttributesW('c:\windows');
end;
OleUninitialize;
end;
var
i:integer;
begin
for i := 0 to 10 do
CreateThread(nil, 0, @ThreadProc, nil,0, threadID);
MessageBoxW(0, 'OK','caption',0);
end.
У меня на Win7 выдает SIGSEGV. Видимо, дело в строке path := 'grehrh'; В FPC опыта нет, что здесь не так?
И сразу хочу спросить, за исключением общих правил работы с потоками (типа избегать глобальных переменных) есть ли специфические требования FPC?
Особенно какие еще вещи запрещено делать из потоковой функции? Буду благодарен за любые FPC-специфичные предостережения при работе с потоками.