掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
全角文字を変数から一文字ずつ抽出するには? (ID:35319)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
以下の様な、検索の為に使う半角→全角変換ソフト (最終的には、検索に埋め込む関数にする予定)を作ってます。 環境は、WinXP SP3 TurboDelphi2006(無償版)です。 (ただ、Delphi3(OS:VistaビジネスSP1)でも使うことを前提に作ってます。) 半角→全角は問題無く動くまで出来たのですが、 全角を入力すると、s2{中身・} := sp^[i2{中身1}]{中身あ}; の部分が誤作動して、文字化けがおきてしまいます。 なので、全角文字を一文字ずつ識別して、 そこだけ変換せずにスルーする方法を探しています。 今の所、一文字づつ全角文字を抽出する方法が判らず、 立ち往生しています。 何か良い方法は無いでしょうか? お知恵をお貸し頂けると助かります。 それではよろしくお願いしますm(__)m。 var Form1: TForm1; PS: pchar; //...省略 function allocpchar(s: string): pchar; begin ps := stralloc(length(s) + 1); allocpchar := strpcopy(ps, s); end; //...省略 procedure TForm1.Button1Click(Sender: TObject); var i1,i2,i3,i4:integer; s1,s2,s3,s4,s5:string; sp:^string; begin i1 := length(edit1.Text) + 1; s1 := edit1.Text; sp := @s1; s4 := ''; i2 := 1; i3 := 0; i4 := Ord('ン'); while i1 > i2 do begin s2 := sp^[i2]; while i4 > i3 do begin s3 := allocpchar(char(i3)); case sp^[i2] of '0': s5 := '0'; '1': s5 := '1'; '2': s5 := '2'; '3': s5 := '3'; '4': s5 := '4'; '5': s5 := '5'; '6': s5 := '6'; '7': s5 := '7'; '8': s5 := '8'; '9': s5 := '9'; //...省略 end; if s2 = s3 then begin s4 := s4 + s5; edit1.text := s4; end; i3 := i3 + 1; end; i2 := i2 + 1; i3 := 0; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.