http://nscc.stylens.net/index.php?document_srl=24817&mid=forum#comment


이전 코드 문제점이 아무 자막이나 불러와서 Ctrl+A 모두 선택하고 실행을 하면
[List index out of bounds(숫자)] 에러가 떠서


CC_MODIFYLINE(LineLoop, ''); 를 추가로 넣어보니 에러도 안 나고 없어지더군요.


아래 코드

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


var
  LineObj: TStringList;
  LineLoop: Integer;
  DelBlankCount: integer;
begin
  LineObj := TStringList.Create;
  Try
    LineObj.Text := CCP_SCRIPT;

    For LineLoop := CCP_BLOCKENDY downto CCP_BLOCKSTARTY do
    Begin
       If CC_ISSYNCLINE(LineLoop) Then
       Begin
         CC_MODIFYLINE(LineLoop, '');// 추가


         CC_DELETELINE(LineLoop);
         DelBlankCount := DelBlankCount+1;
    end;


// 싱크 지울 때  도 같이 지워지길 원하시는 분은 아래 { } 두 기호 주석을 지워주시면 됩니다.
{
if Trim(LineObj[LineLoop]) = ' ' Then
begin
CC_MODIFYLINE(LineLoop, '');
//CC_DeleteLine(LineLoop);
end;
}
    End;
  Finally
    LineObj.Free;
  End;

//몇 개 제거했는지 메시지 박스를 보시려면 아래 if문 앞에 //를 지워 주시면 됩니다.
//if DelBlankCount > 0 then ShowMessage('총 '+IntToStr(DelBlankCount) + ' 개의 싱크 줄을 제거했습니다.');
CCP_CaretX := 0;
end;



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

PS: 하지만 CC_MODIFYLINE(LineLoop, ''); 이 매크로 단점이 Ctrl+z로 복원이 안되는 점과.

CC_MODIFYLINE(LineLoop, CRLF); 등을 찍으면 아래처럼 출력되는 문제점이 있습니다...

[그림]

Posted by 투명인간취급
,