Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Языки программирования в TRACE MODE 6 / Algorithm Programming Languages » Функции из внешней DLL

   
Автор / Author Тема / Topic: Функции из внешней DLL
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 1 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте, у меня есть библиотека в которой есть функция принимающая строковой параметр. Какой тип мне следует использовать в MS VC++ 6.0 для того чтобы с программы на ST можно было передать строку в функцию?
Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 1 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Для теста пишу значение параметра функции в файл из длл и потом смотрю, имеем только одну первую букву и все.
Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 1 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Интересно получается, попробывал писать в файл 20 первых позиций параметра функции в длл, и в файле увидел что после каждого символа стоит пустой символ, поэтому строка и состояла из одного символа (т.к пустой символ в си это конец строки). Приходится выдергивать каждый четный символ чтобы склеить нормальную строку, но ведь это нехорошо, может чего не так делаю? В проекте TM параметры типа String не указатели. В длл параметры объявлены следующим образом: char param[] как всегда при работе со строками. Пробывал через указатели тоже самое.
Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 1 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Проблемус пустыми символами решил путем их удаления в самой библиотеке (конечно это плохо, былобы хорошо еслибы строки передавались нормально). В итоге функция заработала, но обнаружилась такая особенность: Если в программе на ST откуда вызывается функция из DLL (в качестве параметров принимает строковой тип)
написать MyFunc("lalala", "tralala") то все конструкции стоящие и после и до вызова функции вообще не обрабатываются (просто не выполняются и все тут [Недоумение / Confused] ) а если вызывать так:
a := "lalala";
b := "tralala";
MyFunc(a, b);
то все отлично, все работает [Недоумение / Confused] [Недоумение / Confused] [Недоумение / Confused]
Обясните мне, может я что нитак делаю? Или это так задуманно как и с пустыми символами [Улыбка / Smile]

Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В ТМ6 все строки имеют формат UNICODE - Вам это необходимо учесть в своей DLL, тогда не будет вышеописанных проблем.
Сообщения / Posts 17114 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 1 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте.
Создаю пустой проект в нем программу. Далее в разделе "Внешнии библиотеки" добавляю библиотеку, добавляю функцию и в поле "Тип возвращаемого значения" указываю char, нажимаю F7 получаю синтаксическую ошибку. Так как мне сделать так чтобы я мог нормально принять значение типа char от внешней функции?
Например функция такая:
extern "C" __declspec(dllexport) char __cdecl MyFunc()
{
return 'C';
}
как мне получить это самое "C" в программе на ST?
P.S. работаю в релизе 6.04 в старых тоже такое было.

Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Майборода Алексей
Forum Haunter / Завсегдатай форума
Участник № / Member № 1701


Icon 5 отправлено / posted      Профиль для / Profile for Майборода Алексей           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В этой ветке стоит ждать ответа?
Или у всех отпуск... [Улыбка / Smile]

Сообщения / Posts 106 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Отпуск будет.
Но ответ есть. Это наша ошибка. Будем править.

Сообщения / Posts 17114 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2