<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
>
<channel rdf:about="http://delphi.livedoor.biz/">
<title>Delphiな小技</title>
<link>http://delphi.livedoor.biz/</link>
<description>個人的に気になったコードやサンプルなどなど・・・
フリーソフトの公開を始めました☆
</description>
<dc:language>ja</dc:language>
<admin:generatorAgent rdf:resource="http://blog.livedoor.com/?v=2.0" />
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50840042.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50715104.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50715103.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50715100.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50714093.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50714092.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50714090.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50713566.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50713565.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50706935.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50675365.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50675321.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50671198.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50671211.html" />
  <rdf:li rdf:resource="http://delphi.livedoor.biz/archives/50673238.html" />
 </rdf:Seq>
</items>
</channel>

<item rdf:about="http://delphi.livedoor.biz/archives/50840042.html">
<title>RealtimeRateFX</title>
<link>http://delphi.livedoor.biz/archives/50840042.html</link>
<description>■ ダウンロード ■
Version 1.01 (2007/12/03)
Version 1.00 (2007/11/15)



■ ソフトウェア概要 ■
RealtimeRateFX（リアルタイムレートエフエックス）は、リアルタイムな為替レートをガジェット状に背景を透明にしてデスクトップ上に表示できるソフトウェアです...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-11-14T17:13:17+09:00</dc:date>
<dc:subject>ソフトウェア</dc:subject>
<content:encoded><![CDATA[■ ダウンロード ■<br>
<a href="/downloads/rtrfx101.zip">Version 1.01</a> (2007/12/03)<br>
<a href="/downloads/rtrfx100.zip">Version 1.00</a> (2007/11/15)<br>
<br>
<br>
<img src="http://image.blog.livedoor.jp/boon_net/imgs/0/d/0d303692.jpg" width="170" height="283" border="0" alt="RealtimeRateFX 起動画面" hspace="5" class="pict" align="right" />
■ ソフトウェア概要 ■<br>
RealtimeRateFX（リアルタイムレートエフエックス）は、リアルタイムな為替レートをガジェット状に背景を透明にしてデスクトップ上に表示できるソフトウェアです。<br>
デスクトップの片隅に配置して、いつでもレートを監視できるよう開発しました。<br>
<br>
表示可能な通貨ペアは、USD/JPY、EUR/JPY、EUR/USD、AUD/JPY、GBP/JPY、NZD/JPY、CAD/JPY、CHF/JPY、HKD/JPY、GBP/USD、USD/CHF、ZAR/JPYの12種類で、このうち最大10ペアを表示可能です。<br>
レートは、各ペアに対し Bid - Ask (Change) の順で表示されます。<br>
<br>
このソフトウェアの動作には、インターネット接続が必須です。<br>
又、レート配信元の仕様変更等により正確にレートを表示できなくなる可能性があります。<br>
その場合、バージョンアップにより対応予定です。<br>
<br>
<br>
■ 使用方法 ■<br>
タスクトレイ上のアイコン、もしくはロゴの上で右クリックするとメニューが表示されます。<br>
<img src="http://image.blog.livedoor.jp/boon_net/imgs/e/0/e01d81ea.jpg" width="213" height="153" border="0" alt="RealtimeRateFX メニュー表示1" hspace="5" class="pict" />
<img src="http://image.blog.livedoor.jp/boon_net/imgs/9/7/97032af8.jpg" width="213" height="153" border="0" alt="RealtimeRateFX メニュー表示2" hspace="5" class="pict" /><br />
<br>
設定(<u>S</u>)・・・・設定画面を表示します。<br>
常に手前に表示(<u>T</u>)・・・・常に手前に表示するかどうかを切り替えできます。<br>
背景の透明化(<u>C</u>)・・・・背景の透明化と非透明化を切り替えできます。<br>
バージョン情報(<u>A</u>)・・・・バージョン情報を表示します。<br>
終了(<u>X</u>)・・・・ソフトウェアを終了します。<br>
<br>
設定できる内容は、表示通貨ペア、更新間隔、文字色です。<br>
<img src="http://image.blog.livedoor.jp/boon_net/imgs/5/0/50ce4647.jpg" width="439" height="320" border="0" alt="RealtimeRateFX 設定画面" hspace="5" class="pict" /><br />
<br>
表示通貨ペア・・・・表示したい通貨ペアを選択でき、表示順も設定できます。<br>
更新間隔・・・・10秒から300秒まで1秒刻みで設定可能。<br>
文字色・・・・背景を透明にして、壁紙の色等により文字が見にくくなった場合文字色を変更できる。<br>
<br>
表示部の移動は、ロゴをドラッグしてください。<br>
<img src="http://image.blog.livedoor.jp/boon_net/imgs/8/3/837cfdb6.jpg" width="155" height="130" border="0" alt="RealtimeRateFX 移動" hspace="5" class="pict" /><br />]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50715104.html">
<title>値の名前を列挙する</title>
<link>http://delphi.livedoor.biz/archives/50715104.html</link>
<description>サンプルは、開いているキー以下に存在する値の名前を Memo1 に列挙します。

uses節に、Registry ユニットを追加して下さい。

uses
  Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  ...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-08-09T12:20:01+09:00</dc:date>
<dc:subject>レジストリ系 サンプル</dc:subject>
<content:encoded><![CDATA[サンプルは、開いているキー以下に存在する値の名前を Memo1 に列挙します。<br>
<br>
uses節に、Registry ユニットを追加して下さい。<br>
<br>
<pre><code><b>uses</b>
  Registry;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Reg: TRegistry;
<b>begin</b>
  Reg := TRegistry.Create;
  <b>try</b>
    Reg.Rootkey := HKEY_LOCAL_MACHINE;
    <b>if</b> Reg.OpenKey('SOFTWARE\Test', True) <b>then</b>
      <font color=Blue><i>// 値の名前を Memo1 に列挙</i></font>
      Reg.GetValueNames(Memo1.Lines)
    <b>else</b>
      ShowMessage('キーを開けませんでした');
  <b>finally</b>
    Reg.CloseKey;
    Reg.Free;
  <b>end;</b>
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50715103.html">
<title>値の削除</title>
<link>http://delphi.livedoor.biz/archives/50715103.html</link>
<description>サンプルは、レジストリ値を設定し、その値を削除します。

uses節に、Registry ユニットを追加して下さい。

uses
  Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.Root...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-08-09T12:19:17+09:00</dc:date>
<dc:subject>レジストリ系 サンプル</dc:subject>
<content:encoded><![CDATA[サンプルは、レジストリ値を設定し、その値を削除します。<br>
<br>
uses節に、Registry ユニットを追加して下さい。<br>
<br>
<pre><code><b>uses</b>
  Registry;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Reg: TRegistry;
<b>begin</b>
  Reg := TRegistry.Create;
  <b>try</b>
    Reg.Rootkey := HKEY_LOCAL_MACHINE;
    <b>if</b> Reg.OpenKey('SOFTWARE', False) <b>then</b>
    <b>begin</b>
      Reg.WriteString('Test', 'Delphiな小技');
      <font color=Blue><i>// 値の削除及び、失敗時の処理</i></font>
      <b>if</b> Reg.DeleteValue('Test') <b>then</b>
        ShowMessage('値の削除に成功しました')
      <b>else</b>
        ShowMessage('値の削除に失敗しました');
    <b>end</b>
    <b>else</b>
      ShowMessage('キーを開けませんでした');
  <b>finally</b>
    Reg.CloseKey;
    Reg.Free;
  <b>end;</b>
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50715100.html">
<title>値の設定と取得</title>
<link>http://delphi.livedoor.biz/archives/50715100.html</link>
<description>レジストリ値の設定には、書き込む際に型を指定する必要があり、値の取得も同様です。
サンプルは、レジストリ値を 文字列型、整数型、実数型、論理型、日付型、時刻型 として書き込み、さらに 値を取得して Memo1 に返します。

uses節に、Registry ユニットを追加して下...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-08-09T12:18:19+09:00</dc:date>
<dc:subject>レジストリ系 サンプル</dc:subject>
<content:encoded><![CDATA[レジストリ値の設定には、書き込む際に型を指定する必要があり、値の取得も同様です。<br>
サンプルは、レジストリ値を 文字列型、整数型、実数型、論理型、日付型、時刻型 として書き込み、さらに 値を取得して Memo1 に返します。<br>
<br>
uses節に、Registry ユニットを追加して下さい。<br>
<br>
<pre><code><b>uses</b>
  Registry;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Reg: TRegistry;
<b>begin</b>
  Reg := TRegistry.Create;
  <b>try</b>
    Reg.Rootkey := HKEY_LOCAL_MACHINE;
    <b>if</b> Reg.OpenKey('SOFTWARE\Test', True) <b>then</b>
    <b>begin</b>
      <font color=Blue><i>// 値の設定</i></font>
      Reg.WriteString('String', 'Delphiな小技');
      Reg.WriteInteger('Integer', 321);
      Reg.WriteFloat('Float', 123.456);
      Reg.WriteBool('Boolean', False);
      Reg.WriteDate('Date', Date);
      Reg.WriteTime('Time', Time);

      <font color=Blue><i>// 値の取得</i></font>
      Memo1.Lines.Add(Reg.ReadString('String'));
      Memo1.Lines.Add(IntToStr(Reg.ReadInteger('Integer')));
      Memo1.Lines.Add(FloatToStr(Reg.ReadFloat('Float')));
      Memo1.Lines.Add(BoolToStr(Reg.ReadBool('Boolean'), True));
      Memo1.Lines.Add(DateToStr(Reg.ReadDate('Date')));
      Memo1.Lines.Add(TimeToStr(Reg.ReadTime('Time')));
    <b>end</b>
    <b>else</b>
      ShowMessage('キーを開けませんでした');
  <b>finally</b>
    Reg.CloseKey;
    Reg.Free;
  <b>end;</b>
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50714093.html">
<title>キー名を列挙する</title>
<link>http://delphi.livedoor.biz/archives/50714093.html</link>
<description>サンプルは、開いているキー以下に存在するキー名を Memo1 に列挙します。

uses節に、Registry ユニットを追加して下さい。

uses
  Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;
begin
  // Reg のインスタンス化
  Reg...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-08-08T20:21:30+09:00</dc:date>
<dc:subject>レジストリ系 サンプル</dc:subject>
<content:encoded><![CDATA[サンプルは、開いているキー以下に存在するキー名を Memo1 に列挙します。<br>
<br>
uses節に、Registry ユニットを追加して下さい。<br>
<br>
<pre><code><b>uses</b>
  Registry;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Reg: TRegistry;
<b>begin</b>
  <font color=Blue><i>// Reg のインスタンス化</i></font>
  Reg := TRegistry.Create;
  <b>try</b>
    <font color=Blue><i>// ルートキーを設定</i></font>
    Reg.Rootkey := HKEY_LOCAL_MACHINE;
    <font color=Blue><i>// キーを開く</i></font>
    <b>if</b> Reg.OpenKey('SOFTWARE', False) <b>then</b>
      <font color=Blue><i>// Memo1 にキー名を列挙する</i></font>
      Reg.GetKeyNames(Memo1.Lines)
    <b>else</b>
      ShowMessage('キーのオープンに失敗しました');
  <b>finally</b>
    <font color=Blue><i>// キーを閉じる</i></font>
    Reg.CloseKey;
    <font color=Blue><i>// Reg を破棄</i></font>
    Reg.Free;
  <b>end;</b>
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50714092.html">
<title>キーのオープンとクローズ</title>
<link>http://delphi.livedoor.biz/archives/50714092.html</link>
<description>値を書き込んだり、読み込んだりする前に必ずキーを開かなくてはいけません。
書き込み及び、読み込み終わったキーは必ず閉じる必要があります。
以下のサンプルは、キーを開いて閉じます。

uses節に、Registry ユニットを追加して下さい。

uses
  Registry;

pro...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-08-08T20:20:27+09:00</dc:date>
<dc:subject>レジストリ系 サンプル</dc:subject>
<content:encoded><![CDATA[値を書き込んだり、読み込んだりする前に必ずキーを開かなくてはいけません。<br>
書き込み及び、読み込み終わったキーは必ず閉じる必要があります。<br>
以下のサンプルは、キーを開いて閉じます。<br>
<br>
uses節に、Registry ユニットを追加して下さい。<br>
<br>
<pre><code><b>uses</b>
  Registry;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Reg: TRegistry;
<b>begin</b>
  <font color=Blue><i>// Reg のインスタンス化</i></font>
  Reg := TRegistry.Create;
  <b>try</b>
    <font color=Blue><i>// ルートキーを設定</i></font>
    Reg.Rootkey := HKEY_LOCAL_MACHINE;

    <font color=Blue><i>// キーを開く（存在しなければ作成する）</i></font>
    <b>if</b> Reg.OpenKey('SOFTWARE\Test', True) <b>then</b>
      ShowMessage('キーを開きました')
    <b>else</b>
      ShowMessage('キーを開けませんでした');

  <b>finally</b>
    <font color=Blue><i>// キーを閉じる</i></font>
    Reg.CloseKey;
    <font color=Blue><i>// Reg を破棄</i></font>
    Reg.Free;
  <b>end;</b>
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50714090.html">
<title>キーの作成と削除</title>
<link>http://delphi.livedoor.biz/archives/50714090.html</link>
<description>サンプルは、レジストリにキーを作成し削除します。
キーは、オープン時に存在しない場合、作成することも出来ます。

uses節に、Registry ユニットを追加して下さい。

uses
  Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
  Reg: TRegistry;...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-08-08T20:19:10+09:00</dc:date>
<dc:subject>レジストリ系 サンプル</dc:subject>
<content:encoded><![CDATA[サンプルは、レジストリにキーを作成し削除します。<br>
キーは、オープン時に存在しない場合、作成することも出来ます。<br>
<br>
uses節に、Registry ユニットを追加して下さい。<br>
<br>
<pre><code><b>uses</b>
  Registry;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Reg: TRegistry;
<b>begin</b>
  <font color=Blue><i>// Reg のインスタンス化</i></font>
  Reg := TRegistry.Create;
  <b>try</b>
    <font color=Blue><i>// ルートキーを設定</i></font>
    Reg.Rootkey := HKEY_LOCAL_MACHINE;

    <font color=Blue><i>// キーの作成及び、失敗時の処理</i></font>
    <b>if</b> Reg.CreateKey('SOFTWARE\Test') <b>then</b>
      ShowMessage('キーの作成に成功しました')
    <b>else</b>
      ShowMessage('キーの作成に失敗しました');

    <font color=Blue><i>// キーの削除及び、失敗時の処理</i></font>
    <b>if</b> Reg.DeleteKey('SOFTWARE\Test') <b>then</b>
      ShowMessage('キーの削除に成功しました')
    <b>else</b>
      ShowMessage('キーの削除に失敗しました');

  <b>finally</b>
    <font color=Blue><i>// Reg を破棄</i></font>
    Reg.Free;
  <b>end;</b>
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50713566.html">
<title>ファイルから画像を挿入する</title>
<link>http://delphi.livedoor.biz/archives/50713566.html</link>
<description>サンプルは、Excel に画像ファイルを挿入しサイズを任意に変更します。
jpg 以外にも gif や png 等もそのままのフォーマットで挿入できるため、
ファイルサイズを小さくする事ができる。

uses
  ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
  ...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-08-08T12:16:32+09:00</dc:date>
<dc:subject>Excel系 サンプル</dc:subject>
<content:encoded><![CDATA[サンプルは、Excel に画像ファイルを挿入しサイズを任意に変更します。<br>
jpg 以外にも gif や png 等もそのままのフォーマットで挿入できるため、
ファイルサイズを小さくする事ができる。<br>
<br>
<pre><code><b>uses</b>
  ComObj;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Excel: Variant;
  xlApplication: Variant;
  xlWorkBook: Variant;
  xlWorkSheet: Variant;
  xlPicture: Variant;
<b>begin</b>
  <font color=Blue><i>// Excelの起動</i></font>
  <b>try</b>
    Excel := CreateOleObject('Excel.Application');
    xlApplication := Excel.Application;
  <b>except</b>
    <font color=Blue><i>// 起動失敗時の処理</i></font>
    <b>on</b> EOleSysError <b>do</b>
    <b>begin</b>
      ShowMessage('Excelを起動できません');
      Excel := Unassigned;
      Exit;
    <b>end;</b>
  <b>end;</b>

  <font color=Blue><i>// ウィンドウの表示</i></font>
  xlApplication.Visible := True;
  <font color=Blue><i>// ブックを作成</i></font>
  xlWorkBook := xlApplication.Workbooks.Add;
  <font color=Blue><i>// Sheet1 を選択</i></font>
  xlWorkSheet := xlWorkBook.Worksheets['Sheet1'];
  <font color=Blue><i>// シートをアクティブにする</i></font>
  xlWorkSheet.Activate;
  <font color=Blue><i>// 貼り付けたい位置のセルを選択</i></font>
  xlWorkSheet.Range['B3', 'B3'].Select;

  <font color=Blue><i>// 画像をファイルから挿入</i></font>
  xlPicture := xlWorkSheet.Pictures.Insert('c:\test.jpg');
  xlPicture.Select;

  <font color=Blue><i>// 画像を自由に収縮（水平垂直とも0.5倍）</i></font>
  xlPicture.ShapeRange.ScaleWidth(0.5, False);
  xlPicture.ShapeRange.ScaleHeight(0.5, False);

  <font color=Blue><i>// オブジェクトを初期化する</i></font>
  Excel := Unassigned;
  xlApplication := Unassigned;
  xlWorkBook := Unassigned;
  xlWorkSheet := Unassigned;
  xlPicture := Unassigned;
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50713565.html">
<title>クリップボード経由の画像貼り付け</title>
<link>http://delphi.livedoor.biz/archives/50713565.html</link>
<description>サンプルは Excel にクリップボードを経由して画像を貼り付けます。
ただし、クリップボードには Bitmap形式でしか格納出来ないため、
クリップボードを経由させるとファイルサイズが大きくなってしまう可能性がある。
ファイルサイズを小さくしたい場合は、一度画像をフ...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-08-08T12:15:06+09:00</dc:date>
<dc:subject>Excel系 サンプル</dc:subject>
<content:encoded><![CDATA[サンプルは Excel にクリップボードを経由して画像を貼り付けます。<br>
ただし、クリップボードには Bitmap形式でしか格納出来ないため、
クリップボードを経由させるとファイルサイズが大きくなってしまう可能性がある。<br>
ファイルサイズを小さくしたい場合は、一度画像をファイルに保存し、
<a href="/archives/50713566.html">ファイルから画像を挿入する</a>のがおすすめ。<br>
<br>
<pre><code><b>uses</b>
  ComObj, Clipbrd;

<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Excel: Variant;
  xlApplication: Variant;
  xlWorkBook: Variant;
  xlWorkSheet: Variant;
  bmp: TBitmap;
<b>begin</b>
  <font color=Blue><i>// Excelの起動</i></font>
  <b>try</b>
    Excel := CreateOleObject('Excel.Application');
    xlApplication := Excel.Application;
  <b>except</b>
    <font color=Blue><i>// 起動失敗時の処理</i></font>
    <b>on</b> EOleSysError <b>do</b>
    <b>begin</b>
      ShowMessage('Excelを起動できません');
      Excel := Unassigned;
      Exit;
    <b>end;</b>
  <b>end;</b>

  <font color=Blue><i>// ウィンドウの表示</i></font>
  xlApplication.Visible := True;
  <font color=Blue><i>// ブックを作成</i></font>
  xlWorkBook := xlApplication.Workbooks.Add;
  <font color=Blue><i>// Sheet1 を選択</i></font>
  xlWorkSheet := xlWorkBook.Worksheets['Sheet1'];
  <font color=Blue><i>// シートをアクティブにする</i></font>
  xlWorkSheet.Activate;
  <font color=Blue><i>// 貼り付けたい位置のセルを選択</i></font>
  xlWorkSheet.Range['B3', 'B3'].Select;

  <font color=Blue><i>// bmp のインスタンス化</i></font>
  bmp := TBitmap.Create;
  <b>try</b>
    <font color=Blue><i>// Bitmapファイル読み込み</i></font>
    bmp.LoadFromFile('c:\test.bmp');
    <font color=Blue><i>// クリップボードにコピー</i></font>
    Clipboard.Assign(bmp);
    <font color=Blue><i>// クリップボードから貼り付ける</i></font>
    xlWorkSheet.Paste;
  <b>finally</b>
    <font color=Blue><i>// bmp の破棄</i></font>
    bmp.Free;
  <b>end;</b>

  <font color=Blue><i>// オブジェクトを初期化する</i></font>
  Excel := Unassigned;
  xlApplication := Unassigned;
  xlWorkBook := Unassigned;
  xlWorkSheet := Unassigned;
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50706935.html">
<title>文字列に改行コードを入力する</title>
<link>http://delphi.livedoor.biz/archives/50706935.html</link>
<description>改行コード(LF, CR)はそれぞれ、ASCIIコード(0Ah, 0Dh)を示します。
改行コードはOSによって違うため、必要に応じて使い分けが必要です。
Macintosh系では #13 、UNIX系では #10 、Windows系では #13#10 となります。

サンプルは、メッセージを3行に分けて表示します。...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-08-06T22:45:58+09:00</dc:date>
<dc:subject>文字列処理系 サンプル</dc:subject>
<content:encoded><![CDATA[改行コード(LF, CR)はそれぞれ、ASCIIコード(0Ah, 0Dh)を示します。<br>
改行コードはOSによって違うため、必要に応じて使い分けが必要です。<br>
Macintosh系では #13 、UNIX系では #10 、Windows系では #13#10 となります。<br>
<br>
サンプルは、メッセージを3行に分けて表示します。<br>
<br>
<pre><code><b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>begin</b>
  <font color = Blue><i>// 3行に分けてメッセージを表示する</i></font>
  ShowMessage('１行目' + #13#10 + '２行目' + #13#10 + '３行目');
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50675365.html">
<title>文字列から部分文字列を検索する（複数個所の場合）</title>
<link>http://delphi.livedoor.biz/archives/50675365.html</link>
<description>文字列から部分文字列を複数箇所検索する場合、StrUtils ユニットにある PosEx 関数を使用します。
しかし、私の知る限りでは、Delphi 6 に PosEx 関数は存在せず、マルチバイト文字にも対応していないようなので、ここでは以前どこかで教えてもらってメモっておいた AnsiPo...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-07-19T22:01:55+09:00</dc:date>
<dc:subject>文字列処理系 サンプル</dc:subject>
<content:encoded><![CDATA[文字列から部分文字列を複数箇所検索する場合、StrUtils ユニットにある PosEx 関数を使用します。<br>
しかし、私の知る限りでは、Delphi 6 に PosEx 関数は存在せず、マルチバイト文字にも対応していないようなので、ここでは以前どこかで教えてもらってメモっておいた AnsiPosEx 関数を使用します。<br>
<br>
<pre><code><b>function</b> AnsiPosEx(<b>const</b> SubStr, S: <b>String</b>;
  Offset: Cardinal = 0): Cardinal;
<b>var</b>
  P: PChar;
<b>begin</b>
  <b>if</b> Offset = 0 <b>then</b>
    Result := AnsiPos(SubStr, S)
  <b>else</b>
  <b>begin</b>
    P := PChar(S);
    <b>if</b> ByteType(S, Offset) = mbLeadByte <b>then</b>
      Inc(Offset);
    Inc(P, Offset);
    P := AnsiStrPos(P, PChar(SubStr));
    <b>if</b> Assigned(P) <b>then</b>
      Result := P - PChar(S) +1
    <b>else</b>
      Result := 0;
  <b>end;</b>
<b>end;</b></code></pre>
サンプルでは、Memo1 に書き込まれた内容から、Edit1 の文字列を検索し、Label1 へヒット数を返します。<br>
また、カーソル位置から順番に検索個所を反転表示します。<br>
<br>
<a href="/downloads/AnsiPosEx.zip">Sample Download</a><br>
<br>
<img src="/imgs/c/1/c1aee93d.jpg" width="450" height="350" border="0" alt="文字列から部分文字列を検索する（複数個所の場合）" hspace="5" class="pict" /><br />
<br>
<pre><code><b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  i: Integer;
  Counter: Integer;
  Offset: Integer;
  Str: <b>String</b>;
<b>begin</b>
  <Font Color="Blue"><i>// Memo1 の内容を Str へコピー</i></Font>
  Str := Memo1.Lines.Text;
  <Font Color="Blue"><i>// 変数初期化</i></Font>
  i := 0;
  Counter := 0;

  <Font Color="Blue"><i>// 検索ワードのヒット数をカウント</i></Font>
  <b>Repeat</b>
    i := AnsiPosEx(Edit1.Text, Str, i);
    <b>if</b> i > 0 <b>then</b>
      Inc(Counter);
  <b>until</b> i = 0;
  <Font Color="Blue"><i>// ヒット数を書き出し</i></Font>
  Label1.Caption := '検索ヒット数　：　' + IntToStr(Counter);

  <Font Color="Blue"><i>// ヒットした場合、検索ワードを選択し反転表示する</i></Font>
  <b>if</b> Counter > 0 <b>then</b>
  <b>begin</b>
    <Font Color="Blue"><i>// カーソル位置より後で検索</i></Font>
    Offset := Memo1.SelStart + Memo1.SelLength;
    i := AnsiPosEx(Edit1.Text, Str, Offset);
    <Font Color="Blue"><i>// カーソルの位置が最後の検索ワードよりも後だった場合、</i></Font>
    <Font Color="Blue"><i>// オフセットを 0 に戻し再検索</i></Font>
    <b>if</b> i = 0 <b>then</b>
    <b>begin</b>
      Offset := 0;
      i := AnsiPosEx(Edit1.Text, Str, Offset);
    <b>end;</b>
    <Font Color="Blue"><i>// 検索ワードを反転表示</i></Font>
    Memo1.SelStart := i -1;
    Memo1.SelLength := Length(Edit1.Text);
  <b>end;</b>
<b>end;</b></code></pre>]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50675321.html">
<title>文字列から部分文字列を検索する（単一個所の場合）</title>
<link>http://delphi.livedoor.biz/archives/50675321.html</link>
<description>文字列から部分文字列を検索する場合、Pos 関数か、全角文字（マルチバイト文字）を含む場合は AnsiPos 関数を使用します。
Pos 関数（AnsiPos 関数）は、文字列から部分文字列を検索して、最初に見つかった位置を返し、見つからなかった場合は 0 を返します。

検索語句...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-07-19T21:37:55+09:00</dc:date>
<dc:subject>文字列処理系 サンプル</dc:subject>
<content:encoded><![CDATA[文字列から部分文字列を検索する場合、Pos 関数か、全角文字（マルチバイト文字）を含む場合は AnsiPos 関数を使用します。<br>
Pos 関数（AnsiPos 関数）は、文字列から部分文字列を検索して、最初に見つかった位置を返し、見つからなかった場合は 0 を返します。<br>
<br>
検索語句が文字列の中に複数ある場合は<a href="/archives/50675365.html">こちら</a><br>
<br>
サンプルは、Edit1 の文字列から Edit2 の文字列を検索し、結果を Edit3 に返します。<br>
<br>
<img src="/imgs/d/d/dd1dd42b.jpg" width="185" height="228" border="0" alt="文字列から部分文字列を検索する（単一個所の場合）" hspace="5" class="pict" /><br />
<br>
<pre><code><b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  i: Integer;
<b>begin</b>
  <font color = Blue><i>// Edit1 から Edit2 を検索し、変数 i に結果を返す。</i></font>
  i := Pos(Edit2.Text, Edit1.Text);
  if i = 0 then
    <font color = Blue><i>// 見つからなかった場合の処理</i></font>
    Edit3.Text := '見つかりません'
  else
    <font color = Blue><i>// 見つかった場合の処理</i></font>
    Edit3.Text := IntToStr(i) + '文字目に見つかりました';
<b>end;</b></code></pre>
]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50671198.html">
<title>文字列をJISコード（ASCIIコード）へ変換</title>
<link>http://delphi.livedoor.biz/archives/50671198.html</link>
<description>半角文字と全角文字の区別には、ByteType関数を使用します。
ByteType関数は、指定されたバイトが完全な 1 文字を表すときに mbSingleByte、マルチバイト文字の最初のバイトを表すときに mbLeadByte、マルチバイト文字の 2 番目のバイトを表すときに mbTrailByte を返します...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-07-18T19:13:08+09:00</dc:date>
<dc:subject>文字列処理系 サンプル</dc:subject>
<content:encoded><![CDATA[半角文字と全角文字の区別には、ByteType関数を使用します。<br>
ByteType関数は、指定されたバイトが完全な 1 文字を表すときに mbSingleByte、マルチバイト文字の最初のバイトを表すときに mbLeadByte、マルチバイト文字の 2 番目のバイトを表すときに mbTrailByte を返します。<br>
<br>
以下のサンプルは、Edit1 に入力された文字列のJISコード(ASCIIコード)を、Memo1 に列挙します。<br>
<br>
<img src="/imgs/2/e/2ef43ef5.jpg" width="194" height="269" border="0" alt="文字列をJISコード（ASCIIコード）へ変換" hspace="5" class="pict" /><br />
<br>
<pre><code><b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  s, Temp: <b>String</b>;
  i: Integer;
<b>begin</b>
  s := Edit1.Text;
  Memo1.Clear;
  <font color = Blue><i>// 文字列のバイト数分ループする</i></font>
  <b>for</b> i := 1 <b>to</b> Length(s) <b>do</b>
  <b>begin</b>
    <font color = Blue><i>// シングルバイト文字の処理</i></font>
    <b>if</b> ByteType(s, i) = mbSingleByte <b>then</b>
      Memo1.Lines.Add(IntToHex(Ord(s[i]), 2));
    <font color = Blue><i>// マルチバイト文字の上位バイト処理</i></font>
    <b>if</b> ByteType(s, i) = mbLeadByte <b>then</b>
      Temp := IntToHex(Ord(s[i]), 2);
    <font color = Blue><i>// マルチバイト文字の下位バイト処理</i></font>
    <b>if</b> ByteType(s, i) = mbTrailByte <b>then</b>
    <b>begin</b>
      Temp := Temp + IntToHex(Ord(s[i]), 2);
      Memo1.Lines.Add(Temp);
    <b>end;</b>
  <b>end;</b>
<b>end;</b></code></pre>]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50671211.html">
<title>文字列から部分文字列をコピーする</title>
<link>http://delphi.livedoor.biz/archives/50671211.html</link>
<description>部分文字列のコピーには Copy 関数を使用します。
だたし、全角文字（マルチバイト文字）は、2文字として処理されますので注意が必要です。

サンプルは、Edit1 に入力された文字列の 1文字目 から 6文字分 を Edit2 へ、7文字目 から 6文字分 を Edit3 に出力します。
...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-07-17T19:19:54+09:00</dc:date>
<dc:subject>文字列処理系 サンプル</dc:subject>
<content:encoded><![CDATA[部分文字列のコピーには Copy 関数を使用します。<br>
だたし、全角文字（マルチバイト文字）は、2文字として処理されますので注意が必要です。<br>
<br>
サンプルは、Edit1 に入力された文字列の 1文字目 から 6文字分 を Edit2 へ、7文字目 から 6文字分 を Edit3 に出力します。<br>
<br>
<img src="/imgs/1/3/13f019ce.jpg" width="161" height="220" border="0" alt="文字列から部分文字列をコピーする" hspace="5" class="pict" /><br />
<br>
<pre><code><b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Src, Dest: <b>String</b>;
<b>begin</b>
  <font color = Blue><i>// Edit1 の内容を Src にコピー</i></font>
  Src := Edit1.Text;
  <font color = Blue><i>// Srcの 1文字目から 6文字分をDestへコピー</i></font>
  Dest := Copy(Src, 1, 6);
  Edit2.Text := Dest;
  <font color = Blue><i>// Srcの 7文字目から 6文字分をDestへコピー</i></font>
  Dest := Copy(Src, 7, 6);
  Edit3.Text := Dest;
<b>end;</b></code></pre>]]>
</content:encoded>
</item>
<item rdf:about="http://delphi.livedoor.biz/archives/50673238.html">
<title>文字列から部分文字列を削除する</title>
<link>http://delphi.livedoor.biz/archives/50673238.html</link>
<description>部分文字列の削除には Delete 手続きを使用します。
全角文字（マルチバイト文字）は、2文字として扱われるので注意が必要です。

サンプルは、Edit1 の文字列の 7文字目 から 5文字分 を削除し、Edit2 へ返します。 



procedure TForm1.Button1Click(Sender: TObje...</description>
<dc:creator>boon_net</dc:creator>
<dc:date>2007-07-17T19:18:17+09:00</dc:date>
<dc:subject>文字列処理系 サンプル</dc:subject>
<content:encoded><![CDATA[部分文字列の削除には Delete 手続きを使用します。<br>
全角文字（マルチバイト文字）は、2文字として扱われるので注意が必要です。<br>
<br>
サンプルは、Edit1 の文字列の 7文字目 から 5文字分 を削除し、Edit2 へ返します。<br> 
<br>
<img src="/imgs/4/9/49e2df09.jpg" width="162" height="172" border="0" alt="文字列から部分文字列を削除する" hspace="5" class="pict" /><br />
<br>
<pre><code><b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
  Src: <b>String</b>;
<b>begin</b>
  <font color = Blue><i>// Edit1 の内容を Src にコピー</i></font>
  Src := Edit1.Text;
  <font color = Blue><i>// 7文字目から 5文字分削除する</i></font>
  Delete(Src, 7, 5);
  <font color = Blue><i>// Edit2 へ書き出し</i></font>
  Edit2.Text := Src;
<b>end;</b></code></pre>]]>
</content:encoded>
</item>

</rdf:RDF>