Delphi и InDesign

Статус
Закрыто для дальнейших ответов.

Yurchick

Участник
Сообщения
43
Реакции
0
Ответ: Delphi и InDesign

Если бы еще адобе JavaScript дружил с ActiveX я б такую мешалду
и не ваял бы.
А пишу сейчас в основном на VB .NET хотя с детства Basic терпеть-ненавижу
 

ragman

Топикстартер
12 лет на форуме
Сообщения
669
Реакции
0
Ответ: Delphi и InDesign

И все-таки, товарищи, давайте вернемся к теме разговора.
Я не просил обсудить, в чем мне писать программы.
Я просил откликнуться людей, имеющих ПРАКТИЧЕСКИЙ опыт в работе из Delphi с InDesign.
Спасибо Богдану (bogv) и Glutton'у. Помощь в освоеннии Delphi огромна.

Остальные - флейм. (Извините за грубость).

Поэтому если у кого-то есть желание пообщаться на данную тему в теоории или на практике - милости просим.
 

ogursoft

15 лет на форуме
Сообщения
22
Реакции
0
Ответ: Delphi и InDesign

Ragman, прости давно не просматривал форум, поэтому наткнулся на эту ветку, когда в ней было уже 2 страницы, поэтому сразу к делу. Не слушай других про java и VB. Delphi прекрасно поддерживает объектную модель InDesign + некоторые преимущества, а именно: более быстрое выполнение скрипта за счет полностью машинного кода программы (как известно java-код выполняется через интерпретатор), возможность использования более продвинутых элементов интерфейса, например индикаторов прогресса и т.п., возможность использования потоков (очень удобно когда нужно отменить действия скрипта во время его выполнения). Если тебе интересно, могу выслать исходники скриптов на Delphi.
 

kaatm

15 лет на форуме
Сообщения
1 101
Реакции
19
Ответ: Delphi и InDesign

ogursoft сказал(а):
Ragman, … Если тебе интересно, могу выслать исходники скриптов на Delphi.
Я не Ragman, но можно и мне тоже?
 

ragman

Топикстартер
12 лет на форуме
Сообщения
669
Реакции
0
Ответ: Delphi и InDesign

Вот появилась новая проблема:
в JS это выглядит так
PHP:
myGroup = myPage.groups.add({myNewTextFrame, myFrame});
А как это сделать в Делфи?
 

ragman

Топикстартер
12 лет на форуме
Сообщения
669
Реакции
0
Ответ: Delphi и InDesign

Хорошо то как... Сам спрашиваешь - сам отвечаешь...
Путем долгих экспериментов методом тыка была выведена следующая формула:
PHP:
myGroup := myPage.groups.add(VarArrayOf([myNewTextFrame, myFotoFrame]));
 

Yurchick

Участник
Сообщения
43
Реакции
0
Ответ: Delphi и InDesign

Во во.
Эти тыки занимают 80% от времени написания кода.
Я так помаялся перейдя с VB на VB.NET в первом из них
есть Array() аналог VarArrayOf() а во втором нету :?(
 

ogursoft

15 лет на форуме
Сообщения
22
Реакции
0
Ответ: Delphi и InDesign

А уменя такая проблема: чем в Delphi заменить функцию TypeName из VB?
Как определить тип переменной, например TextFrame, Oval и т.п?
 

Yurchick

Участник
Сообщения
43
Реакции
0
Ответ: Delphi и InDesign

Не знаю как в Делфи, а в Индизе TextFrame и Oval
это объекты.
А имя объекта можно получить так (JS):
myObjectName = object.constructor.name
 

barakuda

Участник
Сообщения
424
Реакции
12
Ответ: Delphi и InDesign

Я профессиональнозанимаюсь прогр. на delphi, но дёргать инди. в дельфи не пробовал
Хотя у меня есть модуль, а точнее компонент для Page Maker, с его помощью вроде всё что угодно можно,
 

ragman

Топикстартер
12 лет на форуме
Сообщения
669
Реакции
0
Ответ: Delphi и InDesign

ogursoft сказал(а):
А уменя такая проблема: чем в Delphi заменить функцию TypeName из VB?
Как определить тип переменной, например TextFrame, Oval и т.п?
TextFrame - это действительно тип объекта или правильнее имя конструктора его создавшего. А заменить можно функцией, которую мне подарил Богдан (bogv). С его письменного разрешения делюсь с народом.
PHP:
//-----------Функция получения типа объекта в InDesign--------------------------
//-------------------Подарена Богданом bogv-------------------------------------
function GetTypeName(InDesInterface: IDispatch): string;
var PointerToTypeInformation: ^ITypeInfo;
    TypeInfo: ITypeInfo;
    InDesLib: ITypeLib;
    PointerToTypeString: PWideString;
    TypeString: WideString;
    IndexOfInterface: integer;
    TemporaryResult: string;
begin
  InDesInterface.GetTypeInfo(0,0,PointerToTypeInformation);
  TypeInfo:=ITypeInfo(PointerToTypeInformation);
  PointerToTypeString:=AllocMem(1000);
  TypeInfo.GetContainingTypeLib(InDesLib,IndexOfInterface);
  InDesLib.GetDocumentation(IndexOfInterface,PointerToTypeString,nil,nil,nil);
  TypeString:=PointerToTypeString^;
  TemporaryResult:=TypeString;
  FreeMem(PointerToTypeString);
  Result:=TemporaryResult;
end;

В uses надо добавить ActiveX

Богдан человек не тщеславный 'cool)', но моя личная просьба: каждый, кто использует эту функцию у себя в проектах, пусть скажет спасибо хорошему человеку.
И я буду первым - СПАСИБО!!! ':=)' 'beer1'
 

ogursoft

15 лет на форуме
Сообщения
22
Реакции
0
Ответ: Delphi и InDesign

Спасибо в первую очередь Богдану и конечно Ragman'у. Я все время крутился около этого, но думал все проще. 'cooll)'
 
Статус
Закрыто для дальнейших ответов.