Консультация № 185863
19.04.2012, 11:20
62.88 руб.
0 17 2
Здравствуйте! У меня возникли сложности с таким вопросом:
В ответе на вопрос Lazarus-FB приведен текст программы. На некоторых компьютерах запустить (и откомпилировать) не удалось. Подскажите, в чем ошибка. Возможно, где-то сохраняется информация о предыдущей версии. Спасибо.

Обсуждение

давно
Старший Модератор
17042
808
19.04.2012, 12:49
общий
19.04.2012, 12:49
Адресаты:
Вам стоит привести вывод сообщений об ошибке, появляющихся при сборке программы. Это значительно упростит поиск ответа на Ваш вопрос.
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Неизвестный
19.04.2012, 14:58
общий
это ответ
Здравствуйте, lamed!
В связи с тем, что Lazarus постоянно развивается, изменяется стандартная библиотека компонентов LCL.
При попытке открыть указанный Вами проект у меня также возникли ошибки, в частности, отсутствие сойства FieldDefs в компоненте TSqlQuery.
Для исправления таких ошибок порсто открываете файл формы в среде Lazarus и удаляете свойства, на которые "ругается" компилятор.
Я проверил на SVN версии Lazarus в Ubuntu Studio, после удаления указанного выше свойства проект успешно скомпилировался.
В приложении измененный файл описания формы.
Удачи!

Приложение:
object frmMain: TfrmMain
Left = 307
Height = 286
Top = 234
Width = 783
Caption = '-L¿àÞáÜÞâà ÔÐÝÝëå Þ áÞâàãÔÝØÚÐå'
ClientHeight = 286
ClientWidth = 783
OnCreate = FormCreate
OnDestroy = FormDestroy
Position = poDesktopCenter
LCLVersion = '1.1'
object DBGrid1: TDBGrid
Left = 0
Height = 232
Top = 0
Width = 784
Anchors = [akTop, akLeft, akRight, akBottom]
Color = clWindow
Columns = <
item
Title.Caption = 'ÄÐÜØÛØï ¸.¾.'
Width = 200
FieldName = 'FM'
end
item
Title.Caption = '¿ÞÔàÐ×ÔÕÛÕÝØÕ'
Width = 150
FieldName = 'DEPT'
end
item
Title.Caption = '´ÞÛÖÝÞáâì'
Width = 200
FieldName = 'NAME'
end
item
Title.Caption = 'ÂÐàØä, àãÑ.'
Width = 100
FieldName = 'TARIFF'
end
item
Title.Caption = 'ÇÐáë'
FieldName = 'HOURS'
end>
DataSource = ds1
ReadOnly = True
TabOrder = 0
end
object btnEdit: TButton
Left = 40
Height = 25
Top = 248
Width = 119
Anchors = [akLeft, akBottom]
Caption = 'ÀÕÔÐÚâØàÞÒÐâì'
Default = True
OnClick = btnEditClick
TabOrder = 1
end
object btnAdd: TButton
Left = 184
Height = 25
Top = 248
Width = 75
Anchors = [akLeft, akBottom]
Caption = '´ÞÑÐÒØâì'
OnClick = btnAddClick
TabOrder = 2
end
object btnDelete: TButton
Left = 296
Height = 25
Top = 248
Width = 75
Anchors = [akLeft, akBottom]
Caption = 'ÃÔÐÛØâì'
OnClick = btnDeleteClick
TabOrder = 3
end
object btnPrint: TButton
Left = 409
Height = 25
Top = 248
Width = 75
Anchors = [akLeft, akBottom]
Caption = '¿ÕçÐâì'
OnClick = btnPrintClick
TabOrder = 4
end
object conn: TIBConnection
Connected = False
LoginPrompt = False
DatabaseName = '/home/vadim/lamed/INSTITUTE.FDB'
KeepConnection = False
Password = 'masterkey'
Transaction = Trans
UserName = 'sysdba'
CharSet = 'utf8'
HostName = 'localhost'
LogEvents = []
left = 57
top = 23
end
object qPerson: TSQLQuery
Database = conn
Transaction = Trans
ReadOnly = False
SQL.Strings = (
'SELECT p1.id, p1.fm, p1.dept, p2.name, p2.tariff,'
'p1.hours, p1.positid'
'FROM person p1'
'INNER JOIN posit p2 ON p1.positid=p2.id'
'ORDER BY p1.fm'
)
Params = <>
left = 125
top = 23
end
object Trans: TSQLTransaction
Active = False
Action = caCommit
Database = conn
left = 178
top = 24
end
object ds1: TDatasource
DataSet = qPerson
left = 126
top = 77
end
end
Неизвестный
19.04.2012, 15:05
общий
19.04.2012, 15:06
Адресаты:
Извините, работаю в Linux, поэтому при вставке текста в приложение моего ответа не сохранилась кодировка.
Исправляюсь и вкладываю измененный файл формы.
P.S. Для успешной работы приложения в компоненте Conn необходимо указать правильный путь к файлу БД.
Прикрепленные файлы:
10d21247a9a34d82360f01de00d7243d.zip
давно
Академик
320937
2216
19.04.2012, 15:11
общий
Адресаты:
Добрый день! Временная проблема с отправкой файлов.
давно
Академик
320937
2216
19.04.2012, 15:15
общий
Уважаемые эксперты!
Ошибка
давно
Академик
320937
2216
19.04.2012, 15:29
общий
19.04.2012, 15:31
Файл с изображением ошибки
Error.zip (302.8 кб)
давно
Академик
320937
2216
19.04.2012, 15:38
общий
Добрый день, Вадим Викторович! Спасибо за участие. Однако это не решает моих проблем.
1. В вопросе я специально указал
На некоторых компьютерах запустить (и откомпилировать) не удалось.

Имеется в виду, что на некоторых получилось. Почему?
2. Требуется не удалять некоторые компоненты, а объяснить, как сделать так, чтобы их использовать.
Спасибо
Неизвестный
19.04.2012, 15:53
общий
Цитата: lamed
Требуется не удалять некоторые компоненты, а объяснить, как сделать так, чтобы их использовать

Удаляются не компоненты, а свойство компонента, которое в более новой реализации LCL по какой-то причине разработчиками было удалено и как следствие больше недоступно (о чем Вам и пытается сказать компилятор).
Цитата: lamed
на некоторых получилось. Почему?

Потому что там установлена более ранняя версия Lazarus (и соответственно LCL), в которой данное свойство еще присутствует.
Для того, чтобы проверить это, просто сравните версию сборки Lazarus на разных компьютерах (окно "Справка/О проекте Lazarus").
давно
Академик
320937
2216
19.04.2012, 16:06
общий
Версия 0.9.30.2 на всех машинах. Возможно, sir Henry найдет время посмотреть вопрос
Неизвестный
19.04.2012, 16:31
общий
Адресаты:
Цитата: lamed
Версия 0.9.30.2 на всех машинах

Проверьте, пожалуйста, еще ревизию СВН (в том же окне). Если не совпадает на всех машинах, то причина именно та, что я указал.
давно
Мастер-Эксперт
425
4118
20.04.2012, 05:30
общий
20.04.2012, 05:32
Адресаты:
Скажу Вам по секрету - свежие сборки Lazarus'а (снапшоты) в 99% случаев работают стабильнее, чем, так называемые, "стабильные версии", одну из которых Вы, видимо, и установили. Затрудняюсь сказать, почему так происходит, но у меня ещё ни разу "стабильная версия" нормально не работала, я сижу только на снапшотах. Советую и Вам тоже удалить 0.9.30.2, а скачать свеженькое:
ftp://freepascal.dfmk.hu/pub/lazarus/snapshots/.

На всякий случай сообщаю - текущая стабильная версия FreePascal - 2.6. Она точно стабильная, без обману. Lazarus сейчас допиливается именно под эту версию.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Мастер-Эксперт
425
4118
20.04.2012, 05:48
общий
Ваш совет по удалению какого либо свойства из файла формы в корне неверен. Это приёмлимо, когда проект из новой версии Lazarus нужно, по каким-либо причинам, собрать в старой версии, когда в старой нет какого-либо свойства из новой. Здесь же налицо явная ошибка разработчиков. Это свойство (FieldDefs) должно быть обязательно. Оно может использоваться программистом, может нет, это уже вопрос второй, но то, что оно точно должно быть - это факт.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Мастер-Эксперт
425
4118
20.04.2012, 06:12
общий
Для справки.

Что такое FieldDefs?

Когда во время проектирования открыт набор данных (в данном случае этот набор получен после выполнения запроса в SQLQuery), автоматически создаются поля этого набора, данные о которых заносятся в свойство FieldDefs. Именно из-за того, что набор данных открыт в процессе разработки, свойство FieldDefs попало в свойство формы (файл с расширением .lfm). В противном случае, если бы набор данных открывался только после запуска программы на исполнение, этот набор полей создавался бы уже во время выполнения программы не по тем данным, которые содержаться в файле формы, а по данным, полученым после выполнения запроса.

Зачем нужен FiedDefs?

Если выполняется запрос типа "SELECT * FROM таблица", то разработчику от этого свойства ни холодно, ни жарко. Другое дело, когда разработчик сам проектирует, какие поля и в каком виде должен содержать набор данных. В этом случае, отсутствие FieldDefs в файле формы будет полной катастрофой, т.к. после запуска программы будет не то, что вы ожидали увидеть, а то, что создаётся автоматически из данных, полученных после выполнения запроса. К примеру, если выполняется многотабличный запрос, где присутствуют несколько одинаковых, по названию, полей, то на выходе получится вместо:
"Имя человека;Название должности" (для примера ) вот такая билиберда:
"name_a;name_b".

Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Академик
320937
2216
20.04.2012, 10:06
общий
Адресаты:
Добрый день, sir Henry! Прислушаюсь к Вашему совету, переустановим. Там есть под 2.6.0 и 2.6.1. Что выбрать?
давно
Мастер-Эксперт
425
4118
20.04.2012, 10:09
общий
Лучше пока брать 2.6.0. Во FreePascal придерживаются стандартного принципа: чётные релизы - стабильные, нечётные - тестовые. Чего не скажешь об Lazarus, в нём всё наоборот.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Академик
320937
2216
21.04.2012, 17:06
общий
Адресаты:
Спасибо sir Henry! Ваши рекомендации помогли решить вопрос. Не могли бы Вы оформить ответ?
давно
Мастер-Эксперт
425
4118
22.04.2012, 08:33
общий
это ответ
Здравствуйте, Гусятинер Леонид aka lamed!
Скажу Вам по секрету - свежие сборки Lazarus'а (снапшоты) в 99% случаев работают стабильнее, чем, так называемые, "стабильные версии", одну из которых Вы, видимо, и установили. Затрудняюсь сказать, почему так происходит, но у меня ещё ни разу "стабильная версия" нормально не работала, я сижу только на снапшотах. Советую и Вам тоже удалить 0.9.30.2, а скачать свеженькое:
ftp://freepascal.dfmk.hu/pub/lazarus/snapshots/.

По поводу ответа предыдущего эксперта.
Удалять те или иные свойства из файла описания формы можно только в случае, если Вы собираетесь компилировать проект, созданый в новой версии Lazarus, в старой версии и при этом обнаруживаете, что в новой версии появились какие-то свойства, которых не было в старой. Во всех остальных случаях, если установленная у Вас сборка Lazarus ведёт себя как-то неадекватно, лучше всего скачать свежую сборку Lazarus, в которой, вероятно, эта неадекватность уже устранена. Свежие сборки выклвдывают каждые сутки.
5
Большое спасибо, проблема решена!
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа