Delphi Tips 
-----------------------------

0309  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 2001/05/25 濱野 rev 1.6
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 2001/06/02 K.Takaoka 編集
トークンの切り出し

Delphiのライブラリにはstrtokのようなトークンの切り出し
を行なう関数や手続きが無い為、自作することになります。

以下のコードはCopyとIsDelimiter関数を使ったトークンの
切り出し例です。


{$APPTYPE CONSOLE}
program Typing;
uses
    SysUtils;
  
procedure TypingToken(S, Delims: String);
  var
      TokenIn : Boolean; // 進行中であるかのフラグ
      TokenS, TokenLen, // トークンの開始位置と長さ
      I: Integer;
  begin
      TokenIn := False;
      TokenS := 0;
      TokenLen := 0;
      for I := 1 to Length(S) do
      begin
          if not IsDelimiter(Delims, S, I) then begin
              if TokenIn then
                  Inc(TokenLen)
              else begin
                  TokenS := I;
                  TokenLen := 1;
                  TokenIn := True
              end
          end else begin
              if TokenIn then begin
                  Writeln(Copy(S, TokenS, TokenLen));
                  TokenIn := False;
                  TokenLen := 0;
              end
          end
      end;
      if Tokenlen > 0 then
          Writeln(Copy(S, TokenS, TokenLen));
  end; { TypingToken }
const
  Delims = #9#10#13'[](){};, ';
var
  Buf: String;
begin
  while not EOF(Input) do begin
      Readln(Buf);
      TypingToken(Buf, Delims)
  end
end.


※リダイレクトしない場合、最後に[Ctrl]+[Z]を入力
して下さい。
参照: <文字列> <PASCAL>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp