|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите перевести из С++ в Delphi
Есть маленькая программка работы с библиотекой dll, это для весового терминала, написана на С++, я ничего не понимаю, может кто поможет перевести в Delphi ?? ПЛИЗЗЗ ОООчень надо.
Вот текст описания dll и пример на С++: ------------------------------------------------------ Перед работой необходимо зарегистрировать библиотеку с помощью утилиты regsvr32. Библиотека содержит три свойства: NumberOfCom – номер com порта.(целое, 32бита) Weight – содержит вес.(строка) Stab – стабилен ли вес. (целое, 32бита) 0 – стабилен, 1 – не стабилен, 2 – перегруз. Библиотека содержит три функции: Open – необходимо вызвать для начала работы с библиотекой. Close – необходимо вызвать по завершению работы с библиотекой. Update – обновляет свойства Weight и Stab. Алгоритм работы: 1. Установить NumberOfCom 2. Open 3. Update 4. Чтение переменных Weight и Stab 5. Если требуется узнать ещё данные, то вернутся к шагу 3. 6. Close Пример программы работы с библиотекой. Пример написан на языке C++: Код:
// Test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> using namespace std; #import "C:\D\mega_proj\COM_DLL\Ci2001A\Ci2001A\Ci2001A\Ci2001A\Debug\Ci2001A.dll" int _tmain(int argc, _TCHAR* argv[]) { CoInitialize(0); try { Ci2001ALib::IIndicPtr p("Ci2001A.Indic"); p->NumberOfCom = 1; p->Open(); // Читаем данные p->Update(); cout << p->Weight; cout << p->Stab; // Ждем пять сек. Sleep(5000); // Читаем данные p->Update(); cout << p->Weight; cout << p->Stab; p->Close(); } catch( _com_error &e ) { MessageBox( 0, e.Description(), L"F", MB_OK ); MessageBox( 0, e.ErrorMessage(), L"F", MB_OK ); } CoUninitialize(); return 0; } Заранее спасибо. Последний раз редактировалось Bargest, 19.09.2012 в 23:23. |
#2
|
|||
|
|||
Импортируй нужную библиотеку типов из DLL - там все будет.
Соответсвенно, у тебя будут просто вызовы соотв. компонента. Примерно так (точнее не могу сказать из-за отсутсвия самой библиотеки): Код:
program test; {$APPTYPE CONSOLE} uses Windows, SysUtils, Ci2001A_TLB; // <-файл будет после импорта либы var C : IIndic; begin CoInitialize(0); C := CoIndic.Create; Try С.NumberOfCom := 1; C.Open; C.Update; WriteLn(C.Weight); WriteLn(C.Stab); Sleep(5000); C.Update; WriteLn(C.Weight); WriteLn(C.Stab); C.Close(); Finally C := Nil; // Не обязательно CoUninitialize(); End; end. |
#3
|
|||
|
|||
lmikle огромное спасибо, попробую.
P.S. Вот ссылка на DLL http://cas.ru/upload/iblock/5fa/DLL-...%20RS-232z.zip может что нибудь добавите Bargest: Дико извиняюсь. Последний раз редактировалось gosha_msh, 20.09.2012 в 10:25. |