[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как в PHP указать тип данных LONG
Страницы: 1, 2, 3
Danil_lll
Добрый день.
есть код на С#/С++.


string inData = textBox7.
long outDateTime;

Hybrid.GetTimeFromStart(inData, 0, 0, out outDateTime);


Нужно на PHP тоже самое сделать, т.е. с помощь этой функции из COM-библиотеки.

Пробую вот так:
$inData = $textBOX2;
$datetime = 0;
$PHP_LIB->TSAGetTimeFromStart($inData, 0, 0, &$datetime);


В PHP не принимает последний параметр outDateTime.

Пишет следующее:


<!--error--><br />
<b>
Fatal error</b>: Uncaught exception 'com_exception' with message 'Parameter 0: Несовпадение типов.
' in Z:\home\test\www\...
Stack trace:
#0 Z:\home\test\www\2.09\book\GetTimeFromStart.php(3): com->TSAGetTimeFromStart('-----BEGIN -...', 0, 0, 0)
#1 Z:\home\test\www\2.09\2.php(79): include('Z:\home\test\ww...')
#2 {main}
thrown in <b>Z:\home\test\www\2.09\book\GetTimeFromStart.php</b> on line <b>3</b><br />


Функция в COM-библиотеке:


STDMETHODIMP HybridCOM::GetTimeFromStart(BSTR inData, INT flags, INT sigId, DATE* outDateTime)
{
...
}


Подскажите, что можно сделать?
Эли4ка
Снова вы к нам с этой библиотекой rolleyes.gif
Цитата
DATE* outDateTime

Указано что-то с датой. А вы видели когда-нибудь дату пишут 0? Я лично нет.

И покажите всю функцию целиком,может там чего не так.
Danil_lll
Цитата (Эли4ка @ 5.09.2018 - 16:06)
Снова вы к нам с этой библиотекой :rolleyes:
Цитата
DATE* outDateTime

Указано что-то с датой. А вы видели когда-нибудь дату пишут 0? Я лично нет.

И покажите всю функцию целиком,может там чего не так.

Да. Я потихоньку разбираюсь с ней) Да вот не все получается...

Вот файл HTML.


<form name="form1" id="form1" action="2.php" method="post">

<input
type="button" id="signData" name="signData" value="Подписать данные" style="width: 280px" ><br>
<input
type="button" id="verifyData" name="verifyData" value="Проверить данные" style="width: 280px" ><br>
<input
type="button" id="getTimeSig" name="getTimeSig" value="Получить время подписи" style="width: 280px"><br><br>

<!--__________________________________________3 выходных окна____________________________________-->
<tr><td colspan="3" style="width: 730px; height: 220px"><textarea name="textBOX1" class="result maxWidth" style="width: 730px; height: 220px"></textarea></td></tr>
<tr><td
colspan="3" style="width: 730px; height: 220px"><textarea name="textBOX2" class="maxWidth" style="width: 730px; height: 220px"></textarea></td></tr>
<tr><td
colspan="3" style="width: 730px; height: 120px"><textarea name="textBOX3" class="maxWidth" style="width: 730px; height: 120px"></textarea></td></
<input name="infoIden" id="infoIden" type="hidden" value="">
</form>



Вот PHP:


<? header('Content-Type:text/html; charset=utf-8');

$PHP_LIB = new COM('HybridLib.Hybrid') ;
$textBOX1 = $_POST['textBOX1'];
$textBOX2 = $_POST['textBOX2'];
$infoIden = $_POST['infoIden'];

if($infoIden == "Подписать данные")
{
$outSign = "";
$PHP_LIB-> SignData("256", 0, $textBOX1, &$outSign);
echo $outSign;
}
elseif($infoIden == "Получить время подписи")
{
<?php
$inData = $textBOX2;
$datetime = 0;
$PHP_LIB->TSAGetTimeFromSig($inData, 0, 0, &$datetime);
echo $datetime;
}
?>



Вот JavaScript:


     $(document).ready(function(){
$('body').on('click', '#signData', function(){
var form = $(this).parents('form#form1');
window.document.form1.infoIden.value = "Подписать данные" ;
$('textarea[name=textBOX2]').val('');
form.ajaxSubmit({
beforeSubmit: function(){
var ar_Field = form.find('input').fieldSerialize().split('&');
for (var i = 0; i < ar_Field.length; i++)
{
var val = ar_Field[i].split('=');
}
}
,
complete: function(xhr) {
console.log(xhr);
$('textarea[name=textBOX2]').val(xhr.responseText);
}
}
);
});
});

$(document).ready(function(){
$('body').on('click', '#getTimeSig', function(){
var form = $(this).parents('form#form1');
window.document.form1.infoIden.value = "Получить время подписи" ;
$('textarea[name=textBOX3]').val('');
form.ajaxSubmit({
beforeSubmit: function(){
var ar_Field = form.find('input').fieldSerialize().split('&');
for (var i = 0; i < ar_Field.length; i++)
{
var val = ar_Field[i].split('=');
}
}
,
complete: function(xhr) {
console.log(xhr);
$('textarea[name=textBOX3]').val(xhr.responseText);
}
}
);
});
});


--- Добавлено ---
А вот с#:

  private void btn_GetTimeFromSig_Click(object sender, EventArgs e)
{
string inData = textBox2.Text;
long outDateTime = 0;
KalkanCOMTest.TSAGetTimeFromSig(inData, 0, 0, out outDateTime);

DateTime date = new DateTime(1970, 1, 1).AddSeconds(outDateTime).AddHours(6); //Добавим 6 часов - часовой пояс Алматы
textBox8.Text += "Время подписи: " + date.ToString("dd.MM.yyyy HH-mm-ss") + " ALMT";
}



А вот с++ из COM-библиотеки:


STDMETHODIMP HybridCOM::TSAGetTimeFromSig(BSTR inData, INT flags, INT sigId, DATE* outDateTime)
{
time_t tmpOutDateTime = 0;
int tmpInDataLength = wcslen(inData) + 1;
std::vector<char> tmpInData(tmpInDataLength);

WideCharToMultiByte(CP_UTF8, 0, (LPCWCH)inData, tmpInDataLength, (LPSTR)&tmpInData[0], tmpInDataLength, NULL, NULL);

kc_funcs->KC_GetTimeFromSig(&tmpInData[0], tmpInDataLength, flags, sigId, &tmpOutDateTime);

return S_OK;



Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.