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
[49871] Re:ExtractStrings 쓸때 \r\n 은 무시하게 할 수 없나요?
장성호 [nasilso] 1809 읽음    2007-07-11 12:50
ExtractStrings함수는 pascal코드를 보니까  CRLF와 Space 등을 구분하도록 되어있네요
그걸 구분하지 않느 VCL함수가 있는지는 잘 모르겠구요

간단히  CRLF 및 Space를 구분하지 않는 함수를 만들어 봤습니다.

int __fastcall ExtractStringsEx(char Separators, char * Content, TStrings* Strings)
{
    char *Head, *Tail;
    String Item;

    if( (Content == NULL) || (*Content==0) || (Strings == NULL))
    {
    return 0;
    }

    try
    {
        Strings->BeginUpdate();
        int ilen=strlen(Content);
        Head = Content;
        Tail = Content;

        for(int i=0;i<ilen;i++)
        {
            if(*Tail==Separators)
            {
                if( (Head !=Tail) && (*Head!=0) )
                {
                    Item.SetLength(Tail - Head);
                    memmove(Item.c_str(),Head,Tail - Head);
                    Strings->Add(Item);
                }
                Head=Tail+1;
            }
            Tail++;
        }
        if( (Head !=Tail) && (*Head!=0) )
        {
            Item.SetLength(Tail - Head);
            memmove(Item.c_str(),Head,Tail - Head);
            Strings->Add(Item);
        }
    }
    __finally
    {
        Strings->EndUpdate();
    }
    return Strings->Count;
}
//--------------------------------------------------------------------------



AnsiString a = "user1|안녕하세요\r\n반갑습니다|12345";
TStringList *StrList = new TStringList();
ExtractStringsEx('|', a.c_str(), StrList);                                          //==> 이렇게 쓰시면 됩니다.

그럼.....


초보 님이 쓰신 글 :
: AnsiString a = "user1|안녕하세요\r\n반갑습니다|12345";
: TStringList *StrList = new TStringList();
: ExtractStrings(TSysCharSet() << '|' , TSysCharSet(), a.c_str(), StrList);
:
: 결과가
:
: StrList->Strings[0]     =>     user1
: StrList->Strings[1]     =>     안녕하세요
: StrList->Strings[2]     =>     반갑습니다
: StrList->Strings[3]     =>     12345
:
: 이렇게 나오는데요
:
: 제가 원하는 결과는
:
: StrList->Strings[0]     =>     user1
: StrList->Strings[1]     =>     안녕하세요\r\n반갑습니다
: StrList->Strings[2]     =>     12345
:
: 입니다.
:
: 어떻게 하면 될까요?
:
: 혹시나 해서 ExtractStrings(TSysCharSet() << '|' >> '\r\n', TSysCharSet(), a.c_str(), StrList);
:
: 뭐 이렇게도 해봤는데 안 되더라구요 ㅠㅠ

+ -

관련 글 리스트
49869 ExtractStrings 쓸때 \r\n 은 무시하게 할 수 없나요? 초보 1142 2007/07/11
49871     Re:ExtractStrings 쓸때 \r\n 은 무시하게 할 수 없나요? 장성호 1809 2007/07/11
49872         Re:Re:ExtractStrings 쓸때 \r\n 은 무시하게 할 수 없나요? 초보 1333 2007/07/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.