Всем привет! Обновился на Lazarus 1.6 и перестала работать в процедуре эта строка: AboutVersionLabel.Caption := 'Версия: ' + FileVersionInfo.getVersionSetting('FileVersion'); Ошибка выдаваемая при компиляции: Error: identifier idents no member "getVersionSetting"
Скажите правильно ли я понимаю что это из-за изменений в самом модуле fileinfo? И если да, то научите пожалуйста как устранять подобные проблемы. Прошу доходчивых объяснений чтобы пришло понимание.
Последний раз редактировалось ANTIKLAN 10.06.2016 02:15:55, всего редактировалось 1 раз.
в случае глюков всегда стоит посмотреть реализацию (когда понятно что требует процедура/функция) и примеры использования. Ну и поиск по форуму не помешает.
на форуме уже есть, но выкладываю чтобы долго не искать рабочий пример:
function get_version_info: string; uses Forms, ExtCtrls, Classes, FileInfo; ..... implementation
{$R *.lfm} uses main, SysUtils; function get_version_info: string; // initialize a bunch of stuff for this app when the form is first opened // [0] = Major version, [1] = Minor ver, [3] = Revision, [4] = Build Number // The above values can be found in the menu: Project > Project Options > Version Info // Add the following to your uses statement: vinfo, versiontypes var Info: TVersionInfo; begin Info := TVersionInfo.Create; Info.Load(HINSTANCE); // grab just the Build Number result:= IntToStr(Info.FixedInfo.FileVersion[0])+'.'+IntToStr(Info.FixedInfo.FileVersion[1])+'.'+IntToStr(Info.FixedInfo.FileVersion[2])+'.'+IntToStr(Info.FixedInfo.FileVersion[3]); Info.Free; end;
Я посмотрел исходник и посмотрел список изменений для Lazarus 1.6 там говорится что теперь надо делать через ReadFileInfo. Вот выдержка из текста:
TVersionInfo (fileinfo unit) re-implemented in a platform independent way Old behaviour: GetVersionSetting method would read file information. New behaviour: The ReadFileInfo call will read the information. The global GetProgramVersion call will extract the program major/minor/revision/build version in 1 single call. Reason: The unit now uses FPC resources on all platforms, and can now be used to read external resources. Remedy: Use the ReadFileInfo call to get the version information. Add relevant units for desired resource support to your uses clause; e.g. if you need to read Windows .exe file info, add winpeimagereader
ANTIKLAN, я привел в прошлом посте полностью работоспособный пример, выдранный из работающей проги. Единственное замечание по нему это модуль main -- его включение придется убрать. Не доглядел. Если не собираешься играться с положением элементов, то просто вставляй к себе. Если собираешься, то обрати внимание на строку
Лекс Айрин писал(а):ANTIKLAN, я привел в прошлом посте полностью работоспособный пример, выдранный из работающей проги. Единственное замечание по нему это модуль main -- его включение придется убрать. Не доглядел. Если не собираешься играться с положением элементов, то просто вставляй к себе. Если собираешься, то обрати внимание на строку
Да мне вообще то хотелось разобраться со своим примером. Мне знания нужны, а не готовые решения, которые я буду тупо без понимания вставлять. Хотя и за это тоже спасибо. Может все таки разберем изменение, которое было сделано в Lazaarus 1.6?
ANTIKLAN, у тебя есть как работало и как стало.... сравнивай.
У меня на всех компах стоят транковые версии, правда немножко устаревшие... так что как оно было в версии до 1.7 (1.6) я не смогу посмотреть при всем желании. А пример... просто обсуждали и я встроил в свою прогу, так как вручную писать версию задалбывает.