2005年08月06日

2バイト文字コードを変換する方法

ソリューションプロバイダが好き勝手にできる
やりたい放題のITプロジェクトとは別に、
皆さんや皆さんの周りのお客さんは、
H/Wの保守期限切れなどによる
代替えH/Wの導入とプラットフォームの変更、
システムのオープン化や、ダウンサイジング化といった
課題に直面していることの方が多いと思います。

今回はそういったマルチプラットフォーム間の
システムリンケージで必要な文字コード変換関数を
まとめて6パターン紹介しましょう。

文字コード変換関数は
2バイト文字コードを別の2バイト文字コードへ変換します。
1バイトと2バイト文字が混在する
際の変換に対応していませんので、
必要に応じ修正してから利用してください。

全ソースは【続きを読む】をクリック!

関数
説明
function _EUC2JIS(
 pString: String): String;
EUC文字コードをJIS文字コードへ変換します。
function _EUC2SJIS(
 pString: String): String;
EUC文字コードをシフトJIS文字コードへ変換します。
function _JIS2EUC(
 pString: String): String;
JIS文字コードをEUC文字コードへ変換します。
function _JIS2SJIS(
 pString: String): String;
JIS文字コードをシフトJIS文字コードへ変換します。
function _SJIS2EUC(
 pString: String): String;
シフトJIS文字コードをEUC文字コードへ変換します。
function _SJIS2JIS(
 pString: String): String;
シフトJIS文字コードをJIS文字コードへ変換します。

関連書籍


Copyright guy@かしらもんじ でぇ〜

続きを読む
posted by guy at 07:38 | 文字列操作編

2005年07月28日

文字列と出現回数から文字列の位置を取得する方法

Delphi標準関数Posを応用した関数です。
指定された文字列から特定の部分文字列を検索し、
検索ヒット回数が指定された回数になった場合、
その部分文字列の文字位置を戻す関数です。

な〜んのことはありません。
Pos関数に検索ヒット回数の引数が追加されただけですが、
この関数を利用する局面は、以外にもたくさんあるのです。

今回ご紹介する関数は、
「文字列からトークンを取得する方法」
などの関数と組み合わせることで、
文脈自由型のコンパイラやインタープリタの文脈解析、
プログラムの挙動を制御するINIファイルの解析など、
幅広い問題の解決にご利用いただけるかと思います。


ではさっそく、プログラムを紹介しましょうね。

_Posソースは【続きを読む】をクリック!

関数仕様
function _Pos(
 pSubStr, pSource: String; pCount: Integer): Integer;
説明
pSourceで指定された文字列から、pSubStrで指定された部分文字列を検索し、検索ヒット回数が指定されたpCountと同じ場合、pSource中の部分文字列の位置を戻します。部分文字列が見つからない場合や、検索ヒット回数の条件を満たさない場合、関数はゼロを戻します。
使用例
procedure TForm1.Button1Click(Sender: TObject);
var
 lText: String;
 lIndex: Integer;
begin
 lText := 'Hello! This is guy. sorry? My Name is guy.';
 // 上記文字列から
 // 1回目にヒットした'guy'の文字位置を取得する。
 // 文字位置は'16'が戻されます。

 lIndex := _Pos('guy', lText, 1);
 Edit1.Text := Format('%d', [lIndex]);
 // 上記文字列から
 // 2回目にヒットした'guy'の文字位置を取得する。
 // 文字位置は'39'が戻されます。

 lIndex := _Pos('guy', lText, 2);
 Edit1.Text := Edit1.Text + Format(',%d', [lIndex]);
 // 上記文字列から
 // 3回目にヒットした'guy'の文字位置を取得する。
 // 文字位置は'0'が戻されます。

 lIndex := _Pos('guy', lText, 0);
 Edit1.Text := Edit1.Text + Format(',%d', [lIndex]);
end;

関連書籍


Copyright guy@かしらもんじ でぇ〜

続きを読む
posted by guy at 06:59 | 文字列操作編

2005年07月26日

文字列から文字要素(トークン)を取得する方法

検索エンジンのキーワード欄に入力された文字列や、
CSVファイルのようなカンマ、タブで区切られた文字列から、
各文字要素(トークン)を取得する方法をDelphiで紹介します。


私が大学生だった頃、
AI(人工知能)なる言葉やLISP言語が流行していました。
このAIの研究に没頭されていた教授から、
夏休みにインタープリタをつくりなさいという課題を与えられ、
面白半分、悩み半分で取組んだ思い出があります。

今回ご紹介する関数は、
CVSファイルの文字列トークン取得から、
文脈自由型のコンパイラやインタープリタの文脈解析まで、
幅広い問題の解決にご利用いただけるかと思います。
また、このアルゴリスムは
初級情報処理技術者資格試験にも
出題されるたことがありますよ。


ではさっそく、プログラムを紹介しましょうね。

_GetTokenソースは【続きを読む】をクリック!

関数仕様
function _GetToken(
 var pSource: String; pDelimiter: String): String;
説明
pSourceで指定された文字列から、pDelimiterで指定された区切り文字こどに文字列要素を取り出し戻します。文字列要素を取り出した後、入力されたpSourceは、始めに見つかった区切り文字以降の文字列に再編集されます。pSourceで指定された文字列から文字列要素を取り出せない場合、関数は空の文字列を戻します。pDelmiterには区切り文字を複数指定できます。
使用例
procedure TForm1.Button1Click(Sender: TObject);
var
 lText,
 lToken: String;
begin
 // 'Hello, This is guy.'の文字列から' ,.'を区切り文字とし、
 // 'Hello','This','is','guy'の各文字トークンを取得する。

 lText := 'Hollo, This is guy.';
 while (lText <> '') do
 begin
  lToken := _GetToken(lText, ' ,.');
  if (lToken = '') then
   Break;
  Memo1.Lines.Add(lToken);
 end;
end;

関連書籍


Copyright guy@かしらもんじ でぇ〜

続きを読む
posted by guy at 08:38 | 文字列操作編

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。