FreeBASIC マニュアルのトップに戻る

FreeBASIC ASC

目次→実行時ライブラリー参考→文字列関数ASC←オリジナル・サイト

ASC 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

指定文字に対応する、ASCIIかユニコードの整数表示を返します。

構文:
declare function Asc ( byref str as const string, byval position as integer = 1 ) as ulong
declare function Asc ( byval str as const zstring ptr, byval position as integer = 1 ) as ulong
declare function Asc ( byval str as const wstring ptr, byval position as integer = 1 ) as ulong

用法:
result = Asc ( str [, position ] )

パラメタ:
str
ソース文字列。
position
文字の、文字列の中での位置。

戻り値:
strposition 位置に保存された、生の文字の値。
コンパイル時に strposition の両方を評価できる場合(Asc("a")Asc(chr(97))Asc("abc", 2)...など)、値は uinteger の結果で返されます。 あるいは ulong の結果になります。

記述:
str が、StringZString の場合は、その positionUByte 値が返されます。
これは、str に格納された文字列データに応じて、7 ビットの ASCII コードか、あるいは、いくつかのコードページから、同等の 8 ビット文字値となります。

strWString なら、その position の、UShort (Windows) か ULong (Linux) の値が返されます。
これは、Windows では 16ビットの値(Windows では WStrings は UTF16 を使う)で、Linux では32ビット値(Linux では WStrings は UTF32 を使う)になります。

str で、文字列が、文字数ゼロの文字列であれば、関数は、ゼロ(0)を返します。
また、position 位置が、1(1)未満であるか、または、position 位置が、文字数より大きいときも、関数は、ゼロ(0)を返します。

Chr は、ASCII文字列のための反対の関数です。WChr は、ユニコード文字列のための反対の関数です。
それぞれ、引数として渡されたコードによって表される文字を入れた文字列を、返します。

例: このコードは ShiftJIS で保存して実行して下さい。
Dim WStringStr As WString * 100

Print "the ascii code of 'a' is:"; Asc("a")
Print "the ascii code 97 is:"; Chr(97)
Print "the ascii code of 'b' is:"; Asc("abc", 2)
Print "the ascii code 98 is:"; Chr(98)
WStringStr = "愛"
Print "the ascii code of '愛' is:"; Asc(WStringStr)
Print "the ascii code 24859 is:"; WChr(24859)
WStringStr = "藍"
Print "the ascii code of '藍' is:"; Asc(WStringStr)
Print "the ascii code 34253 is:"; WChr(34253)
Sleep


とすると、以下のように出力されるでしょう:

the ascii code of 'a' is: 97
the ascii code of 'b' is: 98


ユニコードの例
(文書エディタでの注意: %%(qbasic)マークの中に置かないでください。さもないと、ロシア文字は見えなくなるでしょう!)
渡辺注:どのマシン上でも、すべてのユニコード文字を見せることができる、というわけではありません。利用できる文字は、実行画面(コンソール)で現在使用中のフォントに依存します。
ソース・コード(.bas ファイル)は、UNICODE(UTF16LE BOM) で保存します。
dim a as wstring * 12
a = "Привет, мир"
print "the Unicode of the second char of " & a & " is: " & asc(a, 2)
sleep

は以下のように出力されます:
注:全角文字列を表示するために、コマンド プロンプトのタイトルバーを右クリックしてプロパティを表示させて、右下画面のように、フォントを、「MS ゴシック」に変更します。
the Unicode of the second char of Привет, мир is: 1088

ユニコードの例(追加)
Dim a As WString * 11
a = "Привет, мир"
Print "文字列 " & Space(Len("文字列 ")) & a & Space(Len(a))
Print "の2番目の文字のユニコードは: " & Space(Len("の2番目の文字のユニコードは: ")) ; Asc(a,2)
Print "ユニコード 1088 の文字は: " & Space(Len("ユニコード 1088 の文字は: ")) ; WChr(1088) & Space(1)
Print
a = "真"
Print "文字 " & Space(Len("文字 ")) & Chr(34) & a & Chr(34) & " のユニコードは: " & Space(Len(" のユニコードは: ")) ; Asc(a)
Print "ユニコード 30495 の文字は: " & Space(Len("ユニコード 30495 の文字は: ")) ; WChr(30495) & Space(1)
Print
Print "文字 " & Space(Len("文字 ")) & "Φ" & Space(Len("Φ")) & " のユニコードは: " & Space(Len(" のユニコードは: ")) ; Asc("Φ")
Print "ユニコード 934 の文字は: " & Space(Len("ユニコード 934 の文字は: ")) ; WChr(934) & Space(1)

Sleep
 
とすると、以下のように出力されるでしょう:

ユニコードの例

注:日本語 Windows 標準設定の、コマンド プロンプトの「ラスターフォント(Raster font ビットマップ・フォント)」では、Print で、ユニコードの文字を表示しようとすると、半角ベースの幅しか確保しません。このため、全角の文字を含む文字列を表示すると、右端が欠落します。
 上の例のコードでは、文字数だけ、空白を、Space で追加して、表示させる幅をかせいでいます。
 ユニコード のソース・コード(.bas ファイル)で、WString の全角文字の Print を補助する、ユーザ定義関数 Expand もあります。

注意:FbEdit の最新バージョン(1.0.7.6c)では、UNICODE のファイルを保存すると、不要な文字が入るバグが有ります。
このため、UNICODE のコードを扱う場合は、FbEdit バージョン(1.0.7.4)か、FreeBasic IDE-poseidonFB か、FreeBasic IUP_FB_EDITOR を使って下さい。
 
コマンド プロンプトのタイトルバーを右クリックしてプロパティを表示  コマンド プロンプトのタイトルバーを右クリックしてプロパティを表示させて、右画面のように、フォントを、「MS ゴシック」に変更すれば、プログラムで細工しなくても、素の print で全角文字列を表示できます。
 これも、2ちゃんねるの、「デフォルトの名無し」さんに教えていただきました。


プラットホーム差:
QBからの違い:

参照:
文字列関数に戻ります。
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2022-01-30 01:03:57
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

ホームページのトップに戻る

表示-非営利-継承