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

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

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

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

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

Сообщение wofs »

Пишу кроссплатформенное приложение.
Под 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
RustemNur
новенький
Сообщения: 61
Зарегистрирован: 20.02.2011 10:21:14
Откуда: Уфа

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

Сообщение RustemNur »

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 :)
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

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

Сообщение alexs »

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


Страшная конструкция...
Создать в дизайнере поля для соответсвующего набора данных и использовать их уже не модно? За день второй пост с таким чудовищным кодом.
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

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

Сообщение dunin »

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


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

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

To wofs:

Код: Выделить всё

ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsInteger:= abs(ListKvit.DataSource.DataSet.FieldByName('tKomplekt').AsInteger - 1);
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

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

Сообщение alexs »

Код: Выделить всё

quPhonesTB_PEOPLES_ID.AsInteger:=quPeoplesTB_PEOPLES_ID.AsInteger;

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

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

Сообщение wofs »

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

Добавлено спустя 11 минут 22 секунды:

Код: Выделить всё

   with ListKvit.DataSource.DataSet do
     begin
    Edit;
    FieldByName('tKomplekt').AsInteger:= abs(FieldByName('tKomplekt').AsInteger - 1);
    Post;
    end;

оставил так - не хочу тыкать в визуальных компонентах - хз потом под что код переписывать придется и куда переносить.
Ответить