文章の文字を一字ずつアスキーコードに変換したいのですがどうしたらいいのでしょうか?VBだとアスキーコードから文字に変換できたはずなんですけどデルファイでは無理なのでしょうか?
アスキーコードでなくてもなんとかして文字列(数値ではなくてかなや英字など)を数値に置き換えることができるのでしょうか?
基本型と型キャストを勉強しましょう。
s:string = 'abcde'
s[1]=a
Byte(s[1])
Memo1.Lines.Add( 'a' );
Memo1.Lines.Add( Char(97) );
Memo1.Lines.Add( #97 );
Memo1.Lines.Add( #$61 );
Memo1.Lines.Add(Format('%d[%.2x]',[Byte('a'),Byte('a')]));
Ordを使用しましょう。
Helpより
S := 'The ASCII code for "c" is ' + IntToStr(Ord('c')) + ' decimal';
MessageDlg(S, mtInformation, [mbOk], 0, mbOK);
string型の中の1文字はCharと覚えましょう。
Widestring型の中の1文字はWCharと覚えましょう。
対応表
文字扱い 数字扱い
Char Byte 1バイト
WChar Word 2バイト
なるほどよくわかりました。ゑ様、kkk様、本当に有難うございました。
c := Byte(s[1]);
s[1] := Char(97);
のような書き方(キャスト)でも望む結果は出てきますが
Pascal/Delphiでは
c := Ord(s[1]);
s[1] := chr(c);
という書き方が一般的です。
参考)
http://www.borland.co.jp/qanda/delphi/d0002815.html
ツイート | ![]() |