Q&A

  • java의 stringtokenizer같은 함수가 있나요?
안녕하세요.. 델파이에 입문한지 얼마 안된 초보입니다..

java나 C++에서 보면 string을 일정한 규칙으로 자를 수 있잖아요.
stringtokenizer같은..

이러한 함수가 delphi에서는 어떤게 있는지;; 잘 모르겠어서요..

열심히 찾아보고는 있는데;; 아직 찾지 못했고.. 시간이 정해진 일을 하는 중이라.. 급하게 도움을 청합니다..

아시는 분이 계시면 답변..부탁드리겠습니다.

어떤 함수인지 그리고, 일정한 규칙을 정하는것을 어떻게 해야 하는지...를 알고 싶습니다.

꼭.. 부탁드립니다..


3  COMMENTS
  • Profile
    김영대 2003.04.01 05:45
    // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다
    // Delphi 에는 TParser 가 있습니다

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation
    {$R *.dfm}

    procedure ParseThis(MyStr: String);
    var
      MyParser: TParser;
      MS: TMemoryStream;
    begin
      MS := TMemoryStream.Create;
      MS.Position := 0;
      MS.Write(MyStr[1], Length(MyStr));
      MS.Position := 0;
      MyParser := TParser.Create(MS);
      MyStr := MyParser.TokenString;
      ShowMessage(MyStr);
      while MyParser.Token <> toEOF do
      begin
        MyParser.NextToken;
        if MyParser.TokenSymbolIs(MyParser.TokenString) then
        begin
          MyStr := MyParser.TokenString;
          ShowMessage(MyStr);
        end;
      end;
      MyParser.Free;
      MS.Free;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ParseThis('Now is the time for all men to come to the aid of their country.');
    end;

    end.
  • Profile
    shyuna 2003.04.02 20:16
    TParser를 사용할 경우..
    한글은 인식 못하는 거 같은데..

    다른 방법이 없을까요..;ㅁ;


  • Profile
    김영대 2003.04.03 21:30
    // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다
    // 정말로 그렇네요...
    // TParser는 도움말이 없어서 되는줄 알았는데...
    // 아래 소스를 참고해 보세요

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;

    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Memo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    type
      TToken = record
        word: String; // word(token)
        start: integer; // word의 시작 위치
        len: integer; // word의 길이
      end;

    const
      Delimiters = '?=@+;!.,?_/~&[]<>#`{}:$%^&()*;" '+#9#10#13#44#46#59;

    var
      Form1: TForm1;

    implementation
    {$R *.dfm}

    function GetTToken(const text: string; var Token: TToken; var index: integer): Boolean;
      function isDelimiter(const c: char): boolean;
      begin
        Result := Pos(c, delimiters) > 0;
      end;
    var
      TextLength: integer;
    begin
      with Token do
      begin
        TextLength := length(text);

        // 연속하는 구분자들을 skip 한다
        start := index;
        while isDelimiter(text[start]) and (start < TextLength) do
          inc(start);

        // 더이상 token 없음
        if start > TextLength then
        begin
          word := '';
          Result := false;
          exit
        end;

        // token을 구한다      
        len := start;
        while not isDelimiter(text[len]) do
          inc(len);
        len := len-start; // 길이
        word := copy(text, start, len); // token
        index := start+len; // 시작위치

        Result := word <> '';
      end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      index: integer;
      token: TToken;
    begin
      index := 1; // 검사시작위치
      while GetTToken(Edit1.Text, token, index) do
        Memo1.Lines.add('토큰:'+token.word+
                        ',  시작위치:'+inttostr(token.start)+
                        ',  길이:'+inttostr(token.len));
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.Text := ',김영대,우하하;3455;"howto"';
    end;

    end.

    • 강동균
    • 2003.04.01 22:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 강동균
      2003.04.02 03:33
      이권순[허준]님께서 델코에 올리신 답이었습니다. 작업중에 갑자기 ToolTip이나 디버깅시 값이 안보이...
    • 황영신
    • 2003.04.01 21:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신연근
      2003.04.03 20:45
      콤포넌트 관련해서 AcroEdit를 만드신 김성동님의 홈페이지에 콤포넌트 만들기 강좌있습니다. 참고하시...
    • 안기연
    • 2003.04.01 20:26
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2003.04.01 23:48
      프리뷰가 오버레이를 말씀하시는것인지... 체널 설정두 가능해야 하나요... 그럼 ..그정도 기능을 컴포...
    • 안기연
      2003.04.02 01:34
      답변해 주셔서 감사합니다. 질문 전에 dspack에 예제가 있어 Test를 해 봤는데 overlay(preview)가...
    • 거리
      2003.04.05 02:03
      TVCard를 사용하신다구요? 참 신기하게 지금 제가 하는일과 일치하네요..ㅋㅋㅋ 모드가 두가지가 있더...
    • 아폴론
    • 2003.04.01 19:38
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정종필
      2003.04.03 01:36
      델파이 인스톨 하시면.. scktsrvr.dpr 을 찾아서 그걸 열어 보세요.. scktsrvr.exe 가 하는게 궁금하시다...
    • 델사랑
      2003.04.03 09:10
    • 문의득
    • 2003.04.01 18:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신현숙
      2003.04.01 19:15
      안녕하세요..얼마전에 xp에서 com으로 출력때리다가 속도땜시 2~3달 고생한 적이 있어 글을 적습니다. LP...
    • 신석기
    • 2003.04.01 07:08
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 한영관
      2003.04.02 20:53
      Random 을 쓰세요... var   n, i : integer; begin   ListBox1.clear;  &...
    • 최용일
      2003.04.01 18:39
      안녕하세요. 최용일입니다. 11개 중에서 중복없이 5개를 뽑는 순열이네요... 11P5 수학책을 찾아보...
    • 김영대
      2003.04.01 09:39
      // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다   // 그냥 예제를 찾아 실행...
    • 김희곤
    • 2003.04.01 06:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      2003.04.01 09:33
      // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다   ShellExecute(Handle,'o...
    • shyuna
    • 2003.04.01 05:42
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      2003.04.01 05:45
      // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다 // Delphi 에는 TParser 가 있습니다 ...
    • shyuna
      2003.04.02 20:16
      TParser를 사용할 경우.. 한글은 인식 못하는 거 같은데.. 다른 방법이 없을까요..;ㅁ;
    • 김영대
      2003.04.03 21:30
      // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다 // 정말로 그렇네요... // TParser는 ...
    • nilriri™
      2003.04.01 18:41
      frmFind := TfrmFind.Create(application); 을 frmFind := TfrmFind.Create(nil); 혹은 frmFind := TfrmF...
    • ▦마당쇠(오정민)
      2003.04.01 19:35
      우선답변 감사 드립니다. 님께서 해보라고 하신데로 해보아도 결과는 마찬가지 입니다. 무엇때문에 그러...
    • 이용훈
    • 2003.04.01 02:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.04.01 03:31
      안녕하세요. 최용일입니다. 클릭했을때 뜨는 컴포넌트 에디터폼은 그냥 델파이 폼으로 만드시구요. 컴포...
    • 서정길
    • 2003.03.31 23:28
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영대
      2003.04.01 05:58
      // 안녕하세요  김영대(http://www.howto.pe.kr) 입니다   Windows Socket API 말...
    • 서정길
      2003.04.01 19:01
      고맙습니다 김영대님 서점에 가서 찾아봐야겠네요... 영...맨땅에 헤딩하다가 지푸라기 잡은 심정이...
    • 최용일
      2003.04.01 01:04
      안녕하세요. 최용일입니다. 뭐 관리야 하는 사람 맘이겠지만... 저는 Source와 Binary를 따로 관리합니...
    • 정혜진
      2003.04.01 02:52
      역시 Library Path에 소수만 넣어 두는게 좋을거 같네요. 도움에 감사 드립니다.
    • 이수환
    • 2003.03.31 21:41
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.04.01 02:51
      안녕하세요. 최용일입니다. 제가 간단히 테스트 해봤는데... 잘 되는데요... IdUDPServer.Active가 T...
    • 이수환
      2003.04.01 03:54
      이상하게 저는 안되네요  ㅜㅜ 델6에 있는 Indy로 해봤구요 델파이 폴더의 ....DemoIndy 에 있...
    • 최용일
      2003.04.01 05:15
      안녕하세요. 최용일입니다. Indy의 UDPClientServer프로그램가지고 똑같이 해봤는데... 잘 되는군요... ...
    • 김동민
    • 2003.03.31 21:36
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2003.04.01 01:09
      안녕하세요. 최용일입니다. 에러 내용만으로는 무엇이 문제인지 전혀 알길이 없네요... OpenDialog이...
    • 강동섭
    • 2003.03.31 21:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_BaSTaD
      2003.03.31 23:41
      ==> 제가 예전에 만들어놓은 Thread를 이용한 Mailer 예제를 자료실에 올렸습니다.. 참고하세요..
    • KDDG_BaSTaD
      2003.04.01 00:32
      >안녕하세요 델파이를 이제 막 시작한 초보 델피언입니다.. >델피언이라고 하기에도 챙피한 수준이지만......