<span class="hljs-keyword" style="color:#000080;font-weight:bold;">unit</span> Unit1;
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">interface</span>
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">uses</span>
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.Win.Registry;
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">type</span>
<span class="hljs-title" style="color:#0000ff;font-weight:bold;">TForm1</span> = <span class="hljs-keyword" style="color:#000080;font-weight:bold;">class</span>(TForm)
Memo1: TMemo;
<span class="hljs-function"><span class="hljs-keyword" style="color:#000080;font-weight:bold;">procedure</span> <span class="hljs-title" style="color:#0000ff;font-weight:bold;">FormCreate</span><span class="hljs-params">(Sender: TObject)</span>;</span>
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">private</span>
<span class="hljs-comment" style="color:#008000;font-weight:bold;">{ Private 宣言 }</span>
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">public</span>
<span class="hljs-comment" style="color:#008000;font-weight:bold;">{ Public 宣言 }</span>
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">end</span>;
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">var</span>
Form1: TForm1;
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">implementation</span>
<span class="hljs-comment" style="color:#008000;font-weight:bold;">{$R *.dfm}</span>
<span class="hljs-function"><span class="hljs-keyword" style="color:#000080;font-weight:bold;">procedure</span> <span class="hljs-title" style="color:#0000ff;font-weight:bold;">TForm1</span>.<span class="hljs-title" style="color:#0000ff;font-weight:bold;">FormCreate</span><span class="hljs-params">(Sender: TObject)</span>;</span>
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">var</span>
AppKey: <span class="hljs-keyword" style="color:#000080;font-weight:bold;">String</span>;
Reg: TRegistry;
KeyList: TStringList;
SubKey: <span class="hljs-keyword" style="color:#000080;font-weight:bold;">String</span>;
RegSubKey: TRegistry;
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">begin</span>
Reg := TRegistry.Create;
KeyList := TStringList.Create;
<span class="hljs-comment" style="color:#008000;font-weight:bold;">// 64-bit, 32-bit で参照するレジストリを変える</span>
<span class="hljs-comment" style="color:#008000;font-weight:bold;">{$IFDEF Win32}</span>
AppKey := <span class="hljs-string" style="color:#0000ff;font-weight:bold;">'SoftwareMicrosoftWindowsCurrentVersionUninstall'</span>;
<span class="hljs-comment" style="color:#008000;font-weight:bold;">{$ELSE}</span>
AppKey := <span class="hljs-string" style="color:#0000ff;font-weight:bold;">'SoftwareWOW6432NodeMicrosoftWindowsCurrentVersionUninstall'</span>;
<span class="hljs-comment" style="color:#008000;font-weight:bold;">{$ENDIF}</span>
Reg.RootKey := HKEY_LOCAL_MACHINE;
Memo1.Lines.Clear;
Memo1.Lines.Add(AppKey);
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">if</span> Reg.OpenKeyReadOnly(AppKey) <span class="hljs-keyword" style="color:#000080;font-weight:bold;">then</span>
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">begin</span>
<span class="hljs-comment" style="color:#008000;font-weight:bold;">// サブキーのうち、 DisplayName に 'FireDAC' を含むものを</span>
<span class="hljs-comment" style="color:#008000;font-weight:bold;">// 探してバージョンと名前を表示する</span>
Reg.GetKeyNames(KeyList);
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">for</span> SubKey <span class="hljs-keyword" style="color:#000080;font-weight:bold;">in</span> KeyList <span class="hljs-keyword" style="color:#000080;font-weight:bold;">do</span>
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">begin</span>
RegSubKey := TRegistry.Create;
RegSubKey.RootKey := HKEY_LOCAL_MACHINE;
RegSubKey.OpenKeyReadOnly( AppKey + <span class="hljs-string" style="color:#0000ff;font-weight:bold;">''</span> + SubKey );
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">if</span> ( Pos(<span class="hljs-string" style="color:#0000ff;font-weight:bold;">'FireDAC'</span>, RegSubKey.ReadString(<span class="hljs-string" style="color:#0000ff;font-weight:bold;">'DisplayName'</span>) ) > <span class="hljs-number">0</span> ) <span class="hljs-keyword" style="color:#000080;font-weight:bold;">then</span>
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">begin</span>
Memo1.Lines.Add(
RegSubKey.ReadString(<span class="hljs-string" style="color:#0000ff;font-weight:bold;">'DisplayVersion'</span>) + <span class="hljs-string" style="color:#0000ff;font-weight:bold;">#9</span> +
RegSubKey.ReadString(<span class="hljs-string" style="color:#0000ff;font-weight:bold;">'DisplayName'</span>));
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">end</span>;
RegSubKey.Destroy;
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">end</span>;
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">end</span>;
Reg.Destroy;
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">end</span>;
<span class="hljs-keyword" style="color:#000080;font-weight:bold;">end</span>.