С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/88: Рейтинг темы: голосов - 88, средняя оценка - 4.74
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578

Ошибка Constant object cannot be passed as var parameter

15.06.2013, 13:00. Показов 16853. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. При пропускание через функции Insert и Delete, выдает ошибку(в название темы). Перевод примерно такой:
Константа не может бы чем-то из параметров переменых.
Вот примеры кода:
Delphi
1
Insert(tag,Memo1.Lines.Strings[pos1],pos2+1); //внедрение тега в строку поля ввода. pos1 и pos2, тип integer
И ещё:
Delphi
1
Delete(ListBox1.Items.Strings[i],i1, Length(ListBox1.Items.Strings[i])-i1); //удаления конца строки после раздеителя(i1- положение разделителя)
Что делать, ума не приложу?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2013, 13:00
Ответы с готовыми решениями:

Возникает ошибка: "Constant object cannot be passed as var parametr".
procedure TForm1.Button1Click(Sender: TObject); type mass =array of real; const mass1:mass= ((-1.8, 2.3) ,(3.25, -0.5)); var...

Ошибка Constant object cannot be passed as var parameter
Подскажите почему ошибка "Constant object cannot be passed as var parameter"? procedure TContractRunnerDlg.sINNKeyPress(Sender:...

[Ошибка] Constant object cannot be passed as var parameter
procedure TForm1.Button1Click(Sender: TObject); const x: array of byte = ($01, $01, $01, $01, $01); begin S.SendTo(x, sizeof(x)); ...

7
angstrom
15.06.2013, 13:51
Обрати внимание на декларацию второго параметра - var. Это значит что нужно из Memo считать в переменную, а её уже подставлять. То же самое для Delete, но там var-параметром выступает 1 параметр.
procedure Insert(Source: string; var S: string; Index: Integer);
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
15.06.2013, 13:54  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Обрати внимание на декларацию второго параметра - var. Это значит что нужно из Memo считать в переменную, а её уже подставлять. То же самое для Delete, но там var-параметром выступает 1 параметр.
В смысле? Я просто точно уверен, что указывает компилятор на конечные параметры функций.
0
angstrom
15.06.2013, 13:56
Ну если уверен, продолжай бодаться. Хотя справку почитать не помешает, а заодно и примеры из этой же справки.
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
15.06.2013, 14:03
Цитата Сообщение от саша40 Посмотреть сообщение
Constant object cannot be passed as var parameter
Это совсем не то же самое, что
Цитата Сообщение от саша40 Посмотреть сообщение
Константа не может бы чем-то из параметров переменых.
Перевод сообщения об ошибке - "константный объект не может быть передан как Var-параметр". Так что придется тебе сохранить строку в переменную типа String, потом изменить ее этими функциями и вернуть назад. Передавать Property, которая является константным объектом, в качестве Var-параметра нельзя... (посмотри внимательно сюда:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
  TStrings = class(TPersistent)
  private
    // ...
  protected
    // ...
    function Get(Index: Integer): string; virtual; abstract;
    procedure Put(Index: Integer; const S: string); virtual;
    // ...
  public
    // ...
    property Strings[Index: Integer]: string read Get write Put; default;
    // ...
  end;
- возможно, поймёшь, почему)
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
15.06.2013, 14:26  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Это совсем не то же самое, что


Перевод сообщения об ошибке - "константный объект не может быть передан как Var-параметр". Так что придется тебе сохранить строку в переменную типа String, потом изменить ее этими функциями и вернуть назад. Передавать Property, которая является константным объектом, в качестве Var-параметра нельзя... (посмотри внимательно сюда:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
  TStrings = class(TPersistent)
  private
    // ...
  protected
    // ...
    function Get(Index: Integer): string; virtual; abstract;
    procedure Put(Index: Integer; const S: string); virtual;
    // ...
  public
    // ...
    property Strings[Index: Integer]: string read Get write Put; default;
    // ...
  end;
- возможно, поймёшь, почему)
То есть ошибка ближе чем я думал. Значит в переменую.
0
angstrom
15.06.2013, 14:38
Что я тебе сразу предлагал, но

Цитата Сообщение от саша40 Посмотреть сообщение
Я просто точно уверен
15.06.2013, 18:30

Не по теме:

саша40, известный кэп...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.06.2013, 18:30
Помогаю со студенческими работами здесь

Ошибка: Constant object cannot be passed as var parameter
else if (TS = 'PRIVMSG') then begin uMessage:=''; for i:=1 to j do //Проверяем кто написал сообщение ...

Constant object cannot be passed as var parameter
Всем доброго времени суток. Ипользую данный код: procedure TForm1.Button1Click(Sender: TObject); var s: PAnsiChar; begin ...

Ошибка: [Error] Project1.dpr(11): Constant object cannot be passed as var parameter Operator not applicable to this operand type
Помогите пожалуйста, в чем ошибка? помогите решить unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,...

Исправление ошибки "Constant object cannot be passed as var parameter"
Ругается на параметр "a" с ошибкой "Constant object cannot be passed as var paramete" const size = 3; type matrix =...

Снимаем звук с микрофона: ошибка 11 (invalid parameter passed)
Добрый день. Собственно сабж. На с++ реализовал, а вот на шарпе.... вот код public class SoundClass { public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru