Вопрос № 101758: Здравствуйте!
Подскажите плз как сделать следующее:
есть программа на Microsoft Visual C++ 7.0. Она создает
html-файл. Вопрос как из прогргаммы запустить IExplorer с этой созданной страничкой?
Заранее спасибо....Вопрос № 101775: Приветствую!
Не могу состыковать объявления функций на Delphi и С++
Проблема в следующем:
Есть объявление функции на Delphi:
function Func(var a : integer; var mas: array of TRec;
var _Note : PChar) : Boolean;
Где
TRec = ...
Вопрос № 101.758
Здравствуйте!
Подскажите плз как сделать следующее:
есть программа на Microsoft Visual C++ 7.0. Она создает
html-файл. Вопрос как из прогргаммы запустить IExplorer с этой созданной страничкой?
Заранее спасибо.
Отвечает: Maxim V.G.
Здравствуйте, Muratov Radik!
В качестве альтернативніх вариантов предложу ещё 2 функции для запуска IExplorer:
1)
CreateProcess(NULL, "C:\Program files\Internet Explorer\IEXPLORE.EXE www.ya.ru", NULL,NULL,FALSE,CREATE_NEW_CONSOLE | NORMAL_PRIORITY_CLASS,NULL,NULL,&cif,&pi)
Для открытия Вашей страницы нужно в качестве параметра передать путь к вашей странице: "C:\Program files\Internet Explorer\IEXPLORE.EXE c:\www\MyHTMLPage.html"
--------- Жить вредно - от неё умирают
Ответ отправил: Maxim V.G. (статус: 4-ый класс)
Ответ отправлен: 12.09.2007, 13:14 Оценка за ответ: 5
Вопрос № 101.775
Приветствую!
Не могу состыковать объявления функций на Delphi и С++
Проблема в следующем:
Есть объявление функции на Delphi:
function Func(var a : integer; var mas: array of TRec;
var _Note : PChar) : Boolean;
Где
TRec = packed record
a: Double;
b: Double;
c: Boolean;
End
Как эту функцию объявить в С++. В общем проблема возникла только с передаваемым массивом
Я в С++ объявил
struct TRec{
double a;
double b;
bool c;
}
А саму функцию
extern "C" __dllspec(dllexport) bool
Func(int &a, TRec **mas, char * &_Note);
Были так же варианты TRec * mas и TRec * &mas
Но ни один из параметров не срабатывает - более того при попытке обратиться к элементам переданного или созданного по указанному адресу массива вводит программу в полный ступор - просто зависает.
Оказалось, что длина стека, отведенного на mas - 8 байт(тупо поставил __int64 mas), но тогда непонятно как с такой вещью работать.
Поясните пожалуйста, как в Delphi передаются массивы в параметры для изменения.
Отправлен: 12.09.2007, 13:10
Вопрос задал: Tek (статус: Студент)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Igor_
Здравствуйте, Tek!
Если есть возможность, скомпилируйте pas файл в C++Builder и посмотрите, как он вам выдаст объявление этой функции в hpp файле.
Для примера у меня в C++Builder подключаются pas файлы
То, что в pas файле описано как
procedure Execute(DS:Array of TDataSet);virtual;
В hpp (считай h-файл) получается как:
virtual void __fastcall Execute(const Db::TDataSet* const * DS, const int DS_Size);
Ответ отправил: Igor_ (статус: 3-ий класс)
Ответ отправлен: 12.09.2007, 15:24 Оценка за ответ: 5 Комментарий оценки: Спасибо за подсказку, Builder ставить правда не пришлось, но направление дали верное
Директива #pragma pack(push,1) задает выравнивание структуры в памяти по байту (аналог packed record)
--------- Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Студент)
Ответ отправлен: 12.09.2007, 15:40 Оценка за ответ: 5 Комментарий оценки: Благодарю за помощь, ваш четкий и безусловный ответ оказался полностью верным и главное отвратил меня от неправильных путей поиска решения, на которые я бесполезно потратил бы время. Мои колебания в мини-форуме - результат другой проблемы (нестыковка в моем нерасширенном сознании индексов динамических массивов) :)