identifier idents no member "Field" при компиляции в Linux

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

identifier idents no member "Field" при компиляции в Linux

Сообщение wofs » 18.04.2011 19:55:23

Пишу кроссплатформенное приложение.
Под windows все компилируется и работает без проблем, а под Ubuntu Linux при компиляции ругается нехорошими словами:
Код: Выделить всё
identifier idents no member "Field"

на строчку
Код: Выделить всё
if ListKvit.Columns[0].Field.Value='1' then ListKvit.Columns[0].Field.Value:='0' else  ListKvit.Columns[0].Field.Value := '1';
.
вот полный кусок кода:
Код: Выделить всё
procedure TFmMain.ListKvitKeyPress(Sender: TObject; var Key: char);
begin

   if (Key = ' ') then
  Begin
    Key := #0;
    ListKvit.DataSource.DataSet.Edit;
    if ListKvit.Columns[0].Field.Value='1' then ListKvit.Columns[0].Field.Value:='0' else  ListKvit.Columns[0].Field.Value := '1';
    ListKvit.DataSource.DataSet.Post;
    if ListKvit.DataSource.DataSet.RecNo<ListKvit.DataSource.DataSet.RecordCount then   ListKvit.DataSource.DataSet.Next;
  end;
end;   

вопрос - как заставить компилятор под Linux скушать строчку?

Добавлено спустя 8 минут 31 секунду:
вопрос снимается - переписал код:
Код: Выделить всё
if ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsString='1' then ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsString:='0' else  ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsString := '1';

все заработало в обоих системах.
мораль сей басни такова - нефиг писать кривой код - однажды он даже не скомпилится :D
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: identifier idents no member "Field" при компиляции в Linux

Сообщение RustemNur » 19.04.2011 19:54:00

wofs писал(а):
Код: Выделить всё
if ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsString='1' then ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsString:='0' else  ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsString := '1';


Я вот никогда не понимал тех, кто с маниакальным упорством избегает оператора with :)
RustemNur
новенький
 
Сообщения: 61
Зарегистрирован: 20.02.2011 11:21:14
Откуда: Уфа

Re: identifier idents no member "Field" при компиляции в Linux

Сообщение alexs » 20.04.2011 07:19:35

wofs писал(а):ListKvit.DataSource.DataSet.FieldByName('tKomplekt')


Страшная конструкция...
Создать в дизайнере поля для соответсвующего набора данных и использовать их уже не модно? За день второй пост с таким чудовищным кодом.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: identifier idents no member "Field" при компиляции в Linux

Сообщение dunin » 20.04.2011 08:35:27

alexs писал(а):
wofs писал(а):ListKvit.DataSource.DataSet.FieldByName('tKomplekt')


Страшная конструкция...
Создать в дизайнере поля для соответсвующего набора данных и использовать их уже не модно? За день второй пост с таким чудовищным кодом.

Ну не знаю... не компактно, конечно... А что еще здесь не так? По мне, так вполне допустимо.

To wofs:
Код: Выделить всё
ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsInteger:= abs(ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsInteger - 1);
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: identifier idents no member "Field" при компиляции в Linux

Сообщение alexs » 20.04.2011 23:11:38

Код: Выделить всё
quPhonesTB_PEOPLES_ID.AsInteger:=quPeoplesTB_PEOPLES_ID.AsInteger;

Аналогичный код - также проще?
Просто во время разработки приложения дважды кликнуть по вашему DataSet-у и добавить все поля. Потом просто использовать их.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: identifier idents no member "Field" при компиляции в Linux

Сообщение wofs » 21.04.2011 10:01:33

всем спасибо за замечания - учту :)

Добавлено спустя 11 минут 22 секунды:
Код: Выделить всё
   with ListKvit.DataSource.DataSet do
     begin
    Edit;
    FieldByName('tKomplekt').AsInteger:= abs(FieldByName('tKomplekt').AsInteger - 1);
    Post;
    end;

оставил так - не хочу тыкать в визуальных компонентах - хз потом под что код переписывать придется и куда переносить.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru