<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Прошу помощь в связке trans2quik.dll (1.3) с Delphi]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Прошу помощь в связке trans2quik.dll (1.3) с Delphi форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 03 May 2026 07:32:19 +0300</pubDate>
		<item>
			<title>Прошу помощь в связке trans2quik.dll (1.3) с Delphi</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum12/message58008/topic6717/">Прошу помощь в связке trans2quik.dll (1.3) с Delphi</a></b> в форуме <a href="http://forum.quik.ru/forum12/">Динамический импорт транзакций</a>. <br />
			Добрый день.<br /><br />Второй день бьюсь с проблемой. Такое ощущение, что хожу по кругу, не вижу решения, которое под носом.<br /><br />Delphi XE8 (проект в 64bit) + trans2quik.dll (1.3) + QUIK 9.2.1.4<br /><br />Подключение к QUIK происходит успешно (t2q_Connect)<br />Далее пробую Асинхронную отправку транзакции и Синхронную отправку транзакции.<br />При асинхронной отправке (t2q_SendAsyncTran) транзакция уходит без ошибки, получаю ответ TRANS2QUIK_SUCCESS. В QUIK транзакция попадает в счетчик полученных транзакций, но на сервер почему-то не отправляется.<br />[img]file:///E:/92/01.jpg[/img]<br /><br />При синхронной отправке, которая более интересна, получаю ACCESS VIOLATION. Подозреваю, что что-то не так с переменными, возможно напутал с типами.<br />Код такой примерно:<br /><br /><br /><br /><br /><br />unit Unit1;<br /><br />interface<br /><br />uses<br /> &nbsp;Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ComObj, ActiveX;<br /><br />...<br /><br />var<br /> &nbsp;Form1: TForm1;<br /> &nbsp;dHandle: hModule;<br /><br /> &nbsp;t2q_connect: function (lpstConnectionParamsString: LPSTR; var pnExtendedErrorCode: long; lpstrErrorMessage: LPSTR; dwErrorMessageSize: DWORD): long; stdcall;<br /> &nbsp;t2q_SendAsyncTran: function (lpstTransactionString: LPSTR; var pnExtendedErrorCode: long; lpstErrorMessage: LPSTR; dwErrorMessageSize: DWORD): long; stdcall;<br /> &nbsp;t2q_SendSyncTran: function (lpstTransactionString: LPSTR; var pnReplyCode: long; pdwTransId: PDWORD; pdOrderNum: EntityNumber; lpstrResultMessage: LPSTR; dwResultMessageSize: DWORD; var pnExtendedErrorCode: long; lpstErrorMessage: LPSTR; dwErrorMessageSize: DWORD): long; stdcall;<br /><br />...<br /><br />procedure TForm1.FormCreate(Sender: TObject); //запуск программы, подключение trans2quik<br />var<br /> &nbsp;ErrCode: long;<br /> &nbsp;ErrMsg: PAnsiChar;<br /> &nbsp;ErrMsgSize: Dword;<br /> &nbsp;res: integer;<br />begin<br /> &nbsp;ErrCode:=0;<br /> &nbsp;ErrMsg:=nil;<br /> &nbsp;ErrMsgSize:=0;<br /> &nbsp;dHandle:=LoadLibrary(&#39;trans2quik.dll&#39;);<br /> &nbsp;@t2q_Connect:=GetProcAddress(dHandle, PWideChar(&#39;TRANS2QUIK_CONNECT&#39;));<br /> &nbsp;@t2q_SendAsyncTran:=GetProcAddress(dHandle, PWideChar(&#39;TRANS2QUIK_SEND_ASYNC_TRANSACTION&#39;));<br /> &nbsp;@t2q_SendSyncTran:=GetProcAddress(dHandle, PWideChar(&#39;TRANS2QUIK_SEND_SYNC_TRANSACTION&#39;));<br /> &nbsp;res:=t2q_Connect(PAnsiChar(RawByteString(Edit1.Text)), ErrCode, ErrMsg, ErrMsgSize);<br /> &nbsp;Log(&#39;Сообщение о подключении: &#39;+t2q_state&#91;ErrCode&#93;);<br />end;<br /><br />procedure TForm1.Button4Click(Sender: TObject); //асинхронная отправка<br />var<br /> &nbsp;ErrCode: long;<br /> &nbsp;ErrMsg: PAnsiChar;<br /> &nbsp;ErrMsgSize: Dword;<br /> &nbsp;res: long;<br />begin<br /> &nbsp;ErrCode:=0;<br /> &nbsp;ErrMsg:=nil;<br /> &nbsp;ErrMsgSize:=0;<br /> &nbsp;res:=t2q_SendAsyncTran(LPSTR(AnsiString(Memo1.Text)), ErrCode, ErrMsg, ErrMsgSize);<br /> &nbsp;Log(&#39;Отправка транзакции на сервер QUIK: &#39;+t2q_state&#91;res&#93;);<br />end;<br /><br />procedure TForm1.Button5Click(Sender: TObject); //синхронная отправка<br />var<br /> &nbsp;ErrCode, pnRC: long;<br /> &nbsp;ErrMsg: PAnsiChar;<br /> &nbsp;ErrMsgSize, dwRMS: Dword;<br /> &nbsp;RM: PAnsiChar;<br /> &nbsp;pdwTI: PDWORD;<br /> &nbsp;pdON: UInt64;<br /> &nbsp;res: integer;<br />begin<br /> &nbsp;ErrCode:=0;<br /> &nbsp;ErrMsg:=nil;<br /> &nbsp;ErrMsgSize:=0;<br /> &nbsp;pnRC:=0;<br /> &nbsp;RM:=nil;<br /> &nbsp;dwRMS:=0;<br /> &nbsp;pdwTI:=nil;<br /> &nbsp;pdON:=0;<br /> &nbsp;res:=t2q_SendSyncTran(LPSTR(AnsiString(Memo1.Text)), pnRC, pdwTI, pdON, RM, dwRMS, ErrCode, ErrMsg, ErrMsgSize);<br /> &nbsp;Log(&#39;Отправка транзакции на сервер QUIK: &#39;+t2q_state&#91;res&#93;);<br />end;<br /><br /><br /><br />В Memo1 текст транзакции. Он точно рабочий, т.к. нашел в интернете пример проекта для работы в 32бит trans2quik 1.2, скомпилил на Delphi7 и проверил на QUIK 7.24, транзакция успешно доходит до сервера.<br />Что со мной не так?<br />Может быть, кто-нибудь поделится рабочим 64бит проектом, в котором работает TRANS2QUIK_SEND_SYNC_TRANSACTION? <br />
			<i>17.09.2021 17:03:24, Павел.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum12/message58008/topic6717/</link>
			<guid>http://forum.quik.ru/messages/forum12/message58008/topic6717/</guid>
			<pubDate>Fri, 17 Sep 2021 17:03:24 +0300</pubDate>
			<category>Динамический импорт транзакций</category>
		</item>
	</channel>
</rss>
