OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 19:39

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Копирование строк
СообщениеДобавлено: Воскресенье, 10 Апрель, 2016 00:58 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
В Обероне-2 можно было написать так:
Код:
VAR p: POINTER TO ARRAY OF CHAR;
  s: ARRAY 100 OF CHAR;
BEGIN
  ...
  COPY(p^, s)

Блэкбокс ругается, что COPY - это устаревшая фишка Оберона, но написать s := p^; он тоже не даёт. Говорит: «Несовместимые типы».
В итоге я написал цикл WHILE, который всё прекрасно перекопировал. А как сделать правильно?
Код:
PROCEDURE GetError* (VAR s: ARRAY OF SHORTCHAR);
VAR p: POINTER [untagged] TO ARRAY [untagged] OF SHORTCHAR;
BEGIN
  p := ...........;
  i := 0; WHILE (i < LEN(s)) & (p[i] # 0X) DO s[i] := p[i]; INC(i) END


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Копирование строк
СообщениеДобавлено: Воскресенье, 10 Апрель, 2016 01:01 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 473
Откуда: KZ
Что нужно сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Копирование строк
СообщениеДобавлено: Воскресенье, 10 Апрель, 2016 01:30 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Читаем справку
Help -> What's New писал(а):
String concatenation
The + operator now allows to concatenate strings. The target variable must be of sufficient length to hold the resulting string.

Elimination of COPY
The auxiliary procedure COPY is not necessary anymore, since the $ operator makes it superfluous. For example,

COPY(a, varpar) is replaced by varpar := a$


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Копирование строк
СообщениеДобавлено: Воскресенье, 10 Апрель, 2016 02:00 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Надо из POINTER [untagged] TO ARRAY [untagged] OF SHORTCHAR скопировать символы в ARRAY OF SHORTCHAR (в открытый массив).
Так заработало:
Код:
s := p$
(s - ARRAY OF SHORTCHAR;   p - POINTER [untagged] TO ARRAY [untagged] OF SHORTCHAR)
Даже не пришлось ставить крышку (^).
Спасибо за помощь.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB