Q&A

  • 찾기와 바꾸기..뭐가 잘못된 건지 원인을 모르겠습니다.
초보 오늘도 이렇게 님들께 궁금한 점이 있어 이렇게 글을 남깁니다.
님들~~지발 도와 주세여~!!!!

temp := memo.text;
P:=POS(Hedit1.text,temp);
A1:=COPY(temp,1,P-1);
DELETE(temp,1,P);

Memo.text:=A1+ Hedit3.text;

문제의 코딩 부분입니다.
Hedit1.text로 찾고자 하는 것을 받아들입니다.
그리고
Hedit3.text는 변경하고자 하는 내용입니다.
한마디로 Hedit1을 삭~지우고 그 자리에 Hedit3을 넣고 싶다~뭐 이런 말이져.
근데 문제는
이넘의 코딩이 어느부분이 잘 못 됐는지 찾고 나서 바꾸자 하는 내용을 바꿔 넣은 후 그 뒷부분을 깔끔하게 만들어 버립니다.

예를 들면...

EQD+CN+MLCU3603803+2200+++5'
NAD+CA+MAE:172:20'
LOC+147+0171082::5'

라는 문장에서
Hedit1.text := NAD;
Hedit3.text := abcde;
라고 할때 위의 소스대로 하면 결과가

EQD+CN+MLCU3603803+2200+++5'
abcde

로 변해 버립니다.
어떻하면 좋을런지요?

님들~도와 주십시요~!!
2  COMMENTS
  • Profile
    nilriri™ 2003.03.18 21:39
    Unit

    SysUtils

    Category

    string handling routines

    type
      TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
    function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;

    Description

    StringReplace replaces occurrences of the substring specified by OldPattern with the substring specified by NewPattern. StringReplace assumes that the source string, specified by S, may contain Multibyte characters.

    If the Flags parameter does not include rfReplaceAll, StringReplace only replaces the first occurrence of OldPattern in S. Otherwise, all instances of OldPattern are replaced by NewPattern.

    If the Flags parameter includes rfIgnoreCase, The comparison operation is case insensitive.

    위의 함수를 사용하시면 안되나요?

    그리고 아래 문제는..제가 보기엔..

    temp := memo.text;
    P:=POS(Hedit1.text,temp);
    A1:=COPY(temp,1,P-1);
    DELETE(temp,1,P); <- 여기 결과를

    Memo.text:=A1+ Hedit3.text + temp; <-여기에서 붙여줘야할거 같습니다.


  • Profile
    김영대 2003.03.18 21:32
    // 안녕하세요  김영대( http://www.howto.pe.kr ) 입니다
    // 전에 제가 올렸던 팁인데 참고해 보세요

    // 아래의 함수는 주어진 문자열에서 특정 문자열을 찾아서 다른 문자열로
    // 해당 부분을 바꾸는 함수입니다
    // 만약 SearchAndReplace( 'this,is,a,test', ',', ' ' ) 처럼 한다면
    // 결과는 중간에 comma(',') 가 전부 공백으로 바뀌 문자열을 얻을 수 있습니다
    // 'this,is,a,test' -> 'this is a test'

    function SearchAndReplace(sSrc, sLookFor, sReplaceWith: string ): string;
    var
      nPos,
      nLenLookFor : integer;
    begin
      nPos        := Pos(sLookFor, sSrc);
      nLenLookFor := Length(sLookFor);
      while(nPos > 0)do
      begin
        Delete( sSrc, nPos, nLenLookFor );
        Insert( sReplaceWith, sSrc, nPos );
        nPos := Pos( sLookFor, sSrc );
      end;
      Result := sSrc;
    end;