Консультация № 17154
17.02.2005, 19:48
0.00 руб.
0 2 2
Уважаемые эксперты.
При попытке вывести результат из dll (в приложении) выскакивает ругань,вывод я делаю так
procedure TForm1.Button1Click(Sender: TObject);
var
temp:byte;
begin
Temp := Read_T(romsensor[0,0]);// ‘ считать температуру сенсора
if temp=255 then
label1.Caption:=‘error‘;
label1.Caption:=FormatFloat(‘0.00‘,Temp)+‘‘‘C‘;
при пошаговом исполнении ошибка вылетает на строке Temp := Read_T(romsensor[0,0]),а если убрать строку label1.Caption:=FormatFloat(‘0.00‘,Temp)+‘‘‘C‘; то ошибки нет но и значение temp становится другим.Подскажите в чем дело.
С уважением Антон.


Приложение:
int _stdcall Read_T(byte RomS[]){ int i,temp,rvalue=1,x,y,b; int RomBit[72]; byte RomSens[9]; for (i=0;i<9;i++) {RomSens[i]=RomS[i]; RomS[i]=0;}temp=Init_Dev(); if (temp!=1) {rvalue=255; return rvalue;}OutByte(0x55);// Match Rom for (i=0;i<8;i++) {OutByte(RomSens[i]);} // 64-bit ROM codeOutByte(0x44); // convert Temper TimeDelay(ReadTime);temp=Init_Dev();if (temp!=1) {rvalue=255; return rvalue;}OutByte(0x55); // Match Romfor (i=0;i<8;i++) {OutByte(RomSens[i]);} // 64-bit ROM codeOutByte(0xBE); // Read scratchpad// ****** ****** ******* ******* ****** ****** ******* for (i=0;i<72;i++) { temp=OutBit(0xFF); RomBit[i]=temp; } x=0; for (i=0;i<65;i=i+8) { b=0; for (y=7;y>-1;y--) { temp=b<<1; b=temp+RomBit[y+i];} RomS[x]=b; x++; } return rvalue; }

Обсуждение

Неизвестный
17.02.2005, 20:46
общий
это ответ
Здравствуйте, антон!
Так не сказать, а что у тебя в переменной после вызова(в HEX без всякого FOrmat)
и что дебаггер кажет
давно
Мастер-Эксперт
425
4118
18.02.2005, 06:57
общий
это ответ
Здравствуйте, антон!
А какая ошибка то вылетает? :)
Функция в dll‘ке возвращает значение типа INT (в Дельфи это INTEGER), а Вы это значение пытаетесь присвоить переменной типа BYTE.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа