이 질문 여러번 올리셨죠?
오늘에야 질문의 의도를 좀 파악한것 같네요
그림판얘기를 자꾸해서 윈도우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에서 지워지게