Мое приложение D5 находится на сервере, который удаленно используется несколькими пользователями, поэтому мне нужно использовать следующую функцию для создания COM-объекта для запуска другого приложения (LmPos), установленного обратно на ПК этого пользователя при запуске:
CreateRemoteComObject(const MachineName: WideString; const ClassID: TGUID): IUnknown;
вместо создания локального COM-объекта, как раньше:
EposServer := CreateOLEObject('POS.Server');
Однако MachineName и ClassID для подключения будут зависеть от того, какие пользователи запускают это приложение. Я вижу две проблемы в этом...
Параметры должны быть постоянными, так как я могу назначить их переменными? Или это невозможно, поскольку они константы.
Если я требую пользовательского ввода, как мне преобразовать строку в TGUID? Кажется, он принимает только формат: = '{xxxx-xxxx-xxxx etc}'
Любая помощь будет принята с благодарностью. Я даже не уверен, возможно ли это в настоящее время, я пытаюсь настроить DCOM, но безуспешно.
StringToGUID. - person Sertac Akyuz   schedule 04.10.2011How do I convert the String into a TGUID ?, то ответом будет ваш комментарий;) - person TLama   schedule 04.10.2011...The parameters must be constant, so how can I assign them variable?Просто присвойте любое допустимое значение параметрам, параметры которых помечены какconst, это не означает, что это не может быть значением переменной, это просто означает, что компилятор не позволит вам напрямую изменить его и только когда-либо читается по процедуреCreateRemoteComObject. Таким образом, вы можете использовать что-то вроде этогоCreateRemoteComObject(MachineName,StringToGUID('{CA82B1FB-3D6C-4C16-871B-A6808A4D9F3A}'))без проблем. - person RRUZ   schedule 04.10.2011