Str型の1文字をChar型へ変換する方法について

解決


りょーちん  2003-10-25 03:01:37  No: 5415

初めまして、Delphi初心者のりょーちんと申します。

現在、下記のような関数を作成して、文字列から数字以外の文字を取り除く
処理をさせてようとしています。

1文字づつ確認して、数字以外ならば文字を組み立てない、という処理に
しているのですが、そうするとstr型をchar型に変換する必要がでてきました。

ヘルプや過去ログを参照して、下記のようにコーディングしてみましたが、
やはりうまく動かすことができません。

str型の1文字をchar型に代入するにはどうすればよいのでしょうか??

初心的な質問で大変恐縮ですが、どうかお知恵をお貸し下さい。

宜しくお願い致します。

function CutStr(strCutStr : String):String;
var
  i : integer;
  tmpS : string;
  tmpC : Char;

begin
// 文字列から数値以外の文字を取り除きます。

  for i := 1 to Length(WideString(strCutStr)) do
  begin
    tmpS := Copy(strCutStr,i,1);
    // Str型からChar型へ変換
    StrPLCopy(tmpC, tmpS, 1);
    if tmpC in ['0'..'9'] Then
    Result := Result + tmpS;
  end;

end;


LupinⅢ  URL  2003-10-25 03:16:47  No: 5416

procedure TForm1.Button1Click(Sender: TObject);
var
   S:string;
   C:Char;
begin
   S := 'abc';
   C := S[1];
   ShowMessage(C);
end;
こんなのでどうでしょう?
でもstring[index]で文字を取得出来るのでこれでいいんでは?


Halbow  2003-10-25 04:21:17  No: 5417

Halbow です。

>// 文字列から数値以外の文字を取り除きます。

数字以外を取り除くことより、数字だけを集めた方が簡単ですよ。

function GetNumChars(const s:string):string;
var
  ws:WideString;
  i:integer;
begin
  ws := s;
  result := '';
  for i := 1 to Length(ws) do
    if Ord(ws[i]) in [$0030..$0039] then result := result+ws[i];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := GetNumChars(Edit1.Text);
end;


りょーちん  2003-10-26 11:15:05  No: 5418

LupinⅢ様、Halbow様  早速のご回答誠にありがとうございます。
>LupinⅢ様
string[index] で1文字取得できるというのは全くの盲点でした。
普段はVBばかり触っていたので、創造できませんでした。

>Halbow様
同じく数字だけを集める、というやり方も思いつきませんでした。
ぜひこちらの方法も、試させて頂きたいと思います。

現在職場でDelphiを勉強しているので、月曜日に出社次第、早速
試してみたいと思います。  ありがとうございました。


りょーちん  2003-10-27 19:47:55  No: 5419

上記ご教示頂いた方法で、無事関数を思い通りに動かすことができました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加