이번엔 공백줄을 지우는 거지요, 역시나 유사합니다. 전체에서 지우는 거라서 약간 달라지긴 합니다만.

일단 매크로 코드는 아래와 같습니다.


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

    For LineLoop := LineObj.Count -1 downto 0 do
    Begin
      // 공백이 아닌 줄은 처리하지 않고 다음 줄로 넘어갑니다..
      If Trim(LineObj[LineLoop]) <> '' Then Continue;

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

    End;

  Finally
    LineObj.Free;
  End;
if DelBlankCount > 0 then ShowMessage('총 '+IntToStr(DelBlankCount) + ' 개의 공백 줄을 제거했습니다.');
CCP_CaretX := 0;
end;


IRC에 비해서 해야할게 적기때문에 줄이 확 줄어듭니다.


Posted by 투명인간취급
,

싱크값 뒷자리 수를 00으로 바꾸기 방법 2가지

<Sync Start=12300><P Class=KRCC> 등으로 뒷자리 수 00으로 끝나게 만들기

1. 방법 : 편집->빠른 싱크 편집->싱크 비율 수정->비율로 수정 



------------------------------------------------------------------------------------------------
<Sync Start=12345><P Class=KRCC>

<Sync Start=12445><P Class=KRCC>
&nbsp;
<Sync Start=12545><P Class=KRCC>

<Sync Start=12645><P Class=KRCC>
&nbsp;
<Sync Start=12745><P Class=KRCC>

<Sync Start=12845><P Class=KRCC>
&nbsp;
<Sync Start=12945><P Class=KRCC>

<Sync Start=13045><P Class=KRCC>
&nbsp;
------------------------------------------------------------------------------------------------
기존 방식으로 찍은 자막에 뒷자리 수 00으로 채우시려면

편집->빠른 싱크 편집->싱크 비율 수정->비율로 수정
------------------------------------------------------------------------------------------------



0.01000 이값을 입력해서 확인 뒤에 2자리를 날려주고
------------------------------------------------------------------------------------------------
<Sync Start=123><P Class=KRCC>

<Sync Start=124><P Class=KRCC>
&nbsp;
<Sync Start=125><P Class=KRCC>

<Sync Start=126><P Class=KRCC>
&nbsp;
<Sync Start=127><P Class=KRCC>

<Sync Start=128><P Class=KRCC>
&nbsp;
<Sync Start=129><P Class=KRCC>

<Sync Start=130><P Class=KRCC>
&nbsp;
------------------------------------------------------------------------------------------------



100.00000 다시 이값을 입력해서 확인 뒤에 00을 채워주시면 됩니다.
------------------------------------------------------------------------------------------------
<Sync Start=12300><P Class=KRCC>

<Sync Start=12400><P Class=KRCC>
&nbsp;
<Sync Start=12500><P Class=KRCC>

<Sync Start=12600><P Class=KRCC>
&nbsp;
<Sync Start=12700><P Class=KRCC>

<Sync Start=12800><P Class=KRCC>
&nbsp;
<Sync Start=12900><P Class=KRCC>

<Sync Start=13000><P Class=KRCC>
&nbsp;

------------------------------------------------------------------------------------------------
또는 싱크 찍으면서 00으로 찍기

2. 방법 : 도구->프로그램 설정->기본 태그 설정->시간 태그 & 공백 태그 추가


------------------------------------------------------------------------------------------------
시간 태그
------------------------------------------------------------------------------------------------

var
ZeroSYNC: Integer; //변수 선언
begin

If CC_ISSYNCLINE(CCP_CaretY) Then
Begin

ZeroSYNC := CC_MEDIACURRENTSYNCTIME*0.01000;

   CCP_CURRENTTIME := ZeroSYNC*100.00000;
   CCP_CaretY := CCP_CaretY + 1;
End
Else
Begin

ZeroSYNC := CC_MEDIACURRENTSYNCTIME*0.01000;

   CC_InsertLine(CCP_CaretY, '<Sync Start='+IntToStr(ZeroSYNC*100.00000)+'>'+CC_PTAG);
   CCP_CaretY := CCP_CaretY + 2;
   CC_MOVETOEDITORCARETBOTTOM;
End;

end;

------------------------------------------------------------------------------------------------
공백 태그
------------------------------------------------------------------------------------------------

var
ZeroSYNC: Integer; //변수 선언
begin

If CC_ISSYNCLINE(CCP_CaretY) Then
Begin

ZeroSYNC := CC_MEDIACURRENTSYNCTIME*0.01000;

   CCP_CURRENTTIME := ZeroSYNC*100.00000;
   CCP_CaretY := CCP_CaretY + 1;
End
Else
Begin

ZeroSYNC := CC_MEDIACURRENTSYNCTIME*0.01000;

CC_InsertLine(CCP_CaretY, '<Sync Start='+IntToStr(ZeroSYNC*100.00000)+'>'+CC_PTAG+CRLF+'&nbsp;');
   CCP_CaretY := CCP_CaretY + 2;
   CC_MOVETOEDITORCARETBOTTOM;
End;

end;

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

Posted by 투명인간취급
,

기본값이 아마 -300일듯한데 이 상태로 쓰시면 좀 싱크가 미세하게 늦게 찍히는 느낌이 날것입니다


처음 사용자한테 권장하는 값은 -500 정도가 가장 찍기 좋게 나올듯합니다.



Posted by 투명인간취급
,

cc4설치폴더->Handler->에 Main.zip , autoComplete.zip 를 압축을 풀어 넣으시면 됩니다.


 Main.zip

 AutoComplete.zip


=====================================================================================================

자동 완성 기능
다듬고 몇 가지 좀 더 추가했습니다.
*추가 방법 cc4설치폴더->Handler->AutoComplete.psc 을 메모장으로 열어 본문 코드를 넣으시던지
아니면 첨부 파일을 저 경로에 압축 풀어 넣으시면 됩니다.

<Font Face="굴림">    tag, <Font Color="blue">    tag,
"굴림"    FACE, "blue"    COLOR
이렇게 해서 더 넣을까 했지만 이렇게까지 쓸 분을 없을 거 같아서 넣었다 빼고,
저렇게 할 분이면 이미 스마트 태그나 컬러 태그 생성기를 쓰시겠지요.
=====================================================================================================


<BR>    tag

&nbsp;    entity


<Font Color="">    tag    13
<Font Face="">    tag    12
<Font Size="">    tag    12
<Font Color="" Face="" Size="">    tag    13
</Font>    tag
<FONT COLOR=""></FONT>    tag    13
<FONT FACE=""></FONT>    tag    12
<FONT SIZE=""></FONT>    tag    12

<Sync Start=>    tag    12
<P Class=>    tag    9
<SYNC START=><P CLASS=>    tag    12

<b>    tag
</b>    tag
<B></B>    tag    3
<i>    tag
</i>    tag
<I></I>    tag    3
<s>    tag
</s>    tag
<S></S>    tag    3
<u>    tag
</u>    tag
<U></U>    tag    3
<p>    tag
</p>    tag
<P></P>    tag    3

<ruby>    tag
<rt>    tag
</rt></ruby>    tag
</rt>    tag
</ruby>    tag
<RUBY><RT></RT></RUBY>    tag    6

<rp>    tag
</rp>    tag
<RP></RP>    tag    4
<rb>    tag
</rb>    tag
<RB></RB>    tag    4

<SAMI>    tag
</SAMI>    tag
<HEAD>    tag
</HEAD>    tag
<Title>    tag
</Title>    tag
<STYLE TYPE="text/css">    tag
</STYLE>    tag
<BODY>    tag
</BODY>    tag


=====================================================================================================

<br>핸들러 파일
지금까지 몇 가지 추가되었던 사항 모두 집어넣은 <br> 핸들러 파일입니다.
*추가 방법 cc4설치폴더->Handler->Main.psc 을 메모장으로 열어 본문 코드를 넣으시던지
아니면 첨부 파일을 저 경로에 압축 풀어 넣으시면 됩니다.

1. <!-- --> 범위 주석체크 해서 <br> 넣지 않기
2. 대사, &nbsp; 아래가 공백이면 <br> 넣지 않기
3. <br>을 몇 개 넣었는지 개수 세기
=====================================================================================================


unit MainHandler;

implementation

procedure SlideView_Handler(TagString: String);
begin
  showMessage(TagString);
end;

procedure AutoBRInsert;
var
  ClearTagFlag: Boolean;
  CommentTagFlag: Boolean; //주석 태그 체크
  PTAGTagFlag: Boolean; //클래스 태그 체크

  StartTagFlag: Boolean;
  LoopVar: Integer; //줄번호
  CurrentLine: WideString; //현재 줄
  NextLine: WideString; //다음 줄

  AddBRCount: Integer; //<br> 추가 개수
begin

  ClearTagFlag := False;
  StartTagFlag := False;
  For LoopVar := 0 To CC_CURRENTLINECOUNT-2 Do
  Begin

     CurrentLine := TrimW(CC_GETLINETEXT(LoopVar));
     NextLine := TrimW(CC_GETLINETEXT(LoopVar+1));

// 싱크 중간 긴 주석문에 <br> 안 들어가게 하는 체크문
     If (CommentTagFlag) and (Pos('-->', CurrentLine) > 0) Then CommentTagFlag := False;
     If (CommentTagFlag) and (Pos('-->', NextLine) > 0) Then CommentTagFlag := False;
// 싱크 중간 추가된 클래스 태그에 <br> 안 들어가게 하는 체크문
     If (PTAGTagFlag) and (Pos('CC>', CurrentLine) > 0) Then PTAGTagFlag := False;
     If (PTAGTagFlag) and (Pos('CC>', NextLine) > 0) Then PTAGTagFlag := False;
//
     If CC_ISSYNCLINE(LoopVar) Then
     Begin
        If Not StartTagFlag Then StartTagFlag := True;
        Continue;
     End;
     
     If Not StartTagFlag Then Continue;

     If CC_ISSYNCLINE(LoopVar+1) Then
        Continue;

// 대사, &nbsp; 아래 라인에 공백일 때 <br> 안 들어가게 하는 if문
     If (CurrentLine = '') or (CurrentLine = '&nbsp;') Then
     Begin
        ClearTagFlag := True;
        Continue;
     End;
     If (NextLine = '') or (NextLine = '&nbsp;') Then //추가
     Begin
        ClearTagFlag := True;
        Continue;
     End;

// 싱크 중간 긴 주석문에 <br> 안 들어가게 하는 체크문
     If (Pos('<!--', CurrentLine) > 0) Then CommentTagFlag := True;
     If (Pos('<!--', NextLine) > 0) Then CommentTagFlag := True;

     If (CommentTagFlag) and (Pos('-->', CurrentLine) > 0) Then CommentTagFlag := False;
     If (CommentTagFlag) and (Pos('-->', NextLine) > 0) Then CommentTagFlag := False;

     If (Pos('-->', CurrentLine) > 0) and (Pos('-->', CurrentLine) > Length(CurrentLine)-3) Then Continue;
     If (Pos('-->', NextLine) > 0) and (Pos('-->', NextLine) > Length(NextLine)-3) Then Continue;

// 싱크 중간 추가된 클래스 태그에 <br> 안 들어가게 하는 체크문
     If (Pos('<P', CurrentLine) > 0) Then PTAGTagFlag := True;
     If (Pos('<P', NextLine) > 0) Then PTAGTagFlag := True;

     If (PTAGTagFlag) and (Pos('CC>', CurrentLine) > 0) Then PTAGTagFlag := False;
     If (PTAGTagFlag) and (Pos('CC>', NextLine) > 0) Then PTAGTagFlag := False;

     If (Pos('CC>', CurrentLine) > 0) and (Pos('CC>', CurrentLine) > Length(CurrentLine)-3) Then Continue;
     If (Pos('CC>', NextLine) > 0) and (Pos('CC>', NextLine) > Length(NextLine)-3) Then Continue;
//

     If (CurrentLine <> '') or (CurrentLine <> '&nbsp;') Then ClearTagFlag := False;
     If (NextLine <> '') or (NextLine <> '&nbsp;') Then ClearTagFlag := False;

     If ClearTagFlag Then Continue;
     If CommentTagFlag Then Continue;
     If PTAGTagFlag Then Continue;

     If (Pos('</BODY', UpperCase(CurrentLine)) <> 0) Then Break;
     If (Pos('</BODY', UpperCase(NextLine)) <> 0) Then Break;

     If UpperCase( Copy(CurrentLine, Length(CurrentLine)-3, 4) ) <> '<BR>' Then
     Begin
        CC_MODIFYLINE(LoopVar, CurrentLine+'<BR>');
        AddBRCount := AddBRCount + 1;
     End;

  End;

//핸들러로 <br> 추가 개수가 1개 이상이면 메시지박스 출력,
//<br> 1개라도 추가한 게 없으면 메세지박스 안 뜨게 했습니다.
if AddBRCount > 0 then ShowMessage('총 '+IntToStr(AddBRCount) + ' 개의 <BR> 태그가 추가되었습니다.');

end;

procedure AutoSyncChangeForBugPMP;
var
  LoopVar: Integer;
  CurrentLine: WideString;    
begin
  For LoopVar := 0 To CC_CURRENTLINECOUNT-1 Do
  Begin
     CurrentLine := TrimW(CC_GETLINETEXT(LoopVar));

     If Pos('<SYNC', UpperCase(CurrentLine)) > 0 Then
     Begin        
        CurrentLine := CC_STRINGREPLACE(CurrentLine, '<SYNC', '<SYNC');
        CC_MODIFYLINE(LoopVar, CurrentLine);
     End;

  End;
end;

end.


=====================================================================================================



Posted by 투명인간취급
,

고급 지능형 싱크는 rc7 버전 이상부터 사용할 수 있습니다


정식 버전에서도 사용 가능합니다.


ccmp 기본 싱크 방식이 고급 지능형 방식과 유사하니
ccmp등을 써보셨던 분이나 cc4로 갈아타려 하시는 분이라면
고급 지능형 싱크 사용을 권합니다.

시간 싱크
*추가 방법은 도구->프로그램 설정->기본 태그 설정->시작 태그



=====================================================================================================


Var
maxline, linecheck: Integer;
LineStr: String;
Begin

If CC_ISSYNCLINE(CCP_CaretY) Then
Begin
  CCP_CURRENTTIME := CC_MEDIACURRENTSYNCTIME;
  CCP_CaretY := CCP_CaretY + 1;

  maxline := CCP_CaretY+10;
  If maxline >= CC_CurrentLineCount then maxline := CC_CurrentLineCount-1;

  for linecheck := CCP_CaretY to maxline do
  begin
    If CC_GetLineText(Linecheck) = '' then break;

    LineStr := UpperCase(Trim(CCP_CurrentLine));

    If Copy(LineStr, Length(LineStr)-3, 4) = '<BR>' Then
    CCP_CaretY := CCP_CaretY + 1;
  end;

If not CC_ISSYNCLINE(CCP_CaretY) Then
begin
CCP_CaretY := CCP_CaretY + 1; //싱크 값만 변경 후 이동시 좀 더 지능적으로 커서 이동
End;
CCP_CaretX := 0;// 다음에 찍을 대사에서 커서를 제일 좌측으로 이동
  CC_MOVETOEDITORCARETBOTTOM;
End
Else
Begin

  CC_InsertLine(CCP_CaretY, '<Sync Start='+IntToStr(CC_MEDIACURRENTSYNCTIME)+'>'+CC_PTAG);
  CCP_CaretY := CCP_CaretY + 1;

  maxline := CCP_CaretY+10;
  If maxline >= CC_CurrentLineCount then maxline := CC_CurrentLineCount-1;

  for linecheck := CCP_CaretY to maxline do
  begin
    If CC_GetLineText(Linecheck) = '' then break;

    LineStr := UpperCase(Trim(CCP_CurrentLine));

    If Copy(LineStr, Length(LineStr)-3, 4) = '<BR>' Then
    CCP_CaretY := CCP_CaretY + 1;
  end;
{
If CC_GetLineCount-1 <= CCP_CaretY Then
Begin
CC_InsertLine(CCP_CaretY+1, CRLF); //마지막 대사 아래에 엔터값 생성
end;
}
CCP_CaretY := CCP_CaretY + 1;

//CP_TopLine := CCP_CaretY - 35; // 자동스크롤 기능 숫자 값 조정하시면 새로 스크롤 위치 조정됩니다.
CCP_CaretX := 0;// 다음에 찍을 대사에서 커서를 제일 좌측으로 이동
 CC_MOVETOEDITORCARETBOTTOM;
End;

End;


=====================================================================================================
*시간 태그 수정사항
위 태그는 오른쪽 끝에 <br>태그가 있으면 알아서 판단해서 커서가 이동됩니다.

예전 거는 31대사<br>32대사<br>33대사<br> 이런 식으로 겹겹이 있는 건 <br> 판단을 잘 못 했지만
이번에 수정한 방식은 <br> 태그가 가로 새로 혼용에도 좀 더 지능적으로 대응하게 했습니다.
예전 거보다 더 똑똑해졌습니다

아래처럼 <br>이 여러 개가 있어도 자동적으로 판단해서 1~10칸까지 이동 됩니다.

10칸 이상 이동이 필요하신분은 maxline := CCP_CaretY+10; 숫자 10에 값을 조정 하시면 됩니다.

1대사<br>2대사
3대사<br>4대사
5대사<br>
6대사
7대사<br>
8대사
9대사<br>10대사<br>11대사
12대사<br>13대사<br>
14대사
15대사<br>16대사<br>17대사
18대사<br>19대사<br>
20대사
21대사<br>22대사<br>
23대사<br>24대사<br>
25대사<br>26대사
27대사<br>28대사<br>
29대사<br>30대사
31대사<br>32대사<br>33대사<br>
34대사<br>35대사<br>36대사<br>
37대사<br>38대사<br>39대사<br>
40대사<br>41대사<br>42대사
43대사<br>44대사<br>45대사<br>
46대사<br>47대사<br>48대사<br>
49대사<br>50대사<br>51대사

=====================================================================================================
공백 싱크
*추가 방법은 도구->프로그램 설정->기본 태그 설정->공백 태그



=====================================================================================================


Var
maxline, linecheck: Integer;
Begin

If CC_ISSYNCLINE(CCP_CaretY) Then
Begin
   CCP_CURRENTTIME := CC_MEDIACURRENTSYNCTIME;
   CCP_CaretY := CCP_CaretY + 1;

If not CC_ISSYNCLINE(CCP_CaretY) Then
begin
CCP_CaretY := CCP_CaretY + 1; //싱크 값만 변경 후 이동시 좀 더 지능적으로 커서 이동
End;

  maxline := CCP_CaretY+10;
  If maxline >= CC_CurrentLineCount then maxline := CC_CurrentLineCount-1;

  for linecheck := CCP_CaretY to maxline do
  begin
    If CC_GetLineText(Linecheck) <> '' then break;
    CCP_CaretY := CCP_CaretY + 1;
  end;
CCP_CaretX := 0;// 다음에 찍을 대사에서 커서를 제일 좌측으로 이동
  CC_MOVETOEDITORCARETBOTTOM;
End
Else
Begin
{
If CC_GetLineCount-1 <= CCP_CaretY Then
Begin
CC_InsertLine(CCP_CaretY+1, CRLF); //마지막 대사 아래에 엔터값 생성
end;
}
  CC_InsertLine(CCP_CaretY, '<Sync Start='+IntToStr(CC_MEDIACURRENTSYNCTIME)+'>'+CC_PTAG+CRLF+'&nbsp;');
  CCP_CaretY := CCP_CaretY + 1;
CCP_CaretY := CCP_CaretY + 1;

  maxline := CCP_CaretY+10;
  If maxline >= CC_CurrentLineCount then maxline := CC_CurrentLineCount-1;

  for linecheck := CCP_CaretY to maxline do
  begin
    If CC_GetLineText(Linecheck) <> '' then break;
    CCP_CaretY := CCP_CaretY + 1;
  end;

//CP_TopLine := CCP_CaretY - 35; // 자동스크롤 기능 숫자 값 조정하시면 새로 스크롤 위치 조정됩니다.
CCP_CaretX := 0;// 다음에 찍을 대사에서 커서를 제일 좌측으로 이동
  CC_MOVETOEDITORCARETBOTTOM;
End;

End;


=====================================================================================================
*공백 태그 수정사항
기능이 뭐가 다른가 하면.. 관리자님 글 긁어왔습니다...

(번역문) ----------------------------------
안녕하세요





네, 안녕하세요
------------------------------------------


(사용형태) --------------------------------
<Sync Start=0><P Class=KRCC>
안녕하세요
<Sync Start=0><P Class=KRCC>
&nbsp;





<Sync Start=0><P Class=KRCC>
네, 안녕하세요
<Sync Start=0><P Class=KRCC>
&nbsp;
------------------------------------------

제 경우엔 구별이 필요한 부분은 중간에 엔터로 띄워 놓는 편인데요

이런 식으로 대사간의 간격을 보기 편하게 하려고 띄워 놓은 대사의 경우
안녕하세요의 바로 밑에서 클리어 태그를 찍으면

네, 안녕하세요 까지 자동으로 커서 이동을 해줍니다.
궁금하신 분은 시험 삼아 사용자 정의 태그나 매크로에 넣고 한번 돌려 보시면 알 겁니다.

자동적으로 판단해서 1~10칸 까지 이동 되게 수정해봤습니다.
10칸 이상 필요하신분은 maxline := CCP_CaretY+10; 숫자 10에 값을 조정 하시면 됩니다.
=====================================================================================================
*시간, 공백 공통 수정사항

대본이 아래처럼 찍혔을때 예전 싱크 방식은 4대사 아래 공백이 없으면 1~4대사 위에까지 싱크를 찍고
싱크를 계속 찍어도 계속 4대사 위에만 싱크 태그가 들어갔는데요
-----------------------------------------------
1대사
2대사
3대사
4대사(아래 공백없음)
-----------------------------------------------
-----------------------------------------------
1대사
2대사
3대사
4대사(아래 공백없음)
-----------------------------------------------
아래 if문
{
If CC_GetLineCount-1 <= CCP_CaretY Then
Begin
CC_InsertLine(CCP_CaretY+1, CRLF);
end;
}


//if문을 넣어서 1~4대사 위에까지는 기본방식으로 찍히고
4대사에서 아래 공백이 없으면 엔터값을 생성해서
4대사 아래로도 계속 싱크 값을 찍을 수 있게 바꿨습니다.

정식 버전과 호환을 위해서 일단 주석처리 됐으니

rc7버전에서 써보실 분은 코드 앞뒤에 { } 만 지워주시면 됩니다.


그리고 싱크가 아래처럼 찍혀있을 때 시간 값만 바꿀 경우
-----------------------------------------------
<Sync Start=0><P Class=KRCC>1대사<BR>1
<Sync Start=100><P Class=KRCC>&nbsp;
<Sync Start=200><P Class=KRCC>2대사<BR>
2
<Sync Start=300><P Class=KRCC>&nbsp;
<Sync Start=400><P Class=KRCC>
3대사<BR>3
<Sync Start=500><P Class=KRCC>
&nbsp;
<Sync Start=600><P Class=KRCC>
4대사<BR>
4
<Sync Start=700><P Class=KRCC>
&nbsp;
<Sync Start=800><P Class=KRCC>5대사<BR>
5<BR>
5
<Sync Start=900><P Class=KRCC>&nbsp;
<Sync Start=1000><P Class=KRCC>6대사<BR>6<BR>6
<Sync Start=1100><P Class=KRCC>&nbsp;
<Sync Start=1200><P Class=KRCC>
7대사<BR>7<BR>7
<Sync Start=1300><P Class=KRCC>
&nbsp;
<Sync Start=1400><P Class=KRCC>
8대사<BR>
8<BR>
8
<Sync Start=1500><P Class=KRCC>
&nbsp;
-----------------------------------------------
If not CC_ISSYNCLINE(CCP_CaretY) Then
begin
CCP_CaretY := CCP_CaretY + 1;
End;
//이 if문을 넣어서 불규칙한 싱크 형태에도 시간 값만 바꾸고 새로 커서가
1칸인지 2칸인지 알아서 좀 더 지능적으로 판단하도록 했습니다.


CP_TopLine := CCP_CaretY - 35; //을 넣어 싱크를 찍을 때 다음 대사들이
좀 넉넉히 보이는 곳에서 편집창이 스크롤 되게 했습니다.
스크롤 제어 부분은 불편하실 분도 있을 거 같아, 일단 주석처리 됐으니 쓰실 분은
//CP_TopLine := 코드 앞에 // 만 지워주시면 됩니다.


CCP_CaretX := 0; //넣어서 싱크를 찍고 다음에 찍을 대사에서 커서를 제일 좌측에 가게 했습니다.

=====================================================================================================

Posted by 투명인간취급
,

1. 도구->프로그램 설정

 



2. 언어 설정-smi 저장언어는 유니코드로 고정 체크 적용 후 확인




Posted by 투명인간취급
,

1. 도구->프로그램 설정

 

 

 

2. 기본 설정-재생기 설정 the kmplayer dcc bridge version 1.0 선택 후 적용 확인

 

 

 

 

 

 

 

3. 검은색 dcc창에서 마우스우클릭->kmp 설정->

kmp의 실행 경로 : 폴더모양 아이콘 클릭해서 kmplayer.exe가 있는 경로 지정 (바로 아래 4. 항목 참고)

실행시에 함께 실행 체크

종료시에 함께 종료 체크

kmp강제연결 (연결 문제 발생시에만 사용하세요) kmp 최신 버전이면 꼭 체크

 

 

 

확인 후 여기까지 다 설정 하셨다면 cc4 프로그램을 완전 종료 후 다시 실행해주시길 바랍니다.

 

4. kmp의 실행 경로 찾는 법 kmp 설치하면 바탕화면에 생긴 아이콘에 마우스우클릭->속성

 

대상항목 경로를 3. 항목 kmp의 실행 경로에 넣어주시면 됩니다.

 

 

이도 저도 모르겠다

kmp설치시 따로 경로 지정 없이 다음다음 설치 하셨다면 아래 두 경로 중 한 곳에 설치되셨을 겁니다.

(64비트 윈도우 기준)

 

비교적 최신이라면 첫 번째, 구 버전이면 두 번째입니다.

 

 C:\KMPlayer\KMPlayer.exe
 C:\Program Files (x86)\The KMPlayer\KMPlayer.exe

여기 링크 버전으로 설명 하자면

http://nscc4.tistory.com/85

 

3.9.1.129 버전은 첫 번째 경로

 

3.6.0.87, 2.9.3.1214 버전은 두 번째 경로 입니다.

 

Posted by 투명인간취급
,

매크로에다 만들어 써보니

편집->빠른 싱크 편집->현재 싱크 증가 0.1초, 1초 증가,

현재 싱크 증가 0.1초, 1초 감소랑 약간?의 차이가 있지만... 비슷하게? 동작하네요.




0.1초=100

0.5초=500

1초=1000


//+500 더하기

 CC_MODIFYTIMERANGE(500, CCP_BLOCKSTARTY, CCP_BLOCKENDY); //(증가 감소값, 블록시작, 블록끝)


//-500 빼기

 CC_MODIFYTIMERANGE(-500, CCP_BLOCKSTARTY, CCP_BLOCKENDY); //(증가 감소값, 블록시작, 블록끝)


빨간 표시 부분값만 바꿔서 써주시면 됩니다.


Posted by 투명인간취급
,

안녕하세요 관리자입니다. ^^;

CCP_CurrentLine 함수의 경우 유니코드를 지원합니다.
다만 Caption Creator 4(이하 CC4)의 문자열 처리 방식 때문에 말씀하신 상황이 생긴것으로 보입니다.

보통 대입 연산자의 경우 첫번째 문자의 형을 기준으로 인코딩을 자동 수행합니다.
특별한 선언이 없는 문자열은 기본적으로 Ansi 문자열로 처리하기 때문에
아래와 같이 대입을 수행하면 일반 Ansi 문자열로 자동 인코딩 하여 대입이 되게 됩니다.

CCP_CurrentLine := '<font color="red">'+CCP_CurrentLine+'</font>';

때문에 유니코드로 변경하여 대입하게 되면 문제가 사라지게 됩니다.


현재 열에 좌측과 우측

 CCP_CurrentLine := CC_AnsiToUnicode('<font color="red">') + CCP_CurrentLine + '</font>';


블록 속 싱크 태그에 좌측과 우측

CCP_BLOCKSTRING := CC_AnsiToUnicode('<b>') + CCP_BLOCKSTRING + '</b>';


첫번째 보이는 글자가 유니코드이므로 이하의 문자를 모두 유니코드로 처리합니다.

만족하실만한 답변이 되었나요? 즐거운 주말되세요~

+ 추가정보 +
1. CCP_CurrentLine := CCP_CurrentLine+'</font>';
와 같은 문자는 첫번째 CCP_CurrentLine 이 유니코드 이므로 깨지지 않습니다.

2. 사용자 정의 명령의 "컬러 태그 넣기 기능"을 추천합니다. http://nscc4.tistory.com/7
단축키 설정후 사용하시면 편하게 사용가능합니다. http://nscc4.tistory.com/2




Posted by 투명인간취급
,

1. 가로용

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

CC_InsertCurrentPos('<BR>'); //가로용: 현재 커서 위치에 br 태그 넣기

CCP_CaretX := CCP_CaretX + 4; //가로로 이동값 -왼쪽(←), +오른쪽(→)

CC_MOVETOEDITORCARETBOTTOM; //스크롤 갱신

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

2. 세로용

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

CC_InsertCurrentPos('<BR>'+CRLF); //세로용: 현재 커서 위치에 br 태그 넣고 줄 나누기

CCP_CaretY := CCP_CaretY + 1; //세로로 이동값 -위로(↑), +아래로(↓)

CC_MOVETOEDITORCARETBOTTOM; //스크롤 갱신

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




Posted by 투명인간취급
,