Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Delphi и Lazarus


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10928
∙ повысить рейтинг »
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 7221
∙ повысить рейтинг »
Гусятинер Леонид aka lamed
Статус: Академик
Рейтинг: 5785
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Delphi и Lazarus

Номер выпуска:1636
Дата выхода:28.07.2012, 15:30
Администратор рассылки:Филатов Евгений Геннадьевич (Профессионал)
Подписчиков / экспертов:125 / 81
Вопросов / ответов:1 / 1

Консультация # 186468: Здравствуйте! У меня возникли сложности с таким вопросом: Получить версию файла. Я использую такой метод (найден на просторах интернета).

Код :
procedure TForm1.BitBtn1Click(Sender: TObject);///Получить полную информацию о файле
const
 
...

Консультация # 186468:

Здравствуйте! У меня возникли сложности с таким вопросом: Получить версию файла.
Я использую такой метод (найден на просторах интернета).

Код :
procedure TForm1.BitBtn1Click(Sender: TObject);///Получить полную информацию о файле
const
  Tabulator: array[0..0] of Integer = (70);
  BoolValues: array[Boolean] of string = ('No', 'Yes');
var
  FvI: TFileVersionInfo;
begin
  FvI := FileVersionInfo('D:\Прога\.Test.exe');
  ListBox1.TabWidth := 1; 
  SendMessage(ListBox1.Handle, LB_SETTABSTOPS, 1, Longint(@Tabulator));
  with FvI, ListBox1.Items do
  begin
    Add('FileType:'#9 + FileType);
    Add('CompanyName:'#9 + CompanyName);
    Add('CompanyName:'#9 + FileDescription);
    Add('FileVersion:'#9 + FileVersion);
    Add('InternalName:'#9 + InternalName);
    Add('LegalCopyRight:'#9 + LegalCopyRight);
    Add('LegalTradeMarks:'#9 + LegalTradeMarks);
    Add('OriginalFileName:'#9 + OriginalFileName);
    Add('ProductName:'#9 + ProductName);
    Add('ProductVersion:'#9 + ProductVersion);
    Add('SpecialBuildStr:'#9 + SpecialBuildStr);
    Add('PrivateBuildStr:'#9 + PrivateBuildStr);
    Add('FileFunction:'#9 + FileFunction);
    Add('DebugBuild:'#9 + BoolValues[DebugBuild]);
    Add('PreRelease:'#9 + BoolValues[PreRelease]);
    Add('PrivateBuild:'#9 + BoolValues[PrivateBuild]);
    Add('SpecialBuild:'#9 + BoolValues[SpecialBuild]);
  end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);///Информация только о версии
const
  Tabulator: array[0..0] of Integer = (70);
  BoolValues: array[Boolean] of string = ('No', 'Yes');
var
  FvI: TFileVersionInfo;
begin
  FvI := FileVersionInfo('D:\Прога\.Test.exe');
  ListBox1.TabWidth := 1; 
  SendMessage(ListBox1.Handle, LB_SETTABSTOPS, 1, Longint(@Tabulator)); 
  with FvI, ListBox1.Items do 
  begin
    Add('FileVersion:'#9 + FileVersion); 
  end;
end;
end.

Вопрос в том, как мне при нажатии BitBtn2 получить данные не в ListBox1 а скажем в Edit1. При этом меня интересует последние цифры сборки. То есть к примеру 1.0.0.14, мне в Edit1 нужно получить данные до первой точки справа, в Edit1 вывести 14.
Заранее благодарю за помощь.

Дата отправки: 25.07.2012, 15:02
Вопрос задал: Владимир (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует LanK (Профессионал):

Здравствуйте, Владимир!

Код :
procedure TForm1.BitBtn2Click(Sender: TObject);///Информация только о версии
const
  Tabulator: array[0..0] of Integer = (70);
  BoolValues: array[Boolean] of string = ('No', 'Yes');
var
  FvI: TFileVersionInfo;
  myPos : Byte;
begin
  FvI := FileVersionInfo('D:\Прога\Test.exe'); //символ точки "." наверное надо удалить перед Test.exe

  //узнаем где последняя точка:  
  myPos:=PosEx('.',ReverseString(FvI.FileVersion))-1;
  //мы точно знаем что версия находится после ПОСЛЕДНЕЙ точки - при этом цифр может быть и не две...
  //такое бывает...
  //для этого командой ReverseString переворачиваем строку - чтобы не делать цикл поиска
  //и командой PosEx ищем ПЕРВОЕ место где есть точка...
  //минус 1 символ - саму точку то нам не надо выводить...  

  //копируем текст справа от вычисленной позиции точки:
  Edt1.Text:=RightStr(FvI.FileVersion, myPos);
  //всё.
  end; 

Консультировал: LanK (Профессионал)
Дата отправки: 25.07.2012, 16:22
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное