Русские субтитры: "Подбор синонимов" - Скрипт для Subtitle Workshop - Русские субтитры

Перейти к содержимому

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

"Подбор синонимов" - Скрипт для Subtitle Workshop Смотреть всем, особенно тем кто пишет скрипты

#21 Пользователь офлайн   BedaZzle Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Admin
  • Сообщений: 2 991
  • Регистрация: 22 Октябрь 02
  • Страна:
  • Прислал(a) субтитров: 96
  • Своих переводов: 16

Отправлено 17 Ноябрь 2007 - 12:47

Просмотр сообщенияD!ig (17.11.2007, 1:16) писал:

Действительно "раз ты - счастливый обладатель исходников SubtitleAPI", может хедером поделишся?


Кхм... Я это ни разу не делал, как оформить?

Просмотр сообщенияD!ig (17.11.2007, 1:16) писал:

[*]Прикрутил бинарный поиск (пол дня искал, шо таке), оказалась именно то, что и так собирался делать.


Покажи, что ты там сотворил, ибо:

в третьем томе книги Кнута "Искусство программирования для ЭВМ: сортировка и поиск", посвящённом истории этого алгоритма, Кнут отмечает, что, хотя первая программа двоичного поиска была опубликована в 1946 году, программа, не содержащая ошибок, появилась лишь в 1962 году.
0

#22 Пользователь офлайн   D!ig Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Members
  • Сообщений: 140
  • Регистрация: 11 Март 06
  • Страна:

Отправлено 18 Ноябрь 2007 - 02:03

Просмотр сообщенияBedaZzle (17.11.2007, 11:47) писал:

Кхм... Я это ни разу не делал, как оформить?

Ну наверное так:
» Нажмите, для отображения текста «

Попробовал обернуть тэги
 Spoiler'ом. :(
Показывается вообще чудно, 2-"последний" споилеры поместились внутрь 1-го, 1й и 2й работают остальные нет.
---------

Просмотр сообщенияBedaZzle (17.11.2007, 11:47) писал:

Покажи, что ты там сотворил, ибо:
в третьем томе книги Кнута "Искусство программирования для ЭВМ: сортировка и поиск", посвящённом истории этого алгоритма, Кнут отмечает, что, хотя первая программа двоичного поиска была опубликована в 1946 году, программа, не содержащая ошибок, появилась лишь в 1962 году.

Ну с 1946 до 1962г. прошло 26лет - появилась первая программа не содержащая ошибок в алгоритме.
С 1962 до 2007г. - 45лет - хочется надеятся, что многое изменилось.

Новая версия: Прикрепленный файл  Synonyms_Script.rar (4,92К)
Количество загрузок:: 15
0

#23 Пользователь офлайн   BedaZzle Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Admin
  • Сообщений: 2 991
  • Регистрация: 22 Октябрь 02
  • Страна:
  • Прислал(a) субтитров: 96
  • Своих переводов: 16

Отправлено 18 Ноябрь 2007 - 03:37

Просмотр сообщенияD!ig (18.11.2007, 0:03) писал:

Ну с 1946 до 1962г. прошло 26лет - появилась первая программа не содержащая ошибок в алгоритме.
С 1962 до 2007г. - 45лет - хочется надеятся, что многое изменилось.


Изменилось, только вот по всему инету расползся не самый быстродействующий вариант.
:)

Позаимствовал у Кнута такое:

» Нажмите, для отображения текста «

0

#24 Пользователь офлайн   D!ig Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Members
  • Сообщений: 140
  • Регистрация: 11 Март 06
  • Страна:

Отправлено 18 Ноябрь 2007 - 16:51

Просмотр сообщенияBedaZzle (18.11.2007, 2:37) писал:

Изменилось, только вот по всему инету расползся не самый быстродействующий вариант.
:)

Позаимствовал у Кнута такое:


Проверка на равенство вынесена за предела цикла?
 while (L < R) do
 ...
 end;
 if WordList[L].hash = hash then
  begin
	i := L;
	result := TRUE;
  end
  else
	result := FALSE;
end;

Логично. Спасибо. Пишы исчо :rofl:.
0

#25 Пользователь офлайн   BedaZzle Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Admin
  • Сообщений: 2 991
  • Регистрация: 22 Октябрь 02
  • Страна:
  • Прислал(a) субтитров: 96
  • Своих переводов: 16

Отправлено 19 Ноябрь 2007 - 00:22

Просмотр сообщенияD!ig (18.11.2007, 14:51) писал:

Проверка на равенство вынесена за предела цикла?

Логично. Спасибо. Пишы исчо :rofl:.


Сначала погоняй профайлером оба варианта, а потом смейся. ;)
0

#26 Пользователь офлайн   D!ig Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Members
  • Сообщений: 140
  • Регистрация: 11 Март 06
  • Страна:

Отправлено 19 Ноябрь 2007 - 22:18

Просмотр сообщенияBedaZzle (18.11.2007, 23:22) писал:

Сначала погоняй профайлером оба варианта, а потом смейся. ;)

Да, я не смеюсь, как можно. Это я так демонстрирую свою радость, по поводу того, что умный человек, одарил меня, частицей своей мудрости. И выражаю пожелание, чтобы так продолжалось и дальше. ;)
0

#27 Пользователь офлайн   Stevvie Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Избранные
  • Сообщений: 1 687
  • Регистрация: 02 Июль 04
  • Пол:Мужчина
  • Страна:
  • Прислал(a) субтитров: 128
  • Своих переводов: 54

Отправлено 28 Декабрь 2007 - 19:03

Камрады, как успехи со словарем?
0

#28 Пользователь офлайн   D!ig Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Members
  • Сообщений: 140
  • Регистрация: 11 Март 06
  • Страна:

Отправлено 02 Январь 2008 - 01:59

Просмотр сообщенияStevvie (28.12.2007, 18:03) писал:

Камрады, как успехи со словарем?

Тухло. :(
У меня комп поломался и надежд на возможность его починки очень мало. :( Новый соберу не раньше февраля. :(
Тут в сети наткнулся на словарь синонимов для Lingvo:
"Словарь содержит 163 тысячи слов и выражений, снабженных синонимами и/или поясняющими словами.", но дальше там идет вот такой текст
"Оригинальный словарь распространяется бесплатно в виде dbf-таблиц и оболочки.". Из dbf можно очень легко и быстро его конвертнуть в любой формат. ;)
0

#29 Пользователь офлайн   НуПогоди Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Избранные
  • Сообщений: 832
  • Регистрация: 31 Июль 06
  • Страна:
  • Прислал(a) субтитров: 45
  • Своих переводов: 19

Отправлено 11 Ноябрь 2010 - 19:57

Тема немножко сдохла, но всё же... Начал немного ковырять и... Смотрю на, скажем, такой код

Цитата

mmoSubText :=TMemo(Form.FindComponent('mmoSubtitleText'));
with mmoSubText do begin
...
onmousedown := @mmoSubText_MouseDown;
...
end;

и не понимаю: действие скрипта вообще как-то закончить можно? как программно прекратить обработку кликов по mmoSubText?
0

#30 Пользователь офлайн   Bodkin Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Admin
  • Сообщений: 1 147
  • Регистрация: 28 Сентябрь 03
  • Пол:Мужчина
  • Страна:
  • Прислал(a) субтитров: 116

Отправлено 12 Ноябрь 2010 - 02:56

Просмотр сообщенияНуПогоди (11 Ноябрь 2010 - 18:57) писал:

Тема немножко сдохла, но всё же... Начал немного ковырять и... Смотрю на, скажем, такой код

и не понимаю: действие скрипта вообще как-то закончить можно? как программно прекратить обработку кликов по mmoSubText?

Может onmousedown := nil?
0

#31 Пользователь офлайн   НуПогоди Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Избранные
  • Сообщений: 832
  • Регистрация: 31 Июль 06
  • Страна:
  • Прислал(a) субтитров: 45
  • Своих переводов: 19

Отправлено 12 Ноябрь 2010 - 12:14

Идея переопределить события типа onmousedown не решает проблемы: цикл with mmoSubText do... по прежнему работает, а текущий Pascal-скрипт не завершён. Если мы попробуем в такой ситуации вызвать из меню любой другой Pascal-скрипт, а после его завершения кликнуть мышкой по mmoSubText , то получим то, что на скриншоте.

Чтобы избежать подобных крэшей, по идее можно в программе сделать enabled:=false либо для всего menuitem с паскаль-скриптами (чтобы до них было не дотянуться) либо mmoSubText (и тогда он станет недоступен). Второе отметается сразу, ибо текст субтитров в mmoSubText хотелось бы редактировать и дальше. Да и первое как-то не сильно радует... Потому и спрашивал: как завершить цикл with mmoSubText do...? как закончить действие скрипта, содержащего такой цикл?

Прикрепленные файлы

  • Прикрепленный файл  SWError.png (14,57К)
    Количество загрузок:: 4

0

#32 Пользователь офлайн   Bodkin Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Admin
  • Сообщений: 1 147
  • Регистрация: 28 Сентябрь 03
  • Пол:Мужчина
  • Страна:
  • Прислал(a) субтитров: 116

Отправлено 12 Ноябрь 2010 - 14:59

Просмотр сообщенияНуПогоди (12 Ноябрь 2010 - 11:14) писал:

Идея переопределить события типа onmousedown не решает проблемы: цикл with mmoSubText do... по прежнему работает, а текущий Pascal-скрипт не завершён. Если мы попробуем в такой ситуации вызвать из меню любой другой Pascal-скрипт, а после его завершения кликнуть мышкой по mmoSubText , то получим то, что на скриншоте.

Чтобы избежать подобных крэшей, по идее можно в программе сделать enabled:=false либо для всего menuitem с паскаль-скриптами (чтобы до них было не дотянуться) либо mmoSubText (и тогда он станет недоступен). Второе отметается сразу, ибо текст субтитров в mmoSubText хотелось бы редактировать и дальше. Да и первое как-то не сильно радует... Потому и спрашивал: как завершить цикл with mmoSubText do...? как закончить действие скрипта, содержащего такой цикл?

Так with это не цикл, он всего лишь помогает уменьшить количество кода. То же самое, но без него:

...
mmoSubText :=TMemo(Form.FindComponent('mmoSubtitleText'));

if dbg then mmoSubText.Color:=clRed;
mmoSubText.onmousedown := @mmoSubText_MouseDown;
mmoSubText.onmouseup   := @mmoSubText_MouseUP;
mmoSubText.onmousemove := @mmoSubText_MouseMove;
mmoSubText.ondblclick  := @mmoSubText_DblClick;
mmoSubText.onkeyup     := @mmoSubText_KeyUp;

pnlControl:=TPanel(Form.FindComponent('pnlControl'));
...

0

#33 Пользователь офлайн   НуПогоди Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Избранные
  • Сообщений: 832
  • Регистрация: 31 Июль 06
  • Страна:
  • Прислал(a) субтитров: 45
  • Своих переводов: 19

Отправлено 12 Ноябрь 2010 - 15:57

Просмотр сообщенияBodkin (12 Ноябрь 2010 - 11:59) писал:

То же самое, но без него...

Так понятнее... Выходит, в скрипте №1 мы просто переписали обработчик маускликов для объекта, а при повторном вызове компиллятора паскаль-скриптов функция обработки маускликов каким-то образом портится (вероятно, поверх неё пишется содержимое функций нового скрипта) - потому и крэш. Если эту функцию переопределить, снова скомпиллировав скрипт №1 (с содержимым функции onMouseClick), то крэши по идее исчезнут. Где-то так...

ПС. Попробовал хохмы ради:
program test;
var Form : TForm;
mmoSubText : TMemo;
begin
if not IsOriginalLoaded then EnableWorkArea;
Form:=TForm(Application.MainForm);
mmoSubText:=TMemo(Form.FindComponent('mmoSubtitleText'));
mmoSubText.onmousedown:=nil;
end.

Компайлер ругается на несоответствие типов в строке с nil. Если так и не удастся программно убрать обработчик кликов, придётся видимо создавать новый объект, а для устранения обработки кликов по нему делать его недоступным (или даже невидимым).
0

#34 Пользователь офлайн   Bodkin Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Admin
  • Сообщений: 1 147
  • Регистрация: 28 Сентябрь 03
  • Пол:Мужчина
  • Страна:
  • Прислал(a) субтитров: 116

Отправлено 13 Ноябрь 2010 - 02:27

Просмотр сообщенияНуПогоди (12 Ноябрь 2010 - 14:57) писал:

Компайлер ругается на несоответствие типов в строке с nil. Если так и не удастся программно убрать обработчик кликов, придётся видимо создавать новый объект, а для устранения обработки кликов по нему делать его недоступным (или даже невидимым).

Что-то я не понял, ты где компилируешь? В Delphi или в Subtitle Workshop? По-моему у меня всё правильно написано, потестить не могу (нет ни того, ни другого под рукой), но судя по этому, должно работать: http://www.google.ru...2+lang%3Apascal
0

#35 Пользователь офлайн   НуПогоди Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Избранные
  • Сообщений: 832
  • Регистрация: 31 Июль 06
  • Страна:
  • Прислал(a) субтитров: 45
  • Своих переводов: 19

Отправлено 13 Ноябрь 2010 - 13:18

Просмотр сообщенияBodkin (12 Ноябрь 2010 - 23:27) писал:

Что-то я не понял, ты где компилируешь? В Delphi или в Subtitle Workshop?

SW-компайлер, естественно... в Delphi скорее всего проблем бы не было.
0

#36 Пользователь офлайн   BedaZzle Иконка

  • Иконка
  • Отправить ЛС
  • Группа: Admin
  • Сообщений: 2 991
  • Регистрация: 22 Октябрь 02
  • Страна:
  • Прислал(a) субтитров: 96
  • Своих переводов: 16

Отправлено 15 Ноябрь 2010 - 10:55

Просмотр сообщенияНуПогоди (13 Ноябрь 2010 - 11:18) писал:

SW-компайлер, естественно... в Delphi скорее всего проблем бы не было.


попробуй вместо nil приравнять нулю.
0

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему