Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DLL не работает в новом компиляторе, DLL 
:(
    Опции темы
mishapk
Дата 17.8.2012, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 26.1.2012

Репутация: нет
Всего: нет



Всем привет!.
Имеется тестовая программа для работы с DLL библиотекой.
DLL библиотека написана на C++ Builder.
Функции библиотеки - работа с com-портом (RS-485).

Тестовая программа написана на Delphi7. Все прекрасно работает.
Этот же проект я запускаю через Embarcadero® Delphi® XE и тут начинаются проблемы. 
В общем функции работы с com- портом не как не влияют на com-port. Обмен данными не происходит.
В чем могут быть проблемы?

Выкладываю заголовки функций:
DLL
Код

extern"C" int __stdcall __declspec(dllexport)  OpenComPort(PChar NPort,int baud);
extern"C" void __stdcall __declspec(dllexport) CloseComPort();
unsigned int __fastcall Crc16(unsigned char data, char flag);
void __fastcall SendLin();
extern"C" void __stdcall __declspec(dllexport)  FormatZapr(int Adress, int funct, int subfunct, int n1, int n2, int n3);
extern"C" void __stdcall __declspec(dllexport)  ResultZapr(  int * a, int *b, PChar *c,PChar *d,PChar *e);


Delphi
Код

 procedure  CloseComPort; stdcall; external 'my.dll';
 function  OpenComPort(portname:PChar;BaudRate:integer):integer; stdcall; external 'my.dll';
 procedure  FormatZapr( Adress,  funct,  subfunct,  n1,  n2, n3:integer); stdcall; external 'my.dll';
 procedure ResultZapr( var a:integer; var b:integer; var c:PChar; var d:PChar ; var e:PChar); stdcall; external 'my.dll';
////////////////////////////////////////////////////////////////////////////////////////////////////
OpenComPort(PChar('com1'),19200);
procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
      c,d,e:Pchar;
      a,b:integer;
      s:string;
begin

   Memo1.Clear; s:='';
    for i:=1 to 4 do
    begin
     FormatZapr(1,68,4,adr[i],1,0);
    ResultZapr(a,b,c,d,e);
    sleep(10);
    if  adr[i]=1 then begin
    s:=s+IntToStr(adr[i])+':'+sdr[i]+':'+ReadRI(AnsiString(c)) +':'+result(b);
     end
   else

..................................................................



Может есть не совместимые типы данных?
PM MAIL   Вверх
northener
Дата 17.8.2012, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(mishapk @  17.8.2012,  13:59 Найти цитируемый пост)
Может есть не совместимые типы данных? 

PChar в Д7 и PChar в ХЕ это две большие разницы.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
mishapk
Дата 17.8.2012, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 26.1.2012

Репутация: нет
Всего: нет



Как исправить?
PM MAIL   Вверх
northener
Дата 17.8.2012, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(mishapk @  17.8.2012,  14:15 Найти цитируемый пост)
Как исправить? 

Например использовать PAnsiChar вместо PChar.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Frees
Дата 17.8.2012, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



Статья где то есть по переходу на юникодную версию делфи, там целый список что надо проверить и что перестанет работать.


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
mishapk
Дата 17.8.2012, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 26.1.2012

Репутация: нет
Всего: нет



Ясно. Не подключался COM порт. Так как при его открытии ему приходило не "COM1" а только первая буква "C".
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.