Q&A

  • 스트링의 몇 번째 문자를 빠르게 알아내는 방법이 있을까요?
안녕하세요.
  s: string;
이 있고 예를들어 s := 'abcdefg'인 경우에요, s[1]은 'a', s[2] 은 'b',...이런 식이 되잖아요. 그런데 이런 식으로 스트링에 접근을 하는 것은 속력이 많이 느린 것 같습니다. 스트링의 몇 번째 문자를 빠르게 알아내는 방법이 없을까요??? 메모리를 직접참조해서 어떻게 하면 될 것 같기도 한데.... 고수분들께서 도와주시면 정말 감사하겠습니다.
3  COMMENTS
  • Profile
    민스맘 2005.08.18 00:36






    pos 함수를 사용해보세요
  • Profile
    델티즌 2005.08.18 00:26
    배열 또는 스트링에서 님이 s[1] 이런식이 직관적입니다. 속도는 차이가 별로 업구요.
    구체적으로 어떤 핸들링 또는 기능이 필요한지 자세히 알려주시면 답변드리겠습니다.
    처리 기능에 따라 어셈블 루틴을 쓰시는게 나을것 같습니다.

  • Profile
    임형준 2005.08.18 04:20


    우선 이렇게 답변을 해 주시니 정말 감사합니다. ㅠㅠ
    제 프로그램은 대략 이렇습니다.
    TClass = class(TObject)
      public
       childrenList: TList;
       value: string;
       ......

    이런 식으로 클래스가 정의되어 있고 이 클래스의 parent, Child라는 인스턴스가 있고, Child는 parent의 childrenList에 들어가 있습니다.
    제가 하려는 것은 Child가 Parent.ChildrenList의 첫번째 오브젝트이면 value[1]을 얻어내고, 두번째 오브젝트이면 value[2]를 얻어내고.... 하려고 합니다.
    대충 Parent.value[Parent.ChildrenList.IndexOf(Child)+1]
    이런식으로요... 근데 이런 작업을 굉장히 여러번 반복을 (이것은 프로그램의 기능상 어쩔 수가 없어요) 해야하는데,  Parent.value[index+1] 요 함수만 들어가면 느려집니다. 임의의 값 '1' 같은걸 테스트용으로 넣어보면 느려지지 않는데 말이지요...

    p.s 어셈블 루틴이라는 것은 처음 들어봤는데 어떻게 사용하는 건가요? 델파이 헬프에서 찾아봤는데 못 찼겠습니다