Страница 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]