
- Код: Выделить всё
if Detected then WineVersionString:= 'Wine' else Exit;
Try
ntdll:= LoadLibrary('ntdll.dll');
if ntdll > 0 then begin
vWineGetVersion := GetProcAddress(ntdll, 'wine_get_version');
if Assigned(vWineGetVersion)
then WineVersionString+= ' ' + vWineGetVersion();
//FreeLibrary(ntdll);
end;
Except
End;
Как лбом об стенку.
Причём, только при запуске коммандой wine <путь>chentrah.exe !

При запуске из любого файлового менеджера - дабл коммандер (родной), тотал коммандер, гном коммандер (родной), даже из >wine explorer.exe - всегда, гарантированно, работает!






Добавлено спустя 5 часов 27 минут 20 секунд:
Я НАШОЛ! НАШОЛ, БЛДЖАД! ЭТО БАГ В RTL ПАСКАЛЯ!!!












У меня в начале несколько раз с одним файлом елозит: открыть файл, закрыть файл, открыть файл, закрыть файл (проверяет можно ли записывать, тупо открывая на запись). Но! Эта С-с-с-сука его не закрывает!

Дано:
c:FPC2.6.4sourcertlobjpasclassesstreams.inc
- Код: Выделить всё
destructor TFileStream.Destroy;
begin
FileClose(FHandle);
end;
, что выливается в
c:FPC2.6.4sourcertlwinsysutils.pp
- Код: Выделить всё
Procedure FileClose (Handle : THandle);
begin
if Handle<=4 then
exit;
CloseHandle(Handle);
end;
В виндозе - всё пучком, хэндл = 28. Но когда это - первый файл, открытый под голым вайном, то этот драный в попу Handle равен точнёхонько 4 !





И естессно ТОЛЬКО когда запускаешь коммандной строкой из терминала

Кто-нить, запостите пожалста на багтрекер, а то я себе не доверяю. Полезу туда сам - могу клавиатуру об монитор раз?##@%

У себя пока применю хак: при старте программы буду открывать мусорные файлы пока хэндл не станет больше 4.
Добавлено спустя 34 минуты 3 секунды:
Re: Баг RTL: файл открытый первым не закрывается под голым Wine
P.S. А вот ХРЕН. Просто открываю файлы-затычки - хендл оказывается 116, 120, 124, 128, 132.
Открываю файл который надо потом закрыть - хендл 4.
Таки баг вайна.