powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не приятно удивлен!
5 сообщений из 5, страница 1 из 1
Не приятно удивлен!
    #32619232
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использовал такую функцию:
************************************************
* Преобразование из Str в Str_Hex
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
************************************************
    Procedure DecToHex
    Lparameters lcBuff
    Local  nDecimal, nDigits, lcHexBUFF
    lcHexBUFF = []
    nDigits =  2 
    For i=  1  To Len(lcBuff)
        nDecimal = Asc(Substr(lcBuff,i, 1 ))
        lcHexBUFF=lcHexBUFF+' '+Right(Transform(nDecimal, "@0"), Iif(nDigits <=  8 , nDigits,  8 ))
    Endfor
    Return lcHexBUFF
    Endproc
Из порта данные лезут, скорость большая.
Вот я их и конверчу в hex. работает работает , а потом деликатно говорит мне
что не могу я прочитать память по такому-то адресу и все.

Переписал на С++ FLL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
void StrToHex(ParamBlk FAR *parm)
{
BYTE *szBuff;
char *szHex;
char tmpBuff[ 5 ];
Value val={ 0 };
_Load(&parm->p[ 0 ].loc, &val);
int len_str = val.ev_length;               
szBuff =(BYTE*)xmalloc(len_str);
szHex =(char*)xmalloc(len_str* 5 );
memmove(szBuff,_HandToPtr(val.ev_handle),len_str);
 _FreeHand(val.ev_handle);
szBuff[len_str]='\0';
for(int i= 0 ;i<len_str;i++)
{
sprintf(tmpBuff," ox%X",szBuff[i]);
strncat(szHex,tmpBuff, 5 );
}
 _RetChar(szHex);
 xfree(szBuff);
 xfree(szHex);
}
И никаких проблем, все стабильно. Что-то Большой брат перемудрил однако.
...
Рейтинг: 0 / 0
Не приятно удивлен!
    #32619493
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неплохо было бы указывать версию фокса и номер сервис пака...
...
Рейтинг: 0 / 0
Не приятно удивлен!
    #32619699
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так?:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
*
*  convert from decimal to bin, oct, hex
*
FUNCTION Dec2BinOctHex
  LPARAMETERS tnDecValue AS LONG, tnBasis AS INTEGER
  LOCAL lnWorkValue AS LONG
  LOCAL lcResult AS STRING
  LOCAL lnMod AS INTEGER
  #DEFINE C_RANGE	"0123456789ABCDEF"
  lnWorkValue = tnDecValue
  lcResult = ""
  DO WHILE lnWorkValue => tnBasis
    lnMod = lnWorkValue % tnBasis
    lnWorkValue = INT(lnWorkValue / tnBasis)
    lcResult = SUBSTR(C_RANGE, lnMod +  1 ,  1 ) + lcResult
  ENDDO
  lcResult = SUBSTR(C_RANGE, lnWorkValue +  1 ,  1 ) + lcResult
  IF LEN(lcResult) %  2  =  1 
    lcResult = "0" + lcResult
  ENDIF
  RETURN lcResult
ENDFUNC
...
Рейтинг: 0 / 0
Не приятно удивлен!
    #32620472
piva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
Procedure DecToHex
Lparameters lcBuff
Return StrConv(lcBuff, 15 ) &&Converts single-byte characters in cExpression to encoded hexBinary.
...
Рейтинг: 0 / 0
Не приятно удивлен!
    #32620677
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То Сrip: VFP 8.0 SP1
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не приятно удивлен!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]