Страница 1 из 1
Виснет RxVersionInfo
Добавлено: 27.10.2017 14:56:41
Little_Roo
Начиная с какого-то транка лазаря при запуске программы вылетает ошибка Stream read error
Ссылается на процедуру
Код: Выделить всё
procedure TRxVersionInfo.DoVersionInfo(V: TVersionResource);
var
i,j:integer;
begin
for i:=0 to V.StringFileInfo.Count-1 do
begin
for j:=0 to V.StringFileInfo[i].Count-1 do
FValues.Values[V.StringFileInfo[i].Keys[j]]:=SysToUTF8(V.StringFileInfo[i].ValuesByIndex[j]);
end;
end;
Если внутренность процедуры закомментарить, то программа нормально стартует, но версию свою есссссссно не кажет.
Такая же бяка и с примером из папки demos.

Re: Виснет RxVersionInfo
Добавлено: 27.10.2017 15:12:51
alexs
Lazarus 1.9.0 r56213M FPC 3.1.1 i386-win32-win32/win64
Нормально
Пример сам себя верно определяет.
Re: Виснет RxVersionInfo
Добавлено: 27.10.2017 16:16:51
Little_Roo
Методом быстрого художественного тыка -
если в параметрах проекта - Сведения о версии - Comments есть русские символы, то номер версии не выводится -
B CompanyName кириллица - stream read error
Убрал из проекта все, кроме FileVersion - взлетело
Lazarus 1.9.0 r56180 FPC 3.1.1 i386-win32-win32/win64
Re: Виснет RxVersionInfo
Добавлено: 27.10.2017 16:37:14
alexs
Всё работает
Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
if RxVersionInfo1.Valid then
begin
Memo1.Lines.Add('FileName = ' + RxVersionInfo1.FileName);
Memo1.Lines.Add('FileLongVersion = '+RxVersionInfo1.FileLongVersion);
Memo1.Lines.Add('ProductLongVersion = '+RxVersionInfo1.ProductLongVersion);
Memo1.Lines.Add('VersionLanguage = '+RxVersionInfo1.VersionLanguage);
Memo1.Lines.Add('VersionCharSet = '+RxVersionInfo1.VersionCharSet);
Memo1.Lines.Add('VersionNum = '+RxVersionInfo1.VersionNum.ToString);
Memo1.Lines.Add('Comments = '+RxVersionInfo1.Comments);
Memo1.Lines.Add('CompanyName = '+RxVersionInfo1.CompanyName);
Memo1.Lines.Add('FileDescription = '+RxVersionInfo1.FileDescription);
Memo1.Lines.Add('FileVersion = '+RxVersionInfo1.FileVersion);
Memo1.Lines.Add('InternalName = '+RxVersionInfo1.InternalName);
Memo1.Lines.Add('LegalCopyright = '+RxVersionInfo1.LegalCopyright);
Memo1.Lines.Add('LegalTrademarks = '+RxVersionInfo1.LegalTrademarks);
Memo1.Lines.Add('OriginalFilename = '+RxVersionInfo1.OriginalFilename);
Memo1.Lines.Add('ProductVersion = '+RxVersionInfo1.ProductVersion);
Memo1.Lines.Add('ProductName = '+RxVersionInfo1.ProductName);
Memo1.Lines.Add('SpecialBuild = '+RxVersionInfo1.SpecialBuild);
Memo1.Lines.Add('PrivateBuild = '+RxVersionInfo1.PrivateBuild);
end
else
Memo1.Lines.Add('Ошибка чтения');
end;
Re: Виснет RxVersionInfo
Добавлено: 27.10.2017 16:57:09
Little_Roo
Мистика

Re: Виснет RxVersionInfo
Добавлено: 30.10.2017 08:31:18
alexs
Рекомендую проверить целостность всех данных. Ресурсы не битые?
Ну и я проверял на последних сборках FPC и Lazarus
Re: Виснет RxVersionInfo
Добавлено: 01.11.2017 13:30:18
Little_Roo
Даже на пустом проекте (с одной строкой)
Код: Выделить всё
Label1.Caption:=RxVersioninfo1.CompanyName;
в конце выводится квадрат
На незаполненном поле - только квадрат....Это касается и, к примеру, FileVersion...
Все транковое - Rx svn 6050
Lazarus 1.9.0 r56244 FPC 3.1.1 i386-win32-win32/win64
...
Блин, это почему-то только на ХР... на Вынь7 все корректно