OberonCore https://forum.oberoncore.ru/ |
|
присвоение указателей: unknown array length https://forum.oberoncore.ru/viewtopic.php?f=29&t=2335 |
Страница 1 из 1 |
Автор: | sacred [ Среда, 10 Февраль, 2010 11:27 ] |
Заголовок сообщения: | присвоение указателей: unknown array length |
Код: TYPE StringList = POINTER TO ARRAY OF POINTER TO ARRAY OF CHAR; VAR List : StringList; PROCEDURE ParseParameters(Line : ARRAY OF CHAR):StringList; VAR res : StringList; BEGIN NEW(res, 10); RETURN res END ParseParameters; BEGIN CmdLn := WinApi.GetCommandLineW(); List := ParseParameters(CmdLn); END UsiProcessMessage. Код упрощён, схематичен, для акцента на проблеме. На последней строчке ругается: "unknown array length". Непонятно в чём проблема. Я присваиваю не массивы, а указатели на массивы. В чём я здесь ошибаюсь? |
Автор: | Роман М. [ Среда, 10 Февраль, 2010 11:43 ] |
Заголовок сообщения: | Re: присвоение указателей: unknown array length |
Win/Docu/WinApi.odc Цитата: Pointers to Pointers
Pointers to pointers or basic types cannot be declared directly in Component Pascal. A type of the form p: POINTER TO ARRAY [untagged] OF BaseType; is used instead. You can use the form p[0] to dereference such a pointer. |
Автор: | Евгений Темиргалеев [ Среда, 10 Февраль, 2010 11:44 ] |
Заголовок сообщения: | Re: присвоение указателей: unknown array length |
Проблема не в присвоении указателей, а в присвоении открытому массиву Line : ARRAY OF CHAR. PROCEDURE GetCommandLineW* (): PtrWSTR; PtrWSTR* = POINTER TO ARRAY [untagged] OF CHAR; Длина массива, на кот. указывает CmdLn не известна. Пишите CmdLn$, чтобы присваивал String |
Автор: | sacred [ Среда, 10 Февраль, 2010 12:17 ] |
Заголовок сообщения: | Re: присвоение указателей: unknown array length |
Роман М. писал(а): Win/Docu/WinApi.odc Цитата: Pointers to Pointers Pointers to pointers or basic types cannot be declared directly in Component Pascal. A type of the form p: POINTER TO ARRAY [untagged] OF BaseType; is used instead. You can use the form p[0] to dereference such a pointer. В документации, действительно есть такая фраза. А вот что она означает? Я спокойно использую pointers to pointers в модулях без каких-либо проблем. По сабжу правильный совет дал Евгений Термингалиев, спасибо ему! А вот по поводу этой цитаты из документации хочется разобраться, что же здесь имеется в виду? |
Автор: | Роман М. [ Среда, 10 Февраль, 2010 12:40 ] |
Заголовок сообщения: | Re: присвоение указателей: unknown array length |
sacred писал(а): В документации, действительно есть такая фраза. А вот что она означает? Я спокойно использую pointers to pointers в модулях без каких-либо проблем. По сабжу правильный совет дал Евгений Термингалиев, спасибо ему! А вот по поводу этой цитаты из документации хочется разобраться, что же здесь имеется в виду? Например, такой тип нельзя объявить: T = POINTER TO POINTER А каким образом у тебя используется "pointers to pointers"? |
Автор: | Евгений Темиргалеев [ Среда, 10 Февраль, 2010 12:43 ] |
Заголовок сообщения: | Re: присвоение указателей: unknown array length |
Language Report писал(а): 6.4 Pointer Types Variables of a pointer type P assume as values pointers to variables of some type T. T is called the pointer base type of P and must be a record or array type. sacred писал(а): В документации, действительно есть такая фраза. А вот что она означает? Документация WinApi. Речь идёт про аналоги сишным указателям на любой тип, которые, в частности, используются для параметров-ссылок. В КП указатель на ARRAY [untagged] суть тоже самое.P.S. "Термингалиев" -- спасибо за минуту смеха ![]() ![]() |
Автор: | sacred [ Среда, 10 Февраль, 2010 13:11 ] |
Заголовок сообщения: | Re: присвоение указателей: unknown array length |
Евгений Темиргалеев писал(а): P.S. "Термингалиев" -- спасибо за минуту смеха ![]() ![]() ![]() А по поводу указателей на указатели, я был немного сбит с толку первой цитатой из документации, так как решил, что она как-то связана с моим вопросом, и решил, что указатели на массив указателей - тоже вне закона. Действительно, указатели на указатели я нигде не использую, да и, честно говоря, не представляю, для чего бы это могло понадобиться. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |