Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> constant object cannot be passed as var parameter, неведомая ошибка в коде 
V
    Опции темы
14SatanA88
Дата 11.11.2010, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: нет
Всего: 5



Доброго времени суток.

В строке кода 
Код

path[kgr+1]:=ExtractFilePath(Application.ExeName)+'data\excel\'+delete(AsgrTable.FieldByName('Cat').AsString,length(AsgrTable.FieldByName('Cat').AsString),1)+'.xls';


компилятор видит ошибку
constant object cannot be passed as var parameter

не могу разобраться, что и откуда, но опытным путем выяснил, что загвоздка во фрагменте 
Код

delete(AsgrTable.FieldByName('Cat').AsString,length(AsgrTable.FieldByName('Cat').AsString),1)


пробовал подставлять вместо вышеуказанных параметров переменные, куда заносил эти параметры, не помогает.

прошу Вашей помощи.
спасибо за Ваше потраченное время.
PM MAIL ICQ   Вверх
bems
Дата 11.11.2010, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



С подставленными переменными должно работать. А конкретно дело в первом параметре.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
БелАмор
Дата 11.11.2010, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 10.6.2010
Где: Россия

Репутация: 7
Всего: 17



Для начала отформатируем код:
Код

path[kgr+1] := 
  ExtractFilePath(Application.ExeName) +
  'data\excel\' + 
  delete(AsgrTable.FieldByName('Cat').AsString, length(AsgrTable.FieldByName('Cat').AsString), 1) +
  '.xls';

Ошибки:
1. Delete - это процедура, и никакого значения не возвращает, поэтому в приведённом виде использоваться не может.
2. В процедуру Delete должна передваться строка по ссылке. Именно эта строка и будет модифицироваться. Вы же пытаетесь передать туда свойство. Свойство может передаваться только по значению.

P.S. На самом деле передавать свойство по ссылке можно, если оно читается напрямую из поля, а не через функцию чтения, но это скорее всего паразитное явление, оставленное по недосмотру, возможно, не во всех версиях, пользоваться которым не следует ни в коем случае.
PM   Вверх
bems
Дата 11.11.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



14SatanA88, когда я говорил что должно работать, я конечно же имел в виду второй фрагмент


--------------------
Обижено школьников: 8
PM MAIL   Вверх
14SatanA88
Дата 12.11.2010, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: нет
Всего: 5



Всем огромное спасибо, вынес процедуру delete отдельно, для результата выделил переменную, подставил в ту строку, все заработало. Я догадывался, что delete не вернет мне в той строке нужного результата, но хотел сократить код.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.