|
int __fastcall Pos(const AnsiString& subStr) const;
Description
Pos returns the index in the AnsiString at which the substring subStr begins, where 1 is the index of the first character, 2 is the index of the second character, and so on. If the substring is not contained in the AnsiString, Pos returns 0.
AnsiString __fastcall SubString(int index, int count) const;
Description
SubString returns a new AnsiString that is a substring of this AnsiString. The substring contains count characters beginning at index.
위에꺼는 Pos 함수에 대한 도움말이고요,
밑에껀 SubString에 대한 도움말입니다.
AnsiString Text = "192.168.0.1";
AnsiString Head = Text.SubString(1,Text.Pos("."));
-> 이때 Head 의 값은 "192." 인데요 Pos에서는 Index를 리턴해 주기 때문에 "."이 있는곳의 인덱스를 넘깁니다.
인덱스라고 하면 4가 되는데 1에서부터 4글자를 가져오기 떄문에 "192."을 가져오는것입니다.
그렇지만 SubString(idx, length) 함수에서는 Length를 받기 때문에 index에서 1을 빼야 합니다.
AnsiString Sub = Text.SubString(1,Text.Pos("3"));
-> 이때는 Pos("3")의 결과값이 0이 되고요.
SubString(1,0)이 되므로 문자열에서 아무런 값을 가지지 않습니다.
번외편 님이 쓰신 글 :
: Edit5->Text = Text.SubString(1,Text.Pos("2"));
: 이렇게 해서 192만 빼왔습니다. 그런데 이부분에서
: Edit5->Text = Text.SubString(1,Text.Pos("."));
: 을 하면 192. 이 빠지고
: Edit5->Text = Text.SubString(1,Text.Pos("3"));
: 을 하면 192.168.10.1 이 전부 빠지는데..
:
: 어떤 규칙으로 이렇게 빠지는건지를 잘 모르겠습니다.
: 좀더 자세히 알려주셨으면 감사하겠습니다.
:
: 강재호.만해 님이 쓰신 글 :
: : 번외편 님이 쓰신 글 :
: : : 현재 상태가
: : : Label1->Capture=IP_List->Strings[ 0 ];
: : : 이렇게 했을때 Label1에 192.168.10.1이 뜨게 됩니다
: : :
: : : 그런데 이중에 제가 필요한 부분은 192 <-- 이부분만 필요한데
: : : 어떻게 해야지 이부분만을 빼올수가 있는지 알고 싶습니다.
: : : Label2->Capture=IP_List->Label1->Capture[??????];
: : : 이런식으로 빼야 할까요?
: :
: : AnsiString 형의 부과 함수들 중에서 SubString() 함수와 Pos() 함수를 이용하시면 원하는 걸 해결 할수 있을것 같은데요.
: :
: : AnsiString Text = IP_List->Strings[0];
: : Text = Text.SubString(1,Text.Pos("."));
: :
: : 이런식으로 하시면 가능할것 같습니다.
: :
: : 더 자세한 내용은 헬프 참고 하세요 ^^
|