C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[55588] Re:정성호님 질문이요,ㅠ
장성호 [nasilso] 1144 읽음    2008-12-28 20:52
이 질문 여러번 올리셨죠?

오늘에야 질문의 의도를 좀 파악한것 같네요

그림판얘기를 자꾸해서 윈도우s 그림판(mspaint.exe)을 띄우란 얘기인지 무슨말인지
몇번을 읽었어도 이해가 안되더군요.


TMemo의 Text에서 원하는 string을 찾아서 삭제하는 방법에 대한 질문이네요

먼저 첫번째 방법으로
AnsiStiring의 Pos 함수를 이용하여 원하는 string을 쉽게 찾을수 있습니다.
그런다음 AnsiStirng의 Delete함수를 이용하여 찾은 위치에서 원하는 길이만큼 삭제하면되구요
void __fastcall TForm2::Button1Click(TObject *Sender)
{
    String s=Memo1->Text;
    int iPos=s.Pos(Edit1->Text);
    if(iPos>0)
    {
        s.Delete(iPos,Edit1->Text.Length());
        Memo1->Text=s;
    }
}


위 방법은 찾는 문자열(string)이 여러개 있다고 하더라도
맨 처음 찾아지는것 한개만 삭제합니다.

여러개 같은 문자열이 있다면 반복해서 찾아서 삭제 해야 겠쬬
그러면 다음과 같이 하면 되겠죠~!
void __fastcall TForm2::Button3Click(TObject *Sender)
{
    String s=Memo1->Text;
    String sFindStr=Edit1->Text;
    int iPos=s.Pos(sFindStr);
    while(iPos>0)
    {
        s.Delete(iPos,sFindStr.Length());
        iPos=s.Pos(sFindStr);
    }
    Memo1->Text=s;
}


그런데 VCL의 Sysutils 유닛에 보면 StringReplace 라는 함수가 있습니다.
이 함수는 특정 string를 찾아서 대체 string으로 바꿔줍니다
ReplaceFlag 로 rfReplaceAll을 넘기면 모두 찾아서 바꿔주게 됩니다
void __fastcall TForm2::Button2Click(TObject *Sender)
{
    String s=Memo1->Text;
    s=StringReplace(s,Edit1->Text,"",TReplaceFlags()<Text=s;
}



그밖에도 여러가지 방법이 있겠죠

...


원하시는 답을 빨리 얻으시려면 질문을 잘하셔야 합니다.

참 그리고 제 이름은 정성호가 아니라 장성호입니다.

그럼..

니라카 님이 쓰신 글 :
: memo1 에 그림판 을 켯다, 라고 쓰고 edit1 에 그림판 이라 쓰고 삭제버튼누르면
: :
: : memo1의 그림판이 사라지게끔 할 수 없나요?
: :
: : pos로 하던중 이해가 안되서,
:
: 해당문자열 삭제 하는법 어떻게하죠,
:
: Edit1에 쓴 해당 부분이 Memo1에서 지워지게

+ -

관련 글 리스트
55586 정성호님 질문이요,ㅠ 니라카 1023 2008/12/28
55588     Re:정성호님 질문이요,ㅠ 장성호 1144 2008/12/28
55592         감사합니다. 니라카 736 2008/12/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.