![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Есть программа на С++ (я сам в С++ не очень разбираюсь)
фрагмент кода: Код:
int CIoTestDlg::init() { char buf[256]; int i, card_id, index, n=0; CString valid_string; ***** index = m_pMMC->index[ i ]; card_id = m_pMMC->inwN(index, RID) & 0x0f; valid_string = m_pMMC->_ValidString(); sprintf(buf,"%2d: Valid string('%s'), Board id(%d)", i, (LPCTSTR)valid_string, card_id); m_ctrlCardList.AddString(buf); В оригинале возвращает "PMC-4B-PCI" описание библиотечной функции: Код:
char* ValidString( void ); Кусок кода: Код:
var s:integer; i:THandle; sa,sa1:word; OpCardN:TOpenCardN; ValStr:TValidString; ClCardN:TCloseCardN; InW:TInwN; card:PChar; cn:string; begin BoardIndex:=0; if libHandle=0 then libhandle:=loadLibrary('MC8041P.DLL'); if libhandle<>0 then begin memo1.Lines.Add('MC8041P.DLL - загружена'); @OpCardN := GetProcAddress(libhandle, 'OpenCard_N'); @ValStr := GetProcAddress(libhandle, 'ValidString'); @ClCardN:= GetProcAddress(libhandle, 'CloseCard_N'); @InW:= GetProcAddress(libhandle, 'InW_N'); if Assigned(OpCardN) and Assigned(ValStr)and Assigned(ClCardN)and Assigned(ClCardN)and Assigned(InW)then begin //основная работа memo1.Lines.Add('Процедуры из библиотеки - загружены'); memo1.Lines.Add('Поиск доступных карт'); for s := 0 to 16 do begin i:=OpCardN(s,@isr_Sub,0,0,0); if i<>0 then begin BoardIndex:=s; memo1.Lines.Add('Доступна карта -ID:'+inttostr(s)); card:=ValStr(); cn:=strpas(card); sa1:=$10; sa:=InW(BoardIndex,sa1); sa:= sa and $f; Скорей всего что-то не так делаю, а что не могу понять |
#2
|
||||
|
||||
![]() Код:
type TValidString = function: PChar stdcall; Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
|||
|
|||
![]() Цитата:
Код:
type TValidString=function():PChar;Cdecl; |
#4
|
||||
|
||||
![]() Переменная "card" в дебаге нормальные данные содержит?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#5
|
|||
|
|||
![]() Цитата:
|
#6
|
||||
|
||||
![]() Ах вот оно что, Delphi какой версии? Если какая-то из новых (не помню, с которой юникод используется) - то меняем PChar на PAnsiChar.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
Этот пользователь сказал Спасибо PhoeniX за это полезное сообщение: | ||
митрийG (28.10.2012)
|
#7
|
|||
|
|||
![]() Цитата:
Заработало! |