Q&A

  • pos 함수의 변형
일반적으로 pos   함수는
알고 싶은 문자의 첫번째 위치를 가져오는 걸로 알고 있습니다.

그것을 세번째 위치를 가져오게 할수는 없는지요?
6  COMMENTS
  • Profile
    프리맨 2004.05.04 19:39
    StrPos를 써보세요.

    function StrPos(const Str1, Str2: PChar): PChar;

    StrPos는 PChar를 사용하기 때문에 임의의 위치부터 찾을수 있습니다.


    예:)

    var
      p:PChar;
      i:Integer;
    begin
      p:=StrPos(PChar(str),'**');            // 문자열 str에서 '**'를 찾습니다.
      if p<>nil then p:=StrPos(p+2,'**');  // 두번째 찾고...
      if p<>nil then p:=StrPos(p+2,'**');  // 세번째 찾고...

      if p=nil then exit;             // 못찾은 경우

      i:=p-PChar(str)+1;          // 찾은 위치의 인덱스 계산할
  • Profile
    김철홍 2004.05.04 18:54
    그냥 허접하게 만들어봤네요. Str이라는 문자열에서 '1'이라는 문자를 찾으려고 할때 3번째 문자의 위치를 가지고 오는 거랍니다.
    설명을 덧붙이자면 해당 문자의 위치를 찾을때마다 찾고자하는 문자를 다른 문자로 바꿔주면 다음에 찾고자 하는 문자가  나오면 위치가 Pos라는 함수에서 찾는 첫번째 위치가 되므로 원하는 위치를 찾을수 있겠지요.
    제가 아직은 델파이 초보라.. 그래도 아쉬운데로 써보세요

    procedure TForm1.Button1Click(Sender: TObject);
    var
        nPos : Integer;
        nCnt : Integer;
        str : String;
    begin
        Str := '000100100001000100001000';
        nCnt :=1;
        while Pos('1', Str) > 0 do begin
            nPos := POS('1', Str);
            Str[Pos('1', Str)] := '0';
            if nCnt = 3 then begin
                Edit3.Text:= InTtoStr(nPos);
                exit;
            end;
            Inc(nCnt);
        end;
    end;





  • Profile
    김도형 2004.05.04 02:59


      nPos := pos( 's' , sStr ) + 2;

    이렇게 하면 어떨까요 ^^;;

    답변이 되지 않았다면 죄송합니다...
  • Profile
    미러 2004.05.04 03:01
  • Profile
    김도형 2004.05.04 03:21


    procedure TForm1.Button1Click(Sender: TObject);
    var
      sStr : string;
      nI   : integer;
      Lst_Imsi : TStringList;
    begin

    sStr := '0000s000s00s1111';
    Lst_Imsi := TStringList.Create;
    Lst_Imsi.clear;
    ExtractStrings([ #115 ], [ ], PChar(sStr), Lst_Imsi);

    showmessage( inttostr( length( Lst_Imsi.Strings[ 0 ] + Lst_Imsi.Strings[ 1 ] +  Lst_Imsi.Strings[ 2 ] ) + 3 ));

    end;

    그럼 이건 어떨까요 ^^;;
  • Profile
    김도형 2004.05.04 03:28
    procedure TForm1.Button1Click(Sender: TObject);
    var
      sStr : string;
      nI , nC  : integer;
      Lst_Imsi : TStringList;
    begin

    sStr := '0000s000s00s1111';
    nC := 0;
    for nI := 1 to length(sStr) do
       if copy(sStr , nI , 1) = 's' then begin
         inc(nC);
         if nC = 3 then showmessage( inttostr(nI) );
       end;

    end;

    아니면 이거는요  ^^;;; 흠.. 넘 노가다인가...
    • 뭉치
    • 2004.05.05 02:39
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박수영
      2004.05.06 17:56
      보통은 DB의 패스워드는 건드리지 않고 user 테이블을 하나 두어서 관리를 하던구요...디비의 패스워드...
    • 정승운
      2004.05.05 02:44
      DB를 외부에 노출시킴으로서 발생되는 문제입니다. 실제로 id나 암호가 노출되는 문제보다 외부에서 직접 ...
    • 미소^^
      2004.05.05 03:59
      ..
    • 이선행
    • 2004.05.05 02:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김철홍
      2004.05.06 19:27
      999\.999\.999\.999;1 마지막 부분에서   .\999;1이 아니고 \.999;1 으로 써야겠지요.
    • 엄문용
    • 2004.05.05 01:23
    • 1 COMMENTS
    • /
    • 0 LIKES
    • [勳]후니
      2004.05.06 18:13
      시리얼 통신쪽을 공부 하셔야 할꺼 같네요.. 우선 통신에선 일반적으로 네트워크를 이용하여 소켓 통신...
    • 너구리
      2004.05.05 01:31
      이와 관련된 답변은 많이 있습니다. Sender로 찾으셔도 나올거 같구요.. 아니면 Components로 찾으셔...
    • Crazy
      2004.05.05 02:02
      1) for i := 0 to ComponentCount - 1 do    begin       &nbs...
    • 조우택
    • 2004.05.04 23:30
    • 0 COMMENTS
    • /
    • 0 LIKES
    • help me
    • 2004.05.04 19:07
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김진용
      2004.05.04 22:04
      procedure TForm1.SortStringgrid(Grid: TStringGrid; byColumn: LongInt;  ascending: Bool...
    • help me
      2004.05.05 01:13
    • Crazy
      2004.05.05 02:59
      이건 이해가 가실지??? 델파이코딩이 아니라 pl-sql 이거든요? 로직보시면 아실겁니다. 참고로 p_GUBUNS...
    • 김철홍
      2004.05.04 19:10
      제가 잘은 모르지만 2000이나 XP에서 잘 돌아간다면 그건 OS의 문제가 아닌거 같은데요. 실행시키는데 문...
    • 홍봉기
    • 2004.05.04 17:58
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김철홍
      2004.05.04 17:56
      잘하셨는데요.. 다만 실행시키고 보이지 않는 건  Form Size가 너무 작아서 그런거랍니다. form...
    • 영원한초짜
      2004.05.04 23:31
      우선 잘했다고 칭찬까지 해주셔서 무척 감사드리고 답변주셔서 감사 드립니다 (__*) 그런데 저는 아래...
    • 최용일
      2004.05.05 00:59
      안녕하세요. 최용일입니다. 맨 마지막 줄에서 폼을 띄워주세요... procedure TForm1.FormCreate(Send...
    • 영원한초짜
      2004.05.05 02:35
      질문올리기전 해볼 것은 이것저것 다 해봤는데.. (제가 아는 한도까지 ^^) 왜 안되는지 몇시간동안 델파...
    • 맑은물
    • 2004.05.04 12:19
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Crazy
      2004.05.05 03:05
      답변이라기 보다는 그럼 아싸리 퀵리포트 폼에 쿼리 하나 두고서 그 쿼리에 값을 출력할 자료만 넣는것은 ...
    • 성지현
    • 2004.05.04 04:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 프리맨
      2004.05.04 20:12
      Class는 붕어빵 기계(?) 입니다. 여기에 밀가루 반죽(리소스)을 넣고 구으면.. 붕어빵(인스턴스)이 나...
    • 너구리
      2004.05.04 20:40
      붕어빵기계의 상위 클래스 빵기계 클래스가 있습니다. 빵기계 클래스에는 내용물변수와 틀모양변수와 (C...
    • 김민웅
    • 2004.05.04 04:05
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 미러
    • 2004.05.04 02:45
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 프리맨
      2004.05.04 19:39
      StrPos를 써보세요. function StrPos(const Str1, Str2: PChar): PChar; StrPos는 PChar를 사용하기 ...
    • 김철홍
      2004.05.04 18:54
      그냥 허접하게 만들어봤네요. Str이라는 문자열에서 '1'이라는 문자를 찾으려고 할때 3번째 문자의 위치를 ...
    • 김도형
      2004.05.04 02:59
        nPos := pos( 's' , sStr ) + 2; 이렇게 하면 어떨까요 ^^;; 답변이 되지 않았다면 ...
    • 미러
      2004.05.04 03:01
    • 김도형
      2004.05.04 03:21
      procedure TForm1.Button1Click(Sender: TObject); var   sStr : string;   nI...
    • 김도형
      2004.05.04 03:28
      procedure TForm1.Button1Click(Sender: TObject); var   sStr : string;   nI , n...
    • 박수영
    • 2004.05.04 01:51
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2004.05.04 02:23
      procedure TForm1.Button1Click(Sender: TObject); var   Rect : TRect; begin   ...
    • 박수영
      2004.05.05 00:18
    • 홍길동
    • 2004.05.03 23:11
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 전대식
    • 2004.05.03 23:09
    • 0 COMMENTS
    • /
    • 0 LIKES