Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Проверка наличия .NET Framework и определение его версии

Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Проверка наличия .NET Framework и определение его версии

Функция возвращает номер последней установленной версии .NET Framework
на компьютере, или пустую строку, если платформа .NET не установлена,
либо установлена криво.

Зависимости: Registry, SysUtils
Автор:       Dimka Maslov, mainbox@endimus.com, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        19 января 2004 г.
***************************************************** }

function DotNetVersion: string;
var
  R: TRegistry;
  L: TStringList;
  S: string;
  i, MaxIndex, N, Code: Integer;
  V, MaxVersion: Double;
const
  RegKey = 'Software\Microsoft\.NETFramework\Policy';
begin
  Result := '';
  R := TRegistry.Create;
  try
    R.RootKey := HKEY_LOCAL_MACHINE;
    if R.KeyExists(RegKey) then
    begin
      R.OpenKeyReadOnly(RegKey);
      L := TStringList.Create;
      try
        R.GetKeyNames(L);
        MaxVersion := -1.0;
        MaxIndex := -1;
        for i := 0 to L.Count - 1 do
        begin
          S := L[i];
          if UpCase(S[1]) = 'V' then
          begin
            Delete(S, 1, 1);
            Val(S, V, Code);
            if (Code = 0) and (V > MaxVersion) then
            begin
              MaxVersion := V;
              MaxIndex := i;
            end;
          end;
        end;
        if MaxIndex <> -1 then
        begin
          S := L[MaxIndex];
          R.CloseKey;
          R.OpenKeyReadOnly(RegKey + '\' + S);
          R.GetValueNames(L);
          MaxIndex := -1;
          for i := 0 to L.Count - 1 do
          begin
            Val(L[i], N, Code);
            if (Code = 0) and (N > MaxIndex) then
              MaxIndex := N;
          end;
          Result := S;
          Delete(Result, 1, 1);
          if MaxIndex <> -1 then
            Result := Result + '.' + IntToStr(MaxIndex);
        end;
      finally
        L.Free;
      end;
    end;
  finally
    R.Free;
  end;
end;
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay