싱크를 아래처럼 찍었다고 했을 때

--------------------------------------------------------------------

<BODY>


<SYNC Start=200><P Class=KRCC>
12345
<SYNC Start=300><P Class=KRCC>&nbsp;
<SYNC Start=400><P Class=KRCC>&nbsp;
<SYNC Start=450><P Class=KRCC>&nbsp;

<SYNC Start=500><P Class=KRCC>
12345
<SYNC Start=600><P Class=KRCC>&nbsp;
<SYNC Start=700><P Class=KRCC>&nbsp;
<SYNC Start=750><P Class=KRCC>&nbsp;
<SYNC Start=800><P Class=KRCC>
12345
<SYNC Start=900><P Class=KRCC>&nbsp;
<SYNC Start=1000><P Class=KRCC>&nbsp;
<SYNC Start=1400><P Class=KRCC>&nbsp;

<SYNC Start=1700><P Class=KRCC>
12345
<SYNC Start=1800><P Class=KRCC>&nbsp;
<SYNC Start=1900><P Class=KRCC>&nbsp;
<SYNC Start=1950><P Class=KRCC>&nbsp;

</BODY>
</SAMI>

--------------------------------------------------------------------

종료 싱크 부분을 매크로로 돌려서 지워주는 게...


원하는 결과

--------------------------------------------------------------------

<BODY>

<SYNC Start=200><P Class=KRCC>
12345
<SYNC Start=300><P Class=KRCC>&nbsp;


<SYNC Start=500><P Class=KRCC>

12345
<SYNC Start=600><P Class=KRCC>&nbsp;

<SYNC Start=800><P Class=KRCC>
12345
<SYNC Start=900><P Class=KRCC>&nbsp;


<SYNC Start=1700><P Class=KRCC>
12345
<SYNC Start=1800><P Class=KRCC>&nbsp;


</BODY>
</SAMI>

--------------------------------------------------------------------



물론 가능합니다. 아래와 같이 작성해서 사용하시면 됩니다.


var
  LineSumCount, DelLoop, LoopVar, ReadPos: Integer;
  LineStr, CurrentSyncStr, PrevSyncStr: String;

  BodyStart: Boolean;
  iLoop: Integer;
  EndLine: Integer;
AddnbspCount: integer;

begin

//CCP_SCRIPT := CC_STRINGREPLACE(CCP_SCRIPT, '<P Class=KRCC>'+CRLF+'&nbsp;', '<P Class=KRCC>&nbsp;');

  PrevSyncStr := '';
  CurrentSyncStr := '';
  LineSumCount := 0;
  BodyStart := False;

  EndLine := CC_CURRENTLINECOUNT-1;
  For LoopVar := CC_CURRENTLINECOUNT-1 downto 0 do
  Begin
    If Pos('</body>', LowerCase(CC_GETLINETEXT(LoopVar))) > 0 Then
    Begin
       EndLine := LoopVar-1;
       Break;
    End;
  End;
   For LoopVar := EndLine downto 0 do


  Begin
     LineStr := CC_GETLINETEXT(LoopVar);

     ReadPos := 0;
     For iLoop :=  Length(LineStr) downTo 1 do
     Begin
        If Copy(LineStr, iLoop, 1) = '>' Then
        Begin
           ReadPos := iLoop;
           Break;
        End;
     End;

     CurrentSyncStr := CurrentSyncStr + Trim(Copy(LineStr, ReadPos+1, Length(LineStr)-ReadPos));
     LineSumCount := LineSumCount + 1;

     If CC_ISSYNCLINE(LoopVar) Then
     Begin
        // 마지막으로 이전 출력값이랑 현재 출력값이 둘다 &nbsp 면 이전 싱크를 다 지웁니다.      
        If (PrevSyncStr = '&nbsp;') and (CurrentSyncStr = '&nbsp;') Then
       Begin
           For DelLoop := 1 to LineSumCount do

              CC_DELETELINE(LoopVar+1);

AddnbspCount := AddnbspCount+1;

        End;

        PrevSyncStr := CurrentSyncStr;
        CurrentSyncStr := '';
        LineSumCount := 0;

     End;

  End;

//CCP_SCRIPT := CC_STRINGREPLACE(CCP_SCRIPT, '<P Class=KRCC>&nbsp;', '<P Class=KRCC>'+CRLF+'&nbsp;');

if AddnbspCount > 0 then ShowMessage('총 '+IntToStr(AddnbspCount) + ' 개의 &nbsp; 싱크 줄을 삭제했습니다.');
CCP_CaretX := 0;
//CP_TopLine := CP_TopLine + 1;
//CP_TopLine := CP_TopLine - 1;
End;



<SYNC Start=300><P Class=KRCC>&nbsp;// 이 값이 남길 바랬는데...
<SYNC Start=400><P Class=KRCC>&nbsp;
<SYNC Start=450><P Class=KRCC>&nbsp;// 매크로를 돌리면 이 값이 남네요...


CC_DELETELINE(LoopVar);이 값을


CC_DELETELINE(LoopVar+1); 이렇게 주니 해결됐네요^^


Posted by 투명인간취급
,