Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Эквивалент клипперовской функции L2DI на Delphi, Из клиппера в дельфи 
:(
    Опции темы
Ji2m
Дата 5.12.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня есть исходник клипперовской проги, там использованы функции L2DI и L2BI. Они превращают стринг в число и обратно. Кто нибудь знает точную похожую функцию на дельфи?Или как можно реализовать?


В ассемблере:

Код

;*******
;    I2BIN()
;       Bri и Richie
;
;       Замечание -  Так как, CL-макросы не возвращают (пока) строки,
;               содержащие нулевые байты, функция определяется как 'void'
;               и используется дополнительный вызов _retclen...
;
    CLfunc void I2BIN <int num>

    CLcode
        MOV    AX, num
        MOV    WORD PTR nbuff, AX

        ; заметьте порядок параметров
        Ccall    _retclen <OFFSET(nbuff), SEG(nbuff), 2>

    CLret


;*******
;    L2BIN()
;       Bri и Richie
;
;       Замечание -  Так как, CL-макросы не возвращают (пока) строки,
;               содержащие нулевые байты, функция определяется как 'void'
;               и используется дополнительный вызов _retclen...
;
    CLfunc void L2BIN <long num>

    CLcode
        MOV    AX, LSW(num)
        MOV    DX, MSW(num)

        MOV    WORD PTR nbuff[0], AX
        MOV    WORD PTR nbuff[2], DX

        ; заметьте порядок параметров
        Ccall    _retclen <OFFSET(nbuff), SEG(nbuff), 4>

    CLret


        ; конец ассемблерной п/п
        END



в клиппере:

Код

FUNC L2DI(A)
 * функция: число в символ
 LOCA k:=0, d1, d2, d3, d
 A=IF(A<32767999999999,A,0)
* IF A>=1000000000
 IF ABS(A)>=1000000000    && New row
   d2=CHR(VAL(RIGHT(STR(A),2))+IF(A>=0,32,132))
   d=STR(INT(ABS(A)))
   d1=VAL(RIGHT(d,9))
   d3=VAL(SUBSTR(d,1,LEN(d)-9))
   k=L2BIN(d1)+d2+I2BIN(d3)
 ELSE
   k=L2BIN(INT(ABS(A)))+CHR(VAL(RIGHT(STR(A),2))+IF(A>=0,32,132))+I2BIN(0)
 END
RETU k





PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

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

1. Публиковать ссылки для чисто рекламных целей.

2. Оффтопить, флеймить, говорить не культурно.

Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему.

Задавайте вопросы правильно - как спросите, так вам и ответят.

Разрешено!

Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил.

Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы.

P.S. Размещение рекламы будет строго наказываться!



Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема »


 




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


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

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