初めまして、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;
procedure TForm1.Button1Click(Sender: TObject);
var
S:string;
C:Char;
begin
S := 'abc';
C := S[1];
ShowMessage(C);
end;
こんなのでどうでしょう?
でもstring[index]で文字を取得出来るのでこれでいいんでは?
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;
LupinⅢ様、Halbow様 早速のご回答誠にありがとうございます。
>LupinⅢ様
string[index] で1文字取得できるというのは全くの盲点でした。
普段はVBばかり触っていたので、創造できませんでした。
>Halbow様
同じく数字だけを集める、というやり方も思いつきませんでした。
ぜひこちらの方法も、試させて頂きたいと思います。
現在職場でDelphiを勉強しているので、月曜日に出社次第、早速
試してみたいと思います。 ありがとうございました。
上記ご教示頂いた方法で、無事関数を思い通りに動かすことができました。
ありがとうございました。
ツイート | ![]() |