文字列をトークンに分けるには、どうしたらいいのでしょうか?
一文字ずつ見ていくしかないのでしょうか?
関数などがありましたら、教えてほしいです。
よろしくお願いします。
トークン切り出しというのがどういうものなのか、
いまいちまだわからないんですけど、
http://member.nifty.ne.jp/kirikiri/
ここにC言語のstrtok風関数ユニットって言うのがありました。
トークン切り出しって、普通に訳すと、"単語を切り出す"ってことになるんでしょうけど、
それならPosじゃだめなのん?
デリミタ文字を使えると言うことは、違うのかな?
よくわからないです(^_^;)返信ついでに、ちょっと教えてくださると助かります(^^ゞ
ちょっと離れてしまうかもしれませんが・・・
やる気と根気があるならば、lexとyaccで切り出す手もあります。
http://www2.big.or.jp/~osamu/Delphi/
こちらに、Pascal版lex&yaccを、Delphiで使用できるようにしたものがあります。
オライリーからLex&Yaccという本も出ています。ただし、これはC言語ですが。
たかみちえさん、レスありがとうございます。
この関数を探してました。
やっぱり標準では付いていないんですね。
Posという関数を知らなかったので出来なかったのですが、
切り出す文字が多いと、この関数は重宝します。
'2002/09/09 18:15:20'
を数値だけに切り出したいと思うとき、Posでやると大変だと思いません?
デミリタ文字は複数指定できるので、
'/ :'のように指定できます。
Cの方ではそうでした。
strtok風ので質問なのですが、constに代入することってできるんですか?
説明下手ですみません。わかってもらえると嬉しいです。
日付だけに関して言えば、
StrToDateTime
DecodeDate
DecodeTime
で出来ますよ。
にしのさん、レスありがとうございます。
たかみちえさんの方で20分くらい考えてしまったら...<(__)>
説明するの下手なんです。
lex&yaccというものがどういうものなのかわからないので
今回はちょっと難しいです。すいません。
でも、このあとCの方を使うので、こういうのがあるんだなと使えそうです。
ありがとうございました。
にしのさん、ありがとうございます。
今回の場合、Posでも平気だったのですが、
説明のために日付を使わせてもらったのです。
説明不足だった見たいで、本当にごめんなさい。m(__)m
なるほど、ちょっとかわった使い方をするんですね。
TStringListを使って、そんなことをやっていたんですけど、
これは使えそうですね。
VBのSplitのような関数(区切り文字で区切って、配列を作る関数です)が無く、不便していたんですけど、
これで解決です。
こちらこそありがとうございます♪
自己レスです。
constに代入できるのは、コンパイラによってできるようです。
私のマシーンでは出来ませんでした。
constで宣言してあるものをグローバル変数にすればできると思います。
> constに代入できるのは、コンパイラによってできるようです。
コンパイラオプションで指定すればできるみたいです。
プロジェクトオプションで設定できるんですけど、
多分ユニット単位でもできるんでしょうね。
じゃ無いとあんまり使いようがなくなってしまいますから。
いったんオプションで、"型つき定数(constに代入すること)への代入"をチェックして見ると、何かわかるかもしれません。
でも、もしできないのなら、グローバル変数にしてしまったほうがいいと思います。
VBではstatic変数といって、関数を出ても変数の内容が保持される変数があるんです。
そのあたりの説明は、ここにあります。いちおう。
http://www.wwlnk.com/boheme/top.html
興味があったら見てみてください。
たかみちえさん、ありがとうございます。
> いったんオプションで、"型つき定数(constに代入すること)への代入"をチェッ> クして見ると、何かわかるかもしれません。
確かに出来ました。
> > constに代入できるのは、コンパイラによってできるようです。
確認不足でした。調べた記事をちゃんと解釈できてなかったみたいです。
コンパイラの指定でできると書いてありました。
失礼しました。
ツイート | ![]() |