OberonCore
https://forum.oberoncore.ru/

Странное поведение функций модуля SYSTEM
https://forum.oberoncore.ru/viewtopic.php?f=2&t=714
Страница 1 из 1

Автор:  hothing [ Среда, 31 Октябрь, 2007 19:19 ]
Заголовок сообщения:  Странное поведение функций модуля SYSTEM

Приветсвую!

Есть следующий код:
Код:
PROCEDURE ChDir*;
VAR
   res : WinApi.BOOL;
   path : PATH_STR;
   apath: WinApi.PtrSTR;
   void: WinApi.PtrVoid;
   addr: INTEGER;
BEGIN
   void := 0;
   res := 0;   
   apath := NIL;
   path :=  "\bin32";
   PMD_PATH := "D:\PMDPC\";
   path := PMD_PATH + path;   
   void:= WinApi.LocalAlloc(WinApi.LPTR, 512 * SIZE(SHORTCHAR));
   [b]SYSTEM.PUT(SYSTEM.ADR(apath), void);[/b]
        [b](*apath := SYSTEM.VAL(WinApi.PtrSTR, void)*)[/b]
   ConvStrAPI(path, apath);
   StdLog.String(path$);StdLog.Ln;
   res := WinApi.SetCurrentDirectory(apath);
   void := WinApi.LocalFree(void);
END ChDir;

Пробовал 2 варианта преобразований (выделены жирым). Но ни один из них не работает. Переменная apath всегда NIL.

Собственно суть вопроса: Как правильно приводить указатели WinApi.PtrVoid к любому другому указателю из модуля WinApi?

Автор:  Сергей Губанов [ Среда, 31 Октябрь, 2007 19:26 ]
Заголовок сообщения:  Re: Странное поведение функций модуля SYSTEM

hothing писал(а):
Переменная apath всегда NIL.

А переменная void?

Автор:  hothing [ Четверг, 01 Ноябрь, 2007 12:20 ]
Заголовок сообщения:  Re: Странное поведение функций модуля SYSTEM

Разобрался. Спасибо.

Собственно причина была в не внимательном чтении документаци :oops:

Источник ошибки - процедура ConvStrAPI(path, apath), в которой второй параметр был задан как OUT.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/