25.07.2017 Views

Intro-CSharp-Book-v2015

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Глава 15. Текстови файлове 639<br />

Коригиране на файл със субтитри – пример<br />

Сега ще разгледаме един по-сложен пример, в който едновременно четем<br />

от един файл и записваме в друг. Става дума за програма, която<br />

коригира файл със субтитри за някакъв филм.<br />

Нашата цел ще бъде да изчетем един файл със субтитри, които са<br />

некоректни и не се появяват в точния момент и да отместим времената<br />

по подходящ начин, за да се появяват правилно. Един такъв файл в<br />

общия случай съдържа времето за появяване на екрана, времето за<br />

скриване от екрана и текста, който трябва да се появи в дефинирания<br />

интервал от време. Ето как изглежда един типичен файл със субтитри:<br />

GORA.sub<br />

{1029}{1122}{Y:i}Капитане, системите са|в готовност.<br />

{1123}{1270}{Y:i}Налягането е стабилно.|- Пригответе се за кацане.<br />

{1343}{1468}{Y:i}Моля, затегнете коланите|и се настанете по<br />

местата си.<br />

{1509}{1610}{Y:i}Координати 5.6|- Пет, пет, шест, точка ком.<br />

{1632}{1718}{Y:i}Къде се дянаха|координатите?<br />

{1756}{1820}Командир Логар,|всички говорят на английски.<br />

{1821}{1938}Не може ли да преминем|на сръбски още от началото?<br />

{1942}{1992}Може!<br />

{3104}{3228}{Y:b}Г.О.Р.А.|филм за космоса<br />

...<br />

За да го коригираме, просто трябва да нанесем корекция във времето за<br />

показване на субтитрите. Такава корекция може да бъде отместване (добавяне<br />

или изваждане на някаква константа) или промяна на скоростта<br />

(умножаване по някакъв коефициент, например 1.05).<br />

Ето и примерен код, с който може да реализираме такава програма:<br />

using System;<br />

using System.IO;<br />

FixingSubtitles.cs<br />

class FixingSubtitles<br />

{<br />

const double COEFFICIENT = 1.05;<br />

const int ADDITION = 5000;<br />

const string INPUT_FILE = @"..\..\source.sub";<br />

const string OUTPUT_FILE = @"..\..\fixed.sub";<br />

static void Main()<br />

{<br />

try

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!