SubtitleAPI.dll экспортирует функции:
AddSubtitle
ClearSubtitles
CloseSubtitleFile
CreateNewSubtitle
DeleteSubtitle
GetCurrentFormat
GetFileFormat
GetFormatIndex
GetFormatInformation
GetFormatName
GetModuleDescription
GetModuleVersion
GetNoInteractionWithTags
GetPlaybackDelay
GetSubtitle
GetSubtitleCount
GetSubtitleText
GetSubtitleWorkWithTags
GetSupportedFormatsCount
InsertSubtitle
IsFrameBased
LoadSubtitleFile
MoveSubtitle
ReverseSubtitleText
SaveSubtitleFile
SetAbsoluteDelay
SetNoInteractionWithTags
SetOutputSettingsAdvancedSubStationAlpha
SetOutputSettingsDVDSubtitle
SetOutputSettingsSAMI
SetOutputSettingsSonicScenarist
SetOutputSettingsSubStationAlpha
SetOutputSettingsSubViewer1
SetOutputSettingsSubViewer2
SetOutputSettingsTMPlayer
SetPlaybackDelay
SetSubtitle
SetSubtitleWorkWithTags
Юнит
SubtitleAPILib.Pas скорее всего имеет вид:
Unit SubtitleApiLib;
interface
uses System, Windows, SysInit, SysUtilsMath, SysConst, Types, FastStrings, USubtitlesFunctions
USubtitlesSave, USubtitlesRead, UCheckFormat, USubtitleFile;
[function]|[procedure] AddSubtitle (????????):??????;
...
[function]|[procedure] SetSubtitleWorkWithTags(????????):??????;
[type] ?????;
[const] ?????;
implementation
function|procedure AddSubtitle (????????):??????;
begin
????
end;
...
[function]|[procedure] SetSubtitleWorkWithTags(????????):??????;
begin
????
end;
end.
Юнит
SubtitleApi.dpr скорее всего имеет вид:
library SubtitleApi;
uses SubtitleApiLib in 'SubtitleApiLib.pas';
exports
AddSubtitle;
...
SetSubtitleWorkWithTags;
begin
end.
Ну или возможно SubtitleApiLib.pas отстутствует, а есть только SubtitleAPi.dpr.
Тогда Юнит
SubtitleApi.dpr скорее всего имеет вид:
library SubtitleApi;
uses System, Windows, SysInit, SysUtilsMath, SysConst, Types, FastStrings, USubtitlesFunctions
USubtitlesSave, USubtitlesRead, UCheckFormat, USubtitleFile;
[type] ?????;
[const] ?????;
[function]|[procedure] AddSubtitle (????????):??????;
begin
????
end;
...
[function]|[procedure] SetSubtitleWorkWithTags(????????):??????;
begin
????
end;
exports
AddSubtitle;
...
SetSubtitleWorkWithTags;
begin
end.
-------
Заголовочный файл должен иметь вид:
Unit SubtitleAPI[Header];
inteface
[function]|[procedure] AddSubtitle(text: [string|pchar}; pos: integer): boolean;stdcall; external 'SubtitleAPI.dll';
...
[function]|[procedure] SetSubtitleWorkWithTagsAddSubtitle(value: boolean): boolean;stdcall; external 'SubtitleAPI.dll';
// то есть прототип экспортируемой функции, со всеми тараметрами.
...
[function]|[procedure] GetFormatInformation(format: TFormat): TFormatInfo;stdcall; external 'SubtitleAPI.dll';
// к этой нужны еще описания типов, TFormat и TFormatInformation;
например:
type TFormat = (sfSRT, sfSUB, ..., sfSSA);
type TFormatInformation = record
name: [string|pchar];
ext : [string|pchar];
description: [string|pchar];
end;
// если для вызова функций нужны какие-то константы, константы тоже нажо указать
const
????? = ?????;
implementation
//implementation наверно можно опустить
end.
Потом в Делфевой программе, достаточно написать
Uses ...; SubtitleApi[Header] in 'SubtitleApi[Header].pas' и можно использовать всю мощь SubtitleApi.Dll
, а то свои парсеры писать ломает.
Spoiler'ом.
Показывается вообще чудно, 2-"последний" споилеры поместились внутрь 1-го, 1й и 2й работают остальные нет.
Ну с 1946 до 1962г. прошло 26лет - появилась первая программа не содержащая ошибок в алгоритме.
С 1962 до 2007г. - 45лет - хочется надеятся, что многое изменилось.