Страница 1 из 1
Можно ли использовать данные из внешних программ?
Добавлено: 28 ноя 2005, 11:33
scanner
Галактика 7.12.
Хочу осуществить следующее, пишем программку (например на Delphi), затем при формировании отчета вызываем нашу программку и она должна возвратить данные в наш отчет для дальнейшего использования. Для простоты будем считать что нужно возвратить всего одну текстовую строку.
Подскажите как это осуществить и возможно ли такое.
Добавлено: 28 ноя 2005, 11:42
Алексей
Ну запуск внешней программы возможен.
А куда она должна вернуть эту самую строку?
Можно записать текстовый файл, а ВИПом читать этот текстовый файл.
Добавлено: 28 ноя 2005, 11:48
scanner
Желательно не использовать промежкточный файл, а возвратить строку допустим в переменную отчета. Но если этого нельзя то придеться через файл.
Да еще никто не слышал о возможности написания интерфейсов сторонними средствами без использования компилятора ВИП?
Добавлено: 28 ноя 2005, 12:33
scanner
Да еще можно ли передать внешней программе данные из отчета? Например вю ту же текстовую строку. Сначала передаем внешней программе, пользоветель ее меняет и возвращаем в отчет. После этого отчет выводится на экран.
Добавлено: 28 ноя 2005, 13:26
coolibin
Просто для наводки (сам не пробовал):
Документация - "Использование ActiveX"
Функционал очень клевый, судя по документации, можно даже реализовать обработчики событий на випе.
Если кто делал - поделитесь опытом плиз, думаю многим будет интересно. В частности, интересна работа с ADODB.recordset
Добавлено: 29 ноя 2005, 16:51
mik
пишем свою DLL, в которой живет нужная функция.
подключаем ее к VIP программе и наслаждаемся
Добавлено: 30 ноя 2005, 06:02
scanner
mik
Если можно дайте развернутый пример.
Добавлено: 30 ноя 2005, 06:50
mik
это текст qwerty.dll
library qwerty;
function GetPi:Double;register;
begin
result := 3.14;
end;
exports
GETPI;
begin
end;
а это вип прога:
Function GETPI:Double;external 'qwerty.dll';
interface qwerty 'qwerty'
//....
// тут что то свое
//...
procedure ShowPi;
begin
message('2Pi' + String(2*GetPi));
end;
HandleEvent
cmInit:{ShowPi;}
end;
end.
Добавлено: 30 ноя 2005, 06:54
scanner
mik
Т.е. если я все правильно понял на випе можно использовать даже те же API функции предварительно их объявив?
Т.е. можно создать окошко: CreateWindowA, SetWindowLongA, ect.
Добавлено: 30 ноя 2005, 07:11
mik
есть некоторые ограничения.
строки в Vip паскалевские ShortString в дос кодировке(cp866)
процедуры и функции должны быть объявлены как register.
раньше было такое что название процедур/функций должны были описываться в верхнем регистре.
А для ADODB.Recordset я нарисовал в дллке ряд функций оберток, которые дают доступ к свойствам и методам TADOQuery.
Добавлено: 30 ноя 2005, 07:19
scanner
mik
что значит
процедуры и функции должны быть объявлены как register
?
Да еще насколько я понимаю нет разницы где использовать ф-ии в отчетах или интерфейсах?
Добавлено: 30 ноя 2005, 07:36
mik
вообще говоря register - соглашение о вызове процедур и функций используется в делфи по умолчанию.
если отчет или интерфейс сможет узнать о существовании функции то использовать конечно можно и там и сям
[/quote]