<?xml version="1.0" encoding="UTF-8" ?>
<feed xml:lang="ja" xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0">
  <title type="text">Delphiを忘れない</title>
  <subtitle type="html"></subtitle>
  <link rel="self" type="application/atom+xml" href="http://delphi.blog.shinobi.jp/atom"/>
  <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/"/>
  <updated>2013-10-30T22:22:31+09:00</updated>
  <author><name>DelMAN</name></author>
  <generator uri="//www.ninja.co.jp/blog/" version="0.9">忍者ブログ</generator>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
  <entry>
    <id>delphi.blog.shinobi.jp://entry/15</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/tedgebrowser%E3%81%AEuseragent%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B" />
    <published>2022-02-26T23:12:26+09:00</published> 
    <updated>2022-02-26T23:12:26+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>TEdgeBrowserのUserAgentを変更する</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<div>まずICoreWebView2Settings2を宣言します。<br />
あとはTEdgeBrowserのSettingsInterfaceを使いUserAgentを変更します。<br />
下記は実装例のソースコードです。<br />
&nbsp;<br />
unit App_WebView2;</div>
<div></div>
<div>interface</div>
<div></div>
<div>uses</div>
<div>&nbsp; ActiveX, WebView2;</div>
<div></div>
<div>type</div>
<div>&nbsp; ICoreWebView2Settings2 = interface(ICoreWebView2Settings)</div>
<div>&nbsp; &nbsp; ['{EE9A0F68-F46C-4E32-AC23-EF8CAC224D2A}']</div>
<div>&nbsp; &nbsp; function Get_UserAgent(out UserAgent: PWideChar): HResult; stdcall;</div>
<div>&nbsp; &nbsp; function Set_UserAgent(UserAgent: PWideChar): HResult; stdcall;</div>
<div>&nbsp; end;</div>
<div></div>
<div>&nbsp; procedure WebView2_SetUserAgent( SettingsInterface: ICoreWebView2Settings; UserAgent: String );</div>
<div>&nbsp; function&nbsp; WebView2_GetUserAgent( SettingsInterface: ICoreWebView2Settings): String;</div>
<div></div>
<div></div>
<div>implementation</div>
<div></div>
<div>procedure WebView2_SetUserAgent( SettingsInterface: ICoreWebView2Settings; UserAgent: String );</div>
<div>begin</div>
<div>&nbsp; ICoreWebView2Settings2( SettingsInterface ).Set_UserAgent( PWideChar( UserAgent ) );</div>
<div>end;</div>
<div></div>
<div>function&nbsp; WebView2_GetUserAgent( SettingsInterface: ICoreWebView2Settings): String;</div>
<div>var</div>
<div>&nbsp; wcUserAgent: PWideChar;</div>
<div>begin</div>
<div>&nbsp; try</div>
<div>&nbsp; &nbsp; ICoreWebView2Settings2( SettingsInterface ).Get_UserAgent( wcUserAgent );</div>
<div>&nbsp; &nbsp; result := wcUserAgent;</div>
<div>&nbsp; finally</div>
<div>&nbsp; &nbsp; CoTaskMemFree(wcUserAgent);</div>
<div>&nbsp; end;</div>
<div>end;<br />
<br />
使い方の例はこんな感じです。<br />
<br />

<div>unit Unit1;</div>
<div></div>
<div>interface</div>
<div></div>
<div>uses</div>
<div>&nbsp; Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,</div>
<div>&nbsp; Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, WebView2, Winapi.ActiveX, Vcl.Edge;</div>
<div></div>
<div>type</div>
<div>&nbsp; TForm1 = class(TForm)</div>
<div>&nbsp; &nbsp; Button1: TButton;</div>
<div>&nbsp; &nbsp; EdgeBrowser1: TEdgeBrowser;</div>
<div>&nbsp; &nbsp; procedure Button1Click(Sender: TObject);</div>
<div>&nbsp; private</div>
<div>&nbsp; &nbsp; { Private 宣言 }</div>
<div>&nbsp; public</div>
<div>&nbsp; &nbsp; { Public 宣言 }</div>
<div>&nbsp; end;</div>
<div></div>
<div>var</div>
<div>&nbsp; Form1: TForm1;</div>
<div></div>
<div>implementation</div>
<div></div>
<div>{$R *.dfm}</div>
<div></div>
<div>uses App_WebView2;</div>
<div></div>
<div>procedure TForm1.Button1Click(Sender: TObject);</div>
<div>begin</div>
<div>&nbsp; WebView2_SetUserAgent( EdgeBrowser1.SettingsInterface , 'Delphi');</div>
<div>end;</div>
</div>]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
  <entry>
    <id>delphi.blog.shinobi.jp://entry/14</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E8%87%AA%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AEcpu%E4%BD%BF%E7%94%A8%E7%8E%87%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B" />
    <published>2018-12-10T22:12:26+09:00</published> 
    <updated>2018-12-10T22:12:26+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>自アプリのCPU使用率を調べる</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<p>unit ProcessCpuUsage;</p>
<p>interface</p>
<p>uses<br />
&nbsp; Windows, Generics.Collections;</p>
<p>type<br />
&nbsp; TProcessID = DWORD;</p>
<p>&nbsp; TSystemTimesRec = record<br />
&nbsp;&nbsp;&nbsp; KernelTime: TFileTIme;<br />
&nbsp;&nbsp;&nbsp; UserTime: TFileTIme;<br />
&nbsp; end;</p>
<p>&nbsp; TProcessTimesRec = record<br />
&nbsp;&nbsp;&nbsp; KernelTime: TFileTIme;<br />
&nbsp;&nbsp;&nbsp; UserTime: TFileTIme;<br />
&nbsp; end;</p>
<p>&nbsp; TProcessCpuUsage = class<br />
&nbsp;&nbsp;&nbsp; LastSystemTimes: TSystemTimesRec;<br />
&nbsp;&nbsp;&nbsp; LastProcessTimes: TProcessTimesRec;<br />
&nbsp;&nbsp;&nbsp; ProcessCPUusagePercentage: Double;<br />
&nbsp; end;</p>
<p>&nbsp; TProcessCpuUsageList = TObjectDictionary&lt;TProcessID, TProcessCpuUsage&gt;;</p>
<p>var<br />
&nbsp; LatestProcessCpuUsageCache : TProcessCpuUsageList;<br />
&nbsp; LastQueryTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : TDateTime;</p>
<p>&nbsp; function GetProcessCpuUsageHandle( Handle : THandle ) : Double;<br />
&nbsp; function GetProcessCpuUsageProcessID( ProcessID: TProcessID ): Double;</p>
<p>implementation</p>
<p>function GetProcessCpuUsageHandle( Handle : THandle ) : Double;<br />
var<br />
&nbsp; li_ProcID:&nbsp;&nbsp;&nbsp;&nbsp; DWORD;<br />
begin<br />
&nbsp; GetWindowThreadProcessId(Handle, @li_ProcID);</p>
<p>&nbsp; result := GetProcessCpuUsageProcessID(li_ProcID);<br />
end;</p>
<p>function GetProcessCpuUsageProcessID(ProcessID: TProcessID): Double;<br />
&nbsp; function SubtractFileTime(FileTime1: TFileTIme; FileTime2: TFileTime): TFileTime;<br />
&nbsp; begin<br />
&nbsp;&nbsp;&nbsp; Result := TFileTime(Int64(FileTime1) - Int64(FileTime2));<br />
&nbsp; end;<br />
var<br />
&nbsp; ProcessCpuUsage&nbsp; : TProcessCpuUsage;<br />
&nbsp; ProcessHandle&nbsp;&nbsp;&nbsp; : THandle;<br />
&nbsp; SystemTimes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : TSystemTimesRec;<br />
&nbsp; SystemDiffTimes&nbsp; : TSystemTimesRec;<br />
&nbsp; ProcessDiffTimes : TProcessTimesRec;<br />
&nbsp; ProcessTimes&nbsp;&nbsp;&nbsp;&nbsp; : TProcessTimesRec;</p>
<p>&nbsp; SystemTimesIdleTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : TFileTime;<br />
&nbsp; ProcessTimesCreationTime : TFileTime;<br />
&nbsp; ProcessTimesExitTime&nbsp;&nbsp;&nbsp;&nbsp; : TFileTime;<br />
begin<br />
&nbsp; Result := 0.0;</p>
<p>&nbsp; LatestProcessCpuUsageCache.TryGetValue(ProcessID, ProcessCpuUsage);<br />
&nbsp; if ProcessCpuUsage = nil then begin<br />
&nbsp;&nbsp;&nbsp; ProcessCpuUsage := TProcessCpuUsage.Create;<br />
&nbsp;&nbsp;&nbsp; LatestProcessCpuUsageCache.Add(ProcessID, ProcessCpuUsage);<br />
&nbsp; end;</p>
<p>&nbsp; ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessID);<br />
&nbsp; if ProcessHandle &lt;&gt; 0 then begin<br />
&nbsp;&nbsp;&nbsp; try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if GetSystemTimes(SystemTimesIdleTime, SystemTimes.KernelTime, SystemTimes.UserTime) then begin</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SystemDiffTimes.KernelTime := SubtractFileTime(SystemTimes.KernelTime, ProcessCpuUsage.LastSystemTimes.KernelTime);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SystemDiffTimes.UserTime&nbsp;&nbsp; := SubtractFileTime(SystemTimes.UserTime, ProcessCpuUsage.LastSystemTimes.UserTime);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProcessCpuUsage.LastSystemTimes := SystemTimes;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if GetProcessTimes(ProcessHandle, ProcessTimesCreationTime, ProcessTimesExitTime, ProcessTimes.KernelTime, ProcessTimes.UserTime) then begin</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProcessDiffTimes.KernelTime := SubtractFileTime(ProcessTimes.KernelTime, ProcessCpuUsage.LastProcessTimes.KernelTime);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProcessDiffTimes.UserTime&nbsp;&nbsp; := SubtractFileTime(ProcessTimes.UserTime, ProcessCpuUsage.LastProcessTimes.UserTime);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProcessCpuUsage.LastProcessTimes := ProcessTimes;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Int64(SystemDiffTimes.KernelTime) + Int64(SystemDiffTimes.UserTime)) &gt; 0 then begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Result := (Int64(ProcessDiffTimes.KernelTime) + Int64(ProcessDiffTimes.UserTime)) / (Int64(SystemDiffTimes.KernelTime) + Int64(SystemDiffTimes.UserTime)) * 100;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;<br />
&nbsp;&nbsp;&nbsp; finally<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CloseHandle(ProcessHandle);<br />
&nbsp;&nbsp;&nbsp; end;<br />
&nbsp; end;<br />
end;</p>
<p><br />
initialization<br />
&nbsp; LatestProcessCpuUsageCache := TProcessCpuUsageList.Create( [ doOwnsValues ] );<br />
finalization<br />
&nbsp; LatestProcessCpuUsageCache.Free;</p>
<p>end.<br />
<br />
<br />
使い方の例<br />
<br />
uses ProcessCpuUsage;</p>
<p>procedure TForm1.Timer1Timer(Sender: TObject);<br />
begin<br />
&nbsp; Label1.Caption := Format('%f', [GetProcessCpuUsageHandle(Handle)] );<br />
end;</p>]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
  <entry>
    <id>delphi.blog.shinobi.jp://entry/13</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E6%96%87%E5%AD%97%E5%88%97%E3%81%AE%E6%9A%97%E5%8F%B7%E5%8C%96" />
    <published>2014-04-03T22:39:05+09:00</published> 
    <updated>2014-04-03T22:39:05+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>文字列の暗号化</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[暗号化と復号化のUnit。<br />
<br />
<span class="pas-kwd">unit</span><span class="pas-space"> </span><span class="pas-ident">UEncrypt</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">interface</span><br />
<br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">Decrypt</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">Encrypt</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">implementation</span><br />
<br />
<span class="pas-kwd">const</span><br />
<span class="pas-space"> </span><span class="pas-ident">　C1</span><span class="pas-space"> </span><span class="pas-sym">=</span><span class="pas-space"> </span><span class="pas-num">52845</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　C2</span><span class="pas-space"> </span><span class="pas-sym">=</span><span class="pas-space"> </span><span class="pas-num">22719</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">Decode</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">　const</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Map</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-kwd">array</span><span class="pas-sym">[</span><span class="pas-ident">Char</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-kwd">of</span><span class="pas-space"> </span><span class="pas-ident">Byte</span><span class="pas-space"> </span><span class="pas-sym">=</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">62</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">63</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">52</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">53</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　54</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">55</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">56</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">57</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">58</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">59</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">60</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">61</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">1</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">2</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　3</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">4</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">5</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">6</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">7</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">8</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">9</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">10</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">11</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">12</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">13</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">14</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">15</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">16</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">17</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">18</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">19</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　20</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">21</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">22</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">23</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">24</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">25</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">26</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">27</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">28</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">29</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">30</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　31</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">32</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">33</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">34</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">35</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">36</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">37</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">38</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">39</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">40</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">41</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">42</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">43</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">44</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">45</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　46</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">47</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">48</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">49</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">50</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">51</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">,</span><br />
<span class="pas-space"> </span><span class="pas-num">　　0</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">var</span><br />
<span class="pas-space"> </span><span class="pas-ident">　I</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">LongInt</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　case</span><span class="pas-space"> </span><span class="pas-ident">Length</span><span class="pas-sym">(</span><span class="pas-ident">S</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">of</span><br />
<span class="pas-space"> </span><span class="pas-num">　　2</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　　I</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">1</span><span class="pas-sym">]</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">2</span><span class="pas-sym">]</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-kwd">shl</span><span class="pas-space"> </span><span class="pas-num">6</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　　SetLength</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">1</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　　Move</span><span class="pas-sym">(</span><span class="pas-ident">I</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">Result</span><span class="pas-sym">[</span><span class="pas-num">1</span><span class="pas-sym">]</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">Length</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">)</span><span class="pas-sym">)</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　　end</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-num">　　3</span><span class="pas-sym">:</span><span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　　I</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">1</span><span class="pas-sym">]</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">2</span><span class="pas-sym">]</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-kwd">shl</span><span class="pas-space"> </span><span class="pas-num">6</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">3</span><span class="pas-sym">]</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-kwd">shl</span><span class="pas-space"> </span><span class="pas-num">12</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　　SetLength</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">2</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　　Move</span><span class="pas-sym">(</span><span class="pas-ident">I</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">Result</span><span class="pas-sym">[</span><span class="pas-num">1</span><span class="pas-sym">]</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">Length</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">)</span><span class="pas-sym">)</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　　end</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-num">　　4</span><span class="pas-sym">:</span><span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　　I</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">1</span><span class="pas-sym">]</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">2</span><span class="pas-sym">]</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-kwd">shl</span><span class="pas-space"> </span><span class="pas-num">6</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">3</span><span class="pas-sym">]</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-kwd">shl</span><span class="pas-space"> </span><span class="pas-num">12</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-sym">(</span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">4</span><span class="pas-sym">]</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-kwd">shl</span><span class="pas-space"> </span><span class="pas-num">18</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　　SetLength</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">3</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　　Move</span><span class="pas-sym">(</span><span class="pas-ident">I</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">Result</span><span class="pas-sym">[</span><span class="pas-num">1</span><span class="pas-sym">]</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">Length</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">)</span><span class="pas-sym">)</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　　end</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　end</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">end</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">PreProcess</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">var</span><br />
<span class="pas-space"> </span><span class="pas-ident">　SS</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　SS</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-str">''</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　while</span><span class="pas-space"> </span><span class="pas-ident">SS</span><span class="pas-space"> </span><span class="pas-sym">&lt;&gt;</span><span class="pas-space"> </span><span class="pas-str">''</span><span class="pas-space"> </span><span class="pas-kwd">do</span><span class="pas-space">&nbsp; </span><span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Result</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Decode</span><span class="pas-sym">(</span><span class="pas-ident">Copy</span><span class="pas-sym">(</span><span class="pas-ident">SS</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">1</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">4</span><span class="pas-sym">)</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Delete</span><span class="pas-sym">(</span><span class="pas-ident">SS</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">1</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">4</span><span class="pas-sym">)</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　end</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">end</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">InternalDecrypt</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">var</span><br />
<span class="pas-space"> </span><span class="pas-ident">　I</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Seed</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Seed</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　for</span><span class="pas-space"> </span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-num">1</span><span class="pas-space"> </span><span class="pas-kwd">to</span><span class="pas-space"> </span><span class="pas-ident">Length</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">do</span><span class="pas-space">&nbsp; </span><span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Result</span><span class="pas-sym">[</span><span class="pas-ident">I</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Char</span><span class="pas-sym">(</span><span class="pas-ident">Byte</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">[</span><span class="pas-ident">I</span><span class="pas-sym">]</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">xor</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-ident">Seed</span><span class="pas-space"> </span><span class="pas-kwd">shr</span><span class="pas-space"> </span><span class="pas-num">8</span><span class="pas-sym">)</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Seed</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-ident">Byte</span><span class="pas-sym">(</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-ident">I</span><span class="pas-sym">]</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Seed</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-sym">*</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">(</span><span class="pas-ident">C1</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">(</span><span class="pas-ident">C2</span><span class="pas-sym">)</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　end</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">end</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">Decrypt</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">InternalDecrypt</span><span class="pas-sym">(</span><span class="pas-ident">PreProcess</span><span class="pas-sym">(</span><span class="pas-ident">S</span><span class="pas-sym">)</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">)</span><br />
<span class="pas-kwd">end</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">Encode</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">const</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Map</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-kwd">array</span><span class="pas-sym">[</span><span class="pas-num">0</span><span class="pas-sym">..</span><span class="pas-num">63</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-kwd">of</span><span class="pas-space"> </span><span class="pas-ident">Char</span><span class="pas-space"> </span><span class="pas-sym">=</span><span class="pas-space"> </span><span class="pas-str">'ABCDEFGHIJKLMNOPQRSTUVWXYZ'</span><span class="pas-space"> </span><span class="pas-sym">+</span><br />
<span class="pas-space"> </span><span class="pas-str">　　　　　　　　　　　　　'abcdefghijklmnopqrstuvwxyz0123456789+/'</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">var</span><br />
<span class="pas-space"> </span><span class="pas-ident">　I</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">LongInt</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　I</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-num">0</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Move</span><span class="pas-sym">(</span><span class="pas-ident">S</span><span class="pas-sym">[</span><span class="pas-num">1</span><span class="pas-sym">]</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">I</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">Length</span><span class="pas-sym">(</span><span class="pas-ident">S</span><span class="pas-sym">)</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　case</span><span class="pas-space"> </span><span class="pas-ident">Length</span><span class="pas-sym">(</span><span class="pas-ident">S</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">of</span><br />
<span class="pas-space"> </span><span class="pas-num">　1</span><span class="pas-sym">:</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-kwd">mod</span><span class="pas-space"> </span><span class="pas-num">64</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-sym">(</span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-kwd">shr</span><span class="pas-space"> </span><span class="pas-num">6</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">mod</span><span class="pas-space"> </span><span class="pas-num">64</span><span class="pas-sym">]</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-num">　2</span><span class="pas-sym">:</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-kwd">mod</span><span class="pas-space"> </span><span class="pas-num">64</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-sym">(</span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-kwd">shr</span><span class="pas-space"> </span><span class="pas-num">6</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">mod</span><span class="pas-space"> </span><span class="pas-num">64</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">+</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Map</span><span class="pas-sym">[</span><span class="pas-sym">(</span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-kwd">shr</span><span class="pas-space"> </span><span class="pas-num">12</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">mod</span><span class="pas-space"> </span><span class="pas-num">64</span><span class="pas-sym">]</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-num">　3</span><span class="pas-sym">:</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-kwd">mod</span><span class="pas-space"> </span><span class="pas-num">64</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-sym">(</span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-kwd">shr</span><span class="pas-space"> </span><span class="pas-num">6</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">mod</span><span class="pas-space"> </span><span class="pas-num">64</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">+</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Map</span><span class="pas-sym">[</span><span class="pas-sym">(</span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-kwd">shr</span><span class="pas-space"> </span><span class="pas-num">12</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">mod</span><span class="pas-space"> </span><span class="pas-num">64</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Map</span><span class="pas-sym">[</span><span class="pas-sym">(</span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-kwd">shr</span><span class="pas-space"> </span><span class="pas-num">18</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">mod</span><span class="pas-space"> </span><span class="pas-num">64</span><span class="pas-sym">]</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　end</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">end</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">PostProcess</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">var</span><br />
<span class="pas-space"> </span><span class="pas-ident">　SS</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　SS</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-str">''</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　while</span><span class="pas-space"> </span><span class="pas-ident">SS</span><span class="pas-space"> </span><span class="pas-sym">&lt;&gt;</span><span class="pas-space"> </span><span class="pas-str">''</span><span class="pas-space"> </span><span class="pas-kwd">do</span><span class="pas-space">&nbsp; </span><span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Result</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Encode</span><span class="pas-sym">(</span><span class="pas-ident">Copy</span><span class="pas-sym">(</span><span class="pas-ident">SS</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">1</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">3</span><span class="pas-sym">)</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Delete</span><span class="pas-sym">(</span><span class="pas-ident">SS</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">1</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-num">3</span><span class="pas-sym">)</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　end</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">end</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">InternalEncrypt</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">var</span><br />
<span class="pas-space"> </span><span class="pas-ident">　I</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Seed</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Seed</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　for</span><span class="pas-space"> </span><span class="pas-ident">I</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-num">1</span><span class="pas-space"> </span><span class="pas-kwd">to</span><span class="pas-space"> </span><span class="pas-ident">Length</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">do</span><span class="pas-space">&nbsp; </span><span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Result</span><span class="pas-sym">[</span><span class="pas-ident">I</span><span class="pas-sym">]</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Char</span><span class="pas-sym">(</span><span class="pas-ident">Byte</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">[</span><span class="pas-ident">I</span><span class="pas-sym">]</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-kwd">xor</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-ident">Seed</span><span class="pas-space"> </span><span class="pas-kwd">shr</span><span class="pas-space"> </span><span class="pas-num">8</span><span class="pas-sym">)</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　　Seed</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-sym">(</span><span class="pas-ident">Byte</span><span class="pas-sym">(</span><span class="pas-ident">Result</span><span class="pas-sym">[</span><span class="pas-ident">I</span><span class="pas-sym">]</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Seed</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-sym">*</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">(</span><span class="pas-ident">C1</span><span class="pas-sym">)</span><span class="pas-space"> </span><span class="pas-sym">+</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">(</span><span class="pas-ident">C2</span><span class="pas-sym">)</span><br />
<span class="pas-space"> </span><span class="pas-kwd">　end</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">end</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">function</span><span class="pas-space"> </span><span class="pas-ident">Encrypt</span><span class="pas-sym">(</span><span class="pas-kwd">const</span><span class="pas-space"> </span><span class="pas-ident">S</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">Word</span><span class="pas-sym">)</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">AnsiString</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Result</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">PostProcess</span><span class="pas-sym">(</span><span class="pas-ident">InternalEncrypt</span><span class="pas-sym">(</span><span class="pas-ident">S</span><span class="pas-sym">,</span><span class="pas-space"> </span><span class="pas-ident">Key</span><span class="pas-sym">)</span><span class="pas-sym">)</span><br />
<span class="pas-kwd">end</span><span class="pas-sym">;</span><br />
<br />
<span class="pas-kwd">end</span><span class="pas-sym">.<br />
<br />
<br />
<br />
使い方の例<br />
<br />
<span class="pas-kwd">uses</span><br />
<span class="pas-space"> </span><span class="pas-sym">..</span><span class="pas-sym">.</span><span class="pas-space"> </span><br />
<span class="pas-space"> </span><span class="pas-ident">UEncrypt</span><span class="pas-sym">;</span><br />
<span class="pas-sym">..</span><span class="pas-sym">.</span><br />
<span class="pas-kwd">procedure</span><span class="pas-space"> </span><span class="pas-ident">TForm1</span><span class="pas-sym">.</span><span class="pas-ident">Button1Click</span><span class="pas-sym">(</span><span class="pas-ident">Sender</span><span class="pas-sym">:</span><span class="pas-space"> </span><span class="pas-ident">TObject</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">const</span><br />
<span class="pas-space"> </span><span class="pas-ident">　SeedKey</span><span class="pas-space"> </span><span class="pas-sym">=</span><span class="pas-space"> </span><span class="pas-num">53269</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">begin</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Memo2</span><span class="pas-sym">.</span><span class="pas-ident">Text</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Encrypt</span><span class="pas-sym">(</span><span class="pas-ident">Memo1</span><span class="pas-sym">.</span><span class="pas-ident">Text</span><span class="pas-sym">,</span><span class="pas-ident">SeedKey</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-space"> </span><span class="pas-ident">　Memo3</span><span class="pas-sym">.</span><span class="pas-ident">Text</span><span class="pas-space"> </span><span class="pas-sym">:=</span><span class="pas-space"> </span><span class="pas-ident">Decrypt</span><span class="pas-sym">(</span><span class="pas-ident">Memo2</span><span class="pas-sym">.</span><span class="pas-ident">Text</span><span class="pas-sym">,</span><span class="pas-ident">SeedKey</span><span class="pas-sym">)</span><span class="pas-sym">;</span><br />
<span class="pas-kwd">end</span><span class="pas-sym">;</span></span>]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
  <entry>
    <id>delphi.blog.shinobi.jp://entry/12</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E6%96%87%E5%AD%97%E5%88%97%E6%A4%9C%E7%B4%A2" />
    <published>2013-12-18T19:59:54+09:00</published> 
    <updated>2013-12-18T19:59:54+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>文字列検索</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<p>文字列の中から特定の文字列を探しだす関数はPosです。<br />
また指定した文字数以降から探す場合はStrUtilsに含まれるPosExです。<br />
一番最後に見つかる位置を知りたい場合は探す文字列と探される側の文字列の両方をReverseStringでひっくり返してPosを使えば調べることが出来ます。<br />
その結果を使いやすいように加工した例が下記になります。<br />
<br />
//最後に見つかる文字列位置を調べる<br />
function LastPos(const substr, str: String) : Integer;<br />
begin<br />
&nbsp; result := Length(str) - Pos( ReverseString(substr) , ReverseString(str) ) - Length(substr) + 2;<br />
end;</p>
<p><br />
//使用例<br />
procedure TForm1.Button1Click(Sender: TObject);<br />
const<br />
&nbsp; str&nbsp;&nbsp;&nbsp; = '012345678901234567890123456789';<br />
&nbsp; substr = '345';<br />
begin<br />
&nbsp; Edit1.Text := IntToStr(&nbsp;&nbsp;&nbsp;&nbsp; Pos&nbsp; (substr , str&nbsp;&nbsp;&nbsp; ) );<br />
&nbsp; Edit2.Text := IntToStr(&nbsp;&nbsp;&nbsp;&nbsp; PosEx(substr , str , 8) );<br />
&nbsp; Edit3.Text := IntToStr( LastPos&nbsp; (substr , str&nbsp;&nbsp;&nbsp; ) );<br />
end;<br />
結果は4，14，24となります。</p>]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
  <entry>
    <id>delphi.blog.shinobi.jp://entry/11</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E7%B0%A1%E5%8D%98%E3%81%AB%E5%88%A5%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%81%A7%E5%87%A6%E7%90%86" />
    <published>2013-11-24T19:41:25+09:00</published> 
    <updated>2013-11-24T19:41:25+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>簡単に別スレッドで処理</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<p>Delphiで別スレッドを使って処理を行う場合TThreadクラスの継承クラスを作成して行うのが一般的ですが、その際必要なパラメーターをいちいちスレッドクラスに渡したりする必要が出てきたりします。<br />
（それが面倒になってグローバル変数を使ってみたり、自身のポインタを渡してみたり＾＾）<br />
なので簡単に別スレッド処理を使えるように考えてみました。<br />
<br />
<br />
//簡単スレッドクラス<br />
unit EasyThread;<br />
<br />
interface<br />
<br />
uses<br />
&nbsp; Windows, Classes;<br />
<br />
type<br />
&nbsp; TThreadProc = procedure of Object;<br />
&nbsp; TThreadSync = procedure of Object;<br />
<br />
&nbsp; TEasyThread = class(TObject)<br />
&nbsp; private type<br />
&nbsp;&nbsp;&nbsp; TPrivatetThread = class(TThread)<br />
&nbsp;&nbsp;&nbsp; private<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FThreadProc : TThreadProc;<br />
&nbsp;&nbsp;&nbsp; public<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; constructor Create( ThreadProc : TThreadProc );<br />
&nbsp;&nbsp;&nbsp; protected<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure Execute; override;<br />
&nbsp;&nbsp;&nbsp; end;<br />
&nbsp; private<br />
&nbsp;&nbsp;&nbsp; FThread&nbsp;&nbsp;&nbsp;&nbsp; : TPrivatetThread;<br />
<br />
&nbsp;&nbsp;&nbsp; function&nbsp;&nbsp;&nbsp; GetTerminated: Boolean;<br />
&nbsp; public<br />
&nbsp;&nbsp;&nbsp; constructor Create( ThreadProc : TThreadProc );<br />
&nbsp;&nbsp;&nbsp; destructor&nbsp; Destroy; override;<br />
<br />
&nbsp;&nbsp;&nbsp; procedure&nbsp;&nbsp; Synchronize( SyncProc : TThreadSync);<br />
<br />
&nbsp;&nbsp;&nbsp; procedure&nbsp;&nbsp; Terminate;<br />
&nbsp;&nbsp;&nbsp; procedure&nbsp;&nbsp; WaitFor;<br />
<br />
&nbsp;&nbsp;&nbsp; property&nbsp;&nbsp;&nbsp; Terminated : Boolean read GetTerminated;<br />
&nbsp; end;<br />
<br />
implementation<br />
<br />
{ TEasyThread }<br />
<br />
constructor TEasyThread.Create( ThreadProc : TThreadProc );<br />
begin<br />
&nbsp; FThread := TPrivatetThread.Create(ThreadProc);<br />
end;<br />
<br />
destructor TEasyThread.Destroy;<br />
begin<br />
&nbsp; if Assigned(FThread) then FThread.Free;<br />
<br />
&nbsp; inherited;<br />
end;<br />
<br />
function TEasyThread.GetTerminated: Boolean;<br />
begin<br />
&nbsp; result := FThread.Terminated;<br />
end;<br />
<br />
procedure TEasyThread.Terminate;<br />
begin<br />
&nbsp;&nbsp; if Assigned(FThread) then FThread.Terminate;<br />
end;<br />
<br />
procedure TEasyThread.WaitFor;<br />
begin<br />
&nbsp; try<br />
&nbsp;&nbsp;&nbsp;&nbsp; if Assigned(FThread) then FThread.WaitFor;<br />
&nbsp; except end;<br />
end;<br />
<br />
procedure TEasyThread.Synchronize(SyncProc: TThreadSync);<br />
begin<br />
&nbsp;&nbsp; if Assigned(FThread) then FThread.Synchronize(SyncProc);<br />
end;<br />
<br />
{ TEasyThread.TPrivatethread }<br />
<br />
constructor TEasyThread.TPrivatetThread.Create(ThreadProc: TThreadProc);<br />
begin<br />
&nbsp; inherited Create(False);<br />
<br />
&nbsp; FThreadProc := ThreadProc;<br />
end;<br />
<br />
procedure TEasyThread.TPrivatetThread.Execute;<br />
begin<br />
&nbsp; if Assigned(FThreadProc) then FThreadProc;<br />
end;<br />
<br />
end.<br />
<br />
・簡単スレッドクラスを使う例<br />
unit Main;<br />
<br />
interface<br />
<br />
uses<br />
&nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br />
&nbsp; Dialogs, StdCtrls, <span style="color: #0000ff;">EasyThread</span>;<br />
<br />
type<br />
&nbsp; TForm1 = class(TForm)<br />
&nbsp;&nbsp;&nbsp; Button1: TButton;<br />
&nbsp;&nbsp;&nbsp; Label1: TLabel;<br />
&nbsp;&nbsp;&nbsp; procedure Button1Click(Sender: TObject);<br />
&nbsp;&nbsp;&nbsp; procedure FormDestroy(Sender: TObject);<br />
&nbsp; private<br />
&nbsp;&nbsp;&nbsp; Count : Integer;<br />
&nbsp;&nbsp;&nbsp; <span style="color: #0000ff;">ET&nbsp;&nbsp;&nbsp; : TEasyThread;</span><br />
&nbsp; public<br />
&nbsp;&nbsp;&nbsp; <span style="color: #0000ff;">procedure ThreadProcedure;&nbsp; //別スレッドから呼ばれる</span><br />
<span style="color: #0000ff;">&nbsp;&nbsp;&nbsp; procedure VCL;&nbsp; //別スレッドからVCLにアクセスする場合に使う</span><br />
&nbsp; end;<br />
<br />
var<br />
&nbsp; Form1: TForm1;<br />
<br />
implementation<br />
<br />
{$R *.dfm}<br />
<br />
{ TForm1 }<br />
<br />
procedure TForm1.Button1Click(Sender: TObject);<br />
begin<br />
&nbsp; ReportMemoryLeaksOnShutdown := True;<br />
<br />
&nbsp; if not Assigned(ET) then <span style="color: #0000ff;">ET := TEasyThread.Create(ThreadProcedure);</span><br />
end;<br />
<br />
procedure TForm1.FormDestroy(Sender: TObject);<br />
begin<br />
&nbsp; if Assigned(ET) then <span style="color: #0000ff;">ET.Free;</span><br />
end;<br />
<br />
procedure TForm1.ThreadProcedure;<br />
begin<br />
&nbsp;&nbsp; //別スレッドから呼ばれる関数内でループ処理を行う場合は、かならずTerminated変数を監視する&nbsp; <br />
&nbsp; while <span style="color: #0000ff;">not ET.Terminated</span> do begin&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; Inc(Count);<br />
<br />
&nbsp;&nbsp;&nbsp; //VCLを使う場合はSynchronizeから呼び出す<br />
&nbsp;&nbsp;&nbsp; <span style="color: #0000ff;">ET.Synchronize</span>(VCL);<br />
<br />
&nbsp;&nbsp;&nbsp; Sleep(1);<br />
<br />
&nbsp;&nbsp;&nbsp; if Count = 3000 then Break;<br />
&nbsp; end;<br />
end;<br />
<br />
procedure TForm1.VCL;<br />
begin<br />
&nbsp; Label1.Caption := IntToStr(Count);<br />
end;</p>]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
  <entry>
    <id>delphi.blog.shinobi.jp://entry/10</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%B8%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%89%E3%83%A9%E3%83%83%E3%82%B0%E5%AF%BE%E5%BF%9C" />
    <published>2013-11-24T19:22:40+09:00</published> 
    <updated>2013-11-24T19:22:40+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>フォームへのファイルドラッグ対応</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<p>unit Unit1;</p>
<p>interface</p>
<p>uses<br />
&nbsp; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br />
&nbsp; Dialogs, <span style="color: #0000ff;">ShellAPI</span>;</p>
<p>type<br />
&nbsp; TForm1 = class(TForm)<br />
&nbsp;&nbsp;&nbsp; procedure FormCreate(Sender: TObject);<br />
&nbsp; private<br />
&nbsp;&nbsp;&nbsp; <span style="color: #0000ff;">procedure WMDropFiles(var msg: TWMDROPFILES); message WM_DROPFILES;</span><br />
&nbsp; public<br />
&nbsp;&nbsp;&nbsp; { Public declarations }<br />
&nbsp; end;</p>
<p>var<br />
&nbsp; Form1: TForm1;</p>
<p>implementation</p>
<p>{$R *.dfm}</p>
<p>procedure TForm1.FormCreate(Sender: TObject);<br />
begin<br />
&nbsp; //ファイルのドラッグ受け入れ準備<br />
&nbsp; <span style="color: #0000ff;">DragAcceptFiles(Handle, true);</span><br />
end;</p>
<p>procedure TForm1.WMDropFiles(var msg: TWMDROPFILES);<br />
var<br />
&nbsp; Count&nbsp;&nbsp;&nbsp; : Integer;<br />
&nbsp; FileName : String;<br />
begin<br />
&nbsp; try<br />
&nbsp;&nbsp;&nbsp;&nbsp;//ドラッグされたファイルの数を取得（今回は無視）&nbsp;<br />
&nbsp;&nbsp;&nbsp; Count := <span style="color: #0000ff;">DragQueryFile(msg.Drop, $ffffffff, nil, 0);</span><br />
&nbsp;&nbsp;&nbsp; //ファイル名を受け取る文字列を必要な容量分確保する<br />
&nbsp;&nbsp;&nbsp; SetLength( FileName , <span style="color: #0000ff;">DragQueryFile(msg.Drop, 0, nil, 0)</span> + 1 );<br />
&nbsp;&nbsp;&nbsp; //変数FailNameにドラッグされたファイルのフルパスを代入<br />
&nbsp;&nbsp;&nbsp; <span style="color: #0000ff;">DragQueryFile(msg.Drop, 0, @FileName[1], Length(FileName));</span><br />
&nbsp; finally<br />
&nbsp;&nbsp;&nbsp; //ドラッグ終了<br />
&nbsp;&nbsp;&nbsp; <span style="color: #0000ff;">DragFinish(msg.Drop);</span><br />
&nbsp; end;<br />
end;</p>]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
  <entry>
    <id>delphi.blog.shinobi.jp://entry/9</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E5%A4%9A%E9%87%8D%E8%B5%B7%E5%8B%95%E3%81%AE%E9%98%B2%E6%AD%A2" />
    <published>2013-11-06T23:44:29+09:00</published> 
    <updated>2013-11-06T23:44:29+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>多重起動の防止</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<p>アプリケーションの多重起動を抑止します。<br />
アプリケーションのソースを表示し（.dpr）下記のように変更します。<br />
<br />
program Project1;</p>
<p>uses<br />
&nbsp; <span style="color: #0000ff;">Windows,</span><br />
&nbsp; Forms,<br />
&nbsp; Unit1 in 'Unit1.pas' {Form1};</p>
<p>{$R *.res}</p>
<p><span style="color: #0000ff;">const</span><br />
<span style="color: #0000ff;">&nbsp; MutexName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 'TEST_APPLICATION'; //この文字列を一意になるよう変更</span><br />
<span style="color: #0000ff;">var</span><br />
<span style="color: #0000ff;">&nbsp; hMutex : THANDLE;</span><br />
begin<br />
&nbsp; <span style="color: #0000ff;">hMutex := OpenMutex(MUTEX_ALL_ACCESS, False, MutexName);</span><br />
<span style="color: #0000ff;">&nbsp; if (hMutex &lt;&gt; 0) then begin CloseHandle(hMutex); Exit; end;</span><br />
<span style="color: #0000ff;">&nbsp; hMutex := CreateMutex(nil, False, MutexName);</span></p>
<p>&nbsp; Application.Initialize;<br />
&nbsp; Application.MainFormOnTaskbar := True;<br />
&nbsp; Application.CreateForm(TForm1, Form1);<br />
&nbsp; Application.Run;<br />
<br />
&nbsp; <span style="color: #0000ff;">CloseHandle(hMutex);</span><br />
end.<br />
<br />
MutexNameの文字列は自由に変更して使いますが、他のミューテックス名と被ると一つも起動できなくなる恐れがありますのでユニークになるように工夫してください。<br />
<br />
</p>]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
  <entry>
    <id>delphi.blog.shinobi.jp://entry/8</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E3%82%A2%E3%83%97%E3%83%AA%E8%87%AA%E8%BA%AB%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E5%8F%96%E5%BE%97" />
    <published>2013-11-06T23:24:39+09:00</published> 
    <updated>2013-11-06T23:24:39+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>アプリ自身のバージョン取得</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<p>プロジェクトのオプションよりバージョン番号を含めると、アプリケーションファイル内にバージョン情報を埋め込むことが出来ます。<br />
その自身のバージョン番号を取得する方法は下記のとおりです。<br />
文字列として取得するようにしたのでフォームのキャプションなどにそのまま使えます。<br />
※新しいDelphiで64bitアプリとして生成されたプログラムでは動作しないようです。<br />
<br />
function GetSelfVersion: String;<br />
var<br />
&nbsp; VerInfoSize&nbsp; : DWORD;<br />
&nbsp; VerInfo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Pointer;<br />
&nbsp; VerValueSize : DWORD;<br />
&nbsp; VerValue&nbsp;&nbsp;&nbsp;&nbsp; : PVSFixedFileInfo;<br />
&nbsp; Dummy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : DWORD;<br />
begin<br />
&nbsp; VerInfoSize := GetFileVersionInfoSize( PChar(ParamStr(0)), Dummy );</p>
<p>&nbsp; GetMem(VerInfo, VerInfoSize);<br />
&nbsp; try<br />
&nbsp;&nbsp;&nbsp; GetFileVersionInfo( PChar(ParamStr(0)), 0, VerInfoSize, VerInfo );<br />
&nbsp;&nbsp;&nbsp; VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);</p>
<p>&nbsp;&nbsp;&nbsp; with VerValue^ do begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Result := Format('Ver%d.%d.%.3d [Build:%.4d]' , [(dwFileVersionMS shr 16)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , (dwFileVersionMS and $FFFF)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , (dwFileVersionLS shr 16)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , (dwFileVersionLS and $FFFF)])<br />
&nbsp;&nbsp;&nbsp; end;<br />
&nbsp; finally<br />
&nbsp;&nbsp;&nbsp; FreeMem(VerInfo, VerInfoSize);<br />
&nbsp; end;<br />
end;</p>]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
  <entry>
    <id>delphi.blog.shinobi.jp://entry/7</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%A7%E3%81%8D%E3%82%8Bwindows%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E9%99%90%E5%AE%9A%E3%81%99%E3%82%8B" />
    <published>2013-11-06T23:17:25+09:00</published> 
    <updated>2013-11-06T23:17:25+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>アプリを起動できるWindowsのバージョンを限定する</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[<p>SysUtilsのCheckWin32Versionを使えば簡単にWindowsのバージョンが要望を満たしているのか調べることが出来ます。<br />
<br />
procedure TForm1.FormCreate(Sender: TObject);<br />
begin<br />
&nbsp; //OSバージョンチェック、Windows7以降なら起動できる<br />
&nbsp; if not CheckWin32Version( 6,&nbsp;1 ) then begin<br />
&nbsp;&nbsp;&nbsp; MessageDlg('残念ながらこのWindowsのバージョンでは動作を認められていません。'#13#10'アプリケーションを終了します。', mtError, [mbOk], 0);<br />
&nbsp;&nbsp;&nbsp; Application.Terminate; Exit;<br />
&nbsp; end;<br />
end;<br />
<br />
CheckWin32Versionの引数はMajorとMinorの数値。<br />
Windows2000は5.0<br />
WindowsXPは5.1<br />
WindowsVistaは6.0<br />
Windows7は6.1<br />
Windows8は6.2<br />
Windows8.1は6.3<br />
<br />
Windowsのバージョンが引数に指定したものと同等かそれより新しければTrueが帰ります。</p>]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
  <entry>
    <id>delphi.blog.shinobi.jp://entry/6</id>
    <link rel="alternate" type="text/html" href="http://delphi.blog.shinobi.jp/%E6%9C%AA%E9%81%B8%E6%8A%9E/%E3%82%AB%E3%83%B3%E3%82%BF%E3%83%B3%E5%85%A5%E5%8A%9B" />
    <published>2013-11-01T20:05:06+09:00</published> 
    <updated>2013-11-01T20:05:06+09:00</updated> 
    <category term="未選択" label="未選択" />
    <title>カンタン入力</title>
    <content mode="escaped" type="text/html" xml:lang="utf-8"> 
      <![CDATA[例えばメモリーリークを検出するようにしようとして<br />
<br />
　ReportMemoryLeaksOnShutdown := True;<br />
<br />
と入力しようとした時、<br />
Ctl + Spaceキーを押してからr,e,p,oと押していけば入力候補が少しずつ絞られていき、すぐに入力できるようになります。]]> 
    </content>
    <author>
            <name>DelMAN</name>
        </author>
  </entry>
</feed>