OberonCore https://forum.oberoncore.ru/ |
|
отличается ли := для строк от COPY? https://forum.oberoncore.ru/viewtopic.php?f=22&t=6618 |
Страница 1 из 1 |
Автор: | budden [ Суббота, 23 Май, 2020 09:32 ] |
Заголовок сообщения: | отличается ли := для строк от COPY? |
По-моему, одно и то же по смыслу. Есть ли отличия? |
Автор: | Sergej Durmanov [ Суббота, 23 Май, 2020 14:25 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
COPY копирует данные строки любого размера, обрезая лишнее, если необходимо. Оператор := требует, чтобы массивы были совместимы |
Автор: | adimetrius [ Суббота, 23 Май, 2020 18:08 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
ЕСЛИ вопрос про КП, то: Если "для строк", а не для массивов, то := подразумевает нуль-терминальные строки, и совершает АВОСТ, если нуля в массиве нет. a := b$ ИНАЧЕ КОНЕЦ |
Автор: | budden [ Воскресенье, 24 Май, 2020 11:59 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
Вопрос был про A2, но есть вероятность, что одно и то же. Спасибо за ответы, учту в дальнейшей работе. |
Автор: | Oleg N. Cher [ Понедельник, 25 Май, 2020 02:03 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
Sergej Durmanov писал(а): COPY копирует данные строки любого размера, обрезая лишнее, если необходимо. Оператор := требует, чтобы массивы были совместимы Не совсем так. Можно присваивать между разного размера массивами (в операции a := b$) и копировать строку в массив, но чтобы в массиве-приёмнике места под копируемую строку вместе с 0X гарантированно хватило. Если строка не копируется целиком, будет трап.А COPY по-тихому обрезает, что может привести к трудно находимым логическим ошибкам. С чем я уже столкнулся. Это действительно неприятно понижает надёжность, когда ждёшь от программы такой логики, что строка скопируется целиком, а вместо этого её содержимое обрезается и искажается, притом без предупреждений. Я в Ofront+ для КП и O3 перенёс COPY в SYSTEM. В O и O2 осталось для совместимости. P.S. А, или в AO нет операции a := b$ ? Тогда упс. |
Автор: | Sergej Durmanov [ Понедельник, 25 Май, 2020 15:08 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
Oleg N. Cher писал(а): Не совсем так. речь об а2
|
Автор: | Oleg N. Cher [ Среда, 27 Май, 2020 03:42 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
А как в AO реализуется безопасное (без усечения) копирование строк? Библиотечным способом? |
Автор: | Sergej Durmanov [ Среда, 27 Май, 2020 06:19 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
Оператор := требует, чтобы типы массивов символов были совместимы по присваиванию. По-сути это и есть присваивание массивов, и при этом ничего не обрезается и не добавляется. COPY сейчас копирует строку целиком, обрезая лишнее, если нужно, и вставляя 0X в конец массива(так сделано из соображений совместимости со старым компилятором). |
Автор: | budden [ Среда, 27 Май, 2020 11:27 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
А смотрит ли вообще := на символ с кодом 0? Т.е. будет ли копировать за пределами строки? |
Автор: | Sergej Durmanov [ Среда, 27 Май, 2020 11:46 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
Это присваивание массива. Копируется весь массив и оператору нет никакого дела до 0X |
Автор: | Sergej Durmanov [ Среда, 27 Май, 2020 11:56 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
Можно использовать процедуры модуля Strings. Append, Copy, Move для получения нужного эффекта |
Автор: | budden [ Среда, 27 Май, 2020 14:46 ] |
Заголовок сообщения: | Re: отличается ли := для строк от COPY? |
Спасибо! Тогда уж, чтоб два раза не вставать, а # для строк как работает? Я расширил длину имени в стиле и всё перестало раскрашиваться. Не понимаю, почему так. При этом в самом раскрасчике стиль по имени успешно находится, проблема, видимо, где-то на границе с TextView, хотя если честно, то вообще не понимаю. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |