string sBuf10 = " "; string e1=StringConcatenate("USD","EUR"); sBuf10 = e1; SendText("Form2",e1);
Через буфер не помогло, критическая ошибка.
БИЛД = 226.
Поставьте билд 225 - тут уже обсуждалось, что в 226-м билде идёт не правильное распределение памяти. И переименуйте файл LiveUpdate.exe во что-нибудь иное, например в LiveUpdate123.exe - это чтоб терминал не доставал Вас своими попытками обновиться.
Через буфер не помогло, критическая ошибка.
Билд 225, не помог в решении проблемы.
Обращаюсь к разработчикам. Как можно решить эту проблему или посоветуйте другой способ передать строку из Експерта в стороннее приложение.
Реализуй передачу не строки, а массив ASCII кодов этой строки. В DLL необходимо осуществить выделение памяти под этот динамический массив, и произвести обратное преобразование ASCII кодов в строку, вот собственно и все.
Т.е. передавать массив целых чисел (Integer) ASCII кодов?
Но в MQL нет функции преобразования символа в ASCII код.
Вот код ДЛЛ:
procedure SendText(hwnd:PChar; Content: String); Stdcall;
var
cd: TCopyDataStruct;
hw:integer;
begin
cd.cbData := Length(Content) + 1;
cd.lpData := PChar(Content);
hw:=FindWindow(hwnd, nil);
SendMessage(hw, WM_COPYDATA, 0, LParam(@cd));
end;
Может попробовать передавать текст не как String, а как Pchar, по совету zhuki, буду пробовать...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, Уважаемые форумчане!
Нужна помощь!!! Не получается передать строку через DLL, во внешнюю программу.
Проблема в следующем: в Дельфи создал ДЛЛ, которая через SendMessage передает строку (тип String) во внешнюю прогу.
В експерте, описываю вызов процедуры:
#import "C:\Program Files\Borland\Delphi7\Projects\DLL\sendmsg.dll"
int SendText(string tr,string rty1);
#import
Теперь передаем строку в другую прогу:
string e1="13;CHF/USD;01.01.2001;03.03.2003;777**************8;";
SendText("Form2",e1);
При этом все работает нормально, и строка передается в окно Form2 (написано на Дельфи), и обрабатывается.
НО, ЕСЛИ ПРОИЗВЕСТИ ОБЪЕДИНЕНИЕ СТРОК ПЕРЕД ПЕРЕДАЧЕЙ:
string e1=StringConcatenate("USD","EUR");
SendText("Form2",e1);
Терминал выдает сообщение о критической ошибке и закрывается.
Подскажите что нужно сделать, что исправить.
Если объединенную строку передавать между приложениями написанными на Дельфи, все работает превосходно, объединенная строка передается и обрабатывается в окне Form2.