文字列をトークンに分けるには?

解決


めぐ  2002-09-13 00:09:44  No: 1482

文字列をトークンに分けるには、どうしたらいいのでしょうか?
一文字ずつ見ていくしかないのでしょうか?
関数などがありましたら、教えてほしいです。

よろしくお願いします。


たかみちえ  URL  2002-09-13 01:58:54  No: 1483

トークン切り出しというのがどういうものなのか、
いまいちまだわからないんですけど、
http://member.nifty.ne.jp/kirikiri/
ここにC言語のstrtok風関数ユニットって言うのがありました。

  トークン切り出しって、普通に訳すと、"単語を切り出す"ってことになるんでしょうけど、
それならPosじゃだめなのん?
デリミタ文字を使えると言うことは、違うのかな?

  よくわからないです(^_^;)返信ついでに、ちょっと教えてくださると助かります(^^ゞ


にしの  2002-09-13 03:01:19  No: 1484

ちょっと離れてしまうかもしれませんが・・・

やる気と根気があるならば、lexとyaccで切り出す手もあります。
http://www2.big.or.jp/~osamu/Delphi/
こちらに、Pascal版lex&yaccを、Delphiで使用できるようにしたものがあります。

オライリーからLex&Yaccという本も出ています。ただし、これはC言語ですが。


めぐ  2002-09-13 03:18:58  No: 1485

たかみちえさん、レスありがとうございます。

この関数を探してました。
やっぱり標準では付いていないんですね。

Posという関数を知らなかったので出来なかったのですが、
切り出す文字が多いと、この関数は重宝します。
'2002/09/09 18:15:20'
を数値だけに切り出したいと思うとき、Posでやると大変だと思いません?
デミリタ文字は複数指定できるので、
'/ :'のように指定できます。

Cの方ではそうでした。
strtok風ので質問なのですが、constに代入することってできるんですか?

説明下手ですみません。わかってもらえると嬉しいです。


にしの  2002-09-13 03:25:04  No: 1486

日付だけに関して言えば、
StrToDateTime
DecodeDate
DecodeTime
で出来ますよ。


めぐ  2002-09-13 03:27:53  No: 1487

にしのさん、レスありがとうございます。

たかみちえさんの方で20分くらい考えてしまったら...<(__)>
説明するの下手なんです。

lex&yaccというものがどういうものなのかわからないので
今回はちょっと難しいです。すいません。

でも、このあとCの方を使うので、こういうのがあるんだなと使えそうです。

ありがとうございました。


めぐ  2002-09-13 03:35:54  No: 1488

にしのさん、ありがとうございます。

今回の場合、Posでも平気だったのですが、
説明のために日付を使わせてもらったのです。

説明不足だった見たいで、本当にごめんなさい。m(__)m


たかみちえ  URL  2002-09-13 06:57:50  No: 1489

なるほど、ちょっとかわった使い方をするんですね。

  TStringListを使って、そんなことをやっていたんですけど、
これは使えそうですね。

  VBのSplitのような関数(区切り文字で区切って、配列を作る関数です)が無く、不便していたんですけど、
これで解決です。
こちらこそありがとうございます♪


めぐ  2002-09-13 18:39:28  No: 1490

自己レスです。

constに代入できるのは、コンパイラによってできるようです。

私のマシーンでは出来ませんでした。
constで宣言してあるものをグローバル変数にすればできると思います。


たかみちえ  URL  2002-09-14 21:04:22  No: 1491

> constに代入できるのは、コンパイラによってできるようです。
  コンパイラオプションで指定すればできるみたいです。
プロジェクトオプションで設定できるんですけど、
多分ユニット単位でもできるんでしょうね。
じゃ無いとあんまり使いようがなくなってしまいますから。
いったんオプションで、"型つき定数(constに代入すること)への代入"をチェックして見ると、何かわかるかもしれません。

  でも、もしできないのなら、グローバル変数にしてしまったほうがいいと思います。

  VBではstatic変数といって、関数を出ても変数の内容が保持される変数があるんです。
そのあたりの説明は、ここにあります。いちおう。
http://www.wwlnk.com/boheme/top.html
興味があったら見てみてください。


めぐ  2002-09-17 23:12:39  No: 1492

たかみちえさん、ありがとうございます。

> いったんオプションで、"型つき定数(constに代入すること)への代入"をチェッ> クして見ると、何かわかるかもしれません。

確かに出来ました。

> > constに代入できるのは、コンパイラによってできるようです。

確認不足でした。調べた記事をちゃんと解釈できてなかったみたいです。
コンパイラの指定でできると書いてありました。

失礼しました。


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








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