예 요번에는 싱크가 있는 줄만 지우는 매크로입니다.

최대한 간단하게 만든거라서 좀 부족하긴 합니다만.. 대부분의 자막에서는 잘 동작할것 같습니다.


핵심은 CC_IsSyncLine(줄번호) 함수를 써서 해당 줄에 싱크 태그가 있는지 확인하고 있으면

CC_DeleteLine(줄번호) 함수로 해당 줄을 걍 지우는 겁니다.


그럼 바로 매크로 코드 나갑니다.


var
  LineObj: TStringList;
  LineLoop: Integer;
  DelSyncCount: integer;
begin
//가로로 이어 쓰인 싱크에 대사까지 삭제되는 거 방지를 위한 변환 작업
{
CCP_SCRIPT := CC_STRINGREPLACE(CCP_SCRIPT, CC_PTAG+CRLF, CC_PTAG);
CCP_SCRIPT := CC_STRINGREPLACE(CCP_SCRIPT, CC_PTAG, CC_PTAG+CRLF);
}


  LineObj := TStringList.Create;
  Try
    LineObj.Text := CCP_SCRIPT;
    For LineLoop := LineObj.Count -1 downto 0 do
    Begin
       If CC_ISSYNCLINE(LineLoop) Then
       Begin

          CC_DeleteLine(LineLoop);

          DelSyncCount := DelSyncCount+1;
{
end
else
begin
          CC_INSERTLINE(LineLoop, CRLF);
}
       End;
{
       If Trim(LineObj[LineLoop]) = ' ' Then
       Begin
          CC_DELETELINE(LineLoop);
          CC_INSERTLINE(LineLoop, CRLF);
       end;
}
   

End;

  Finally
    LineObj.Free;
  End;

if DelSyncCount > 0 then ShowMessage('총 '+IntToStr(DelSyncCount) + ' 개의 싱크를 제거했습니다.');
CCP_CaretX := 0;

end;


Posted by 투명인간취급
,