コード例 #1
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::ShiftReport(BSTR FirmID, LONG IsZReport, LONG* ErrorCode)
{
    InitCmd();
    switch (IsZReport)
    {
    case 1:
        // команда
        to_numeric(204, m_Cmd, 3, m_Len);   //ZREPORT
        // пароль
        to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
        // код оператора
        to_numeric(11, m_Cmd + m_Len, 2, m_Len);
        break;
    case 2:
        // команда
        to_numeric(218, m_Cmd, 3, m_Len);   //XREPORT
        // пароль
        to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
        break;
    case 3:
        // команда
        to_numeric(218, m_Cmd, 3, m_Len);   //XREPORT
        // пароль
        to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
        break;
    }
    
    m_RspLen = 0;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    ClearPrintBuffer();
    return S_OK;
}
コード例 #2
0
void QuickAddCapacitorDialog::slotAttemptAutoComplete()
{
    QString text = ui->capacitanceValueLineEdit->text().trimmed();
    //We accept 3 digit value codes with an optional tolerance code
    if(text.length()==3 || text.length()==4){
        QString multiplicandStr = text.left(2);
        QChar multiplierChar = text.at(2);
        bool multiplicandOk;
        int multiplicand = multiplicandStr.toInt(&multiplicandOk);        
        if(multiplicandOk && multiplierChar.isDigit()){
            double capacitance = multiplicand * pow10(-12);
            int multiplierIdx = to_char(multiplierChar) - '0';
            if(multiplierIdx >= 0 && multiplierIdx <= 9){
                capacitance = capacitance * MULTIPLIERS[multiplierIdx];
            }
            QString capacitanceStr = UnitFormatter::format(capacitance, _capacitanceParam.unitSymbol());
            ui->capacitanceValueLineEdit->setText(capacitanceStr);
        }
        if(text.length()==4){
            QChar toleranceChar = text.at(3);
            if(toleranceChar.isLetter()){
                QString tolerance = lookupTolerance(to_char(toleranceChar));
                if(!tolerance.isEmpty()){
                    ui->toleranceLineEdit->setText(tolerance);
                }
            }
        }
    }

}
コード例 #3
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::GetHardwareInfo(BSTR FirmID, LONG* HardwareType, LONG* HardwareNumber, LONG* IsFiscalized, LONG* ErrorCode)
{

// серийный номер
    InitCmd();
    // команда
    to_numeric(103, m_Cmd, 3, m_Len);   //GETSERIAL
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);

    m_RspLen = 12;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if (*ErrorCode == E_SUCCESS)
        *HardwareNumber = atol((char *)m_Rsp);

// количество фискализаций
    InitCmd();
    // команда
    to_numeric(105, m_Cmd, 3, m_Len);   //GETFISCNUM
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);

    m_RspLen = 2;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if (*ErrorCode == E_SUCCESS)
        atol((char*)m_Rsp) ? *IsFiscalized = 1 : *IsFiscalized = 0;

// тип драйвера
    *HardwareType = m_ECRList.GetHardwareType();

    return S_OK;
}
コード例 #4
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::Fiscalization(BSTR FirmID, LONG OldPassword, LONG NewPassword, ULONGLONG MachineRegNum, ULONGLONG TaxpayerIndNum, LONG* ErrorCode)
{
    LONG IsFiscalized = 0;
    CHAR szOldPassword[8];
    ZeroMemory(szOldPassword, 8);
    memset(szOldPassword, 32, 8);

    // количество фискализаций
    InitCmd();
    // команда
    to_numeric(105, m_Cmd, 3, m_Len);   //GETFISCNUM
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);

    m_RspLen = 2;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    atol((char*)m_Rsp) ? IsFiscalized = 1 : IsFiscalized = 0;

    if (IsFiscalized)	// если ФР уже фискализован, используем старый пароль		
        sprintf(szOldPassword, "%08d", OldPassword);
    else			// если ФР не фискализован, в качестве пароля используется серийный номер
    {
        InitCmd();
        // команда
        to_numeric(103, m_Cmd, 3, m_Len);   //GETSERIAL
        // пароль
        to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);

        m_RspLen = 12;
        m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);

        CopyMemory(szOldPassword, m_Rsp, 8);
    }

    InitCmd();
    // команда
    to_numeric(302, m_Cmd, 3, m_Len);   //FISCALISATION
    // пароль
    to_char(szOldPassword, m_Cmd + m_Len, 8, m_Len);
    // регистрационный номер кассы
    to_numeric((LONG)MachineRegNum, m_Cmd + m_Len, 12, m_Len);   
    // ИНН
    to_numeric((LONG)TaxpayerIndNum, m_Cmd + m_Len, 12, m_Len);   
    // положение десятичной точки в суммах (резерв)
    to_numeric(2, m_Cmd + m_Len, 1, m_Len);   
    // новый пароль
    to_numeric(NewPassword, m_Cmd + m_Len, 8, m_Len);   

    m_RspLen = 0;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    
    return S_OK;
}
コード例 #5
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::MoveCash(BSTR FirmID, LONG Money, LONG DirectionIn, LONG* ErrorCode)
{
    DWORD dwDocType;
    DirectionIn ? dwDocType = CashInDocument : dwDocType = CashOutDocument;

    // открыть документ
    OpenDocument(FirmID, DEP_NO, ErrorCode, dwDocType);
    if (*ErrorCode == E_SUCCESS)
    {
        PrintBuffer(FirmID, ErrorCode);
        if (*ErrorCode == E_SUCCESS)
        {
            InitCmd();
            // команда
            to_numeric(214, m_Cmd, 3, m_Len);   //SETTENDER
            // пароль
            to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
            // тип оплаты
            to_numeric(0, m_Cmd + m_Len, 2, m_Len);   
            // сумма
            to_smoney(Money, m_Cmd + m_Len, 10, m_Len);   

            m_RspLen = 11;
            m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);

            if (*ErrorCode == E_SUCCESS)
                Cut(FirmID, 1, ErrorCode);
        }
    }
    return S_OK;
}
コード例 #6
0
ファイル: vec.c プロジェクト: seanpringle/lt
char*
vec_char (vec_t *vec)
{
  ensure_vec(vec, __func__);

  int count = vec->count;

  push(strf("["));

  for (int i = 0; i < count; i++)
  {
    if (is_vec(vec_get(vec, i)[0]))
      push(strf("vec[]"));
    else
    if (is_map(vec_get(vec, i)[0]))
      push(strf("map[]"));
    else
      push(to_char(vec_get(vec, i)[0]));

    op_concat();
    if (i < count-1)
    {
      push(strf(", "));
      op_concat();
    }
  }

  push(strf("]"));
  op_concat();

  return pop();
}
コード例 #7
0
ファイル: d7_main.cpp プロジェクト: avjgit/notes3
void d7()
{
    const char enqueue    = '+';
    const char dequeue    = '-';
    const char stop       = 'x';

    string msg_get_input  = "Enter +a to enqueue a, - to dequeue, x to stop: ";
    string msg_bad_input  = "Your input is incorrect";
    string msg_dequeue_ok = " was just dequeued.";
    string msg_dequeue_no = "Queue is empty, dequeuing not possible.";
    string msg_end        = "Program is over.";

    Queue q;
    char command = ' ';
    while (command != stop)
    {
        print(msg_get_input);
        cin >> command;
        switch (command)
        {
            case enqueue:
                q.enqueue();
                break;
            case dequeue:
                print( q.is_empty() ? msg_dequeue_no : to_char(q.dequeue()) + msg_dequeue_ok);
                break;
            case stop:
                break;
            default:
                print(msg_bad_input);
        }
    }
    print(msg_end);
}
コード例 #8
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::Cut(BSTR FirmID, LONG CutType, LONG* ErrorCode)
{
    if(!bDocOpened)
    {
        OpenDocument(FirmID, DEP_NO, ErrorCode, NonFiskDocument);
        if (*ErrorCode == E_SUCCESS)
            PrintBuffer(FirmID, ErrorCode);
    }

    InitCmd();
    // команда
    to_numeric(215, m_Cmd, 3, m_Len);   //CLOSE
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    // обрезать чек
    to_numeric(CutType, m_Cmd + m_Len, 1, m_Len);   

    m_RspLen = 0;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if (*ErrorCode == E_SUCCESS)
    {
        ClearPrintBuffer();
        bDocOpened = FALSE;
    }

    return S_OK;
}
コード例 #9
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
VOID CECR::OpenDocument(BSTR FirmID, LONG DepNo, LONG* ErrorCode, DWORD dwOpenType)
{
    char lpDeptName[255];
    
    ZeroMemory(lpDeptName, 255);
    sprintf(lpDeptName, "Отдел %d", DepNo);

    m_ECRList.Win1251ToCP866(lpDeptName);

    // открыть документ
    InitCmd();
    // команда
    to_numeric(205, m_Cmd, 3, m_Len);   //OPEN
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    // тип документа
    to_numeric(dwOpenType, m_Cmd + m_Len, 2, m_Len);   
    // ид. оператора
    to_bchar(m_ECRList.CashierName, m_Cmd + m_Len, strlen(m_ECRList.CashierName), m_Len);
    // код оператора
    to_numeric(13, m_Cmd + m_Len, 2, m_Len);
    // ид. отдела
    to_bchar(lpDeptName, m_Cmd + m_Len, strlen(lpDeptName), m_Len);
    // ид. подотдела
    to_bchar("", m_Cmd + m_Len, 0, m_Len);
    
    m_RspLen = 5;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
// если не удалось открыть документ, поскольку он уже открыт, команду считаем успешной
    if (*ErrorCode == 46)
        *ErrorCode = E_SUCCESS;
    
    bDocOpened = *ErrorCode == E_SUCCESS;
}
コード例 #10
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::SetDateTime(BSTR FirmID, LONG Year, LONG Month, LONG Day, LONG Hour, LONG Minute, LONG Second, LONG* ErrorCode)
{
    InitCmd();
    // команда
    to_numeric(401, m_Cmd, 3, m_Len);   //SETTIMER
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    // день
    to_numeric(Day, m_Cmd + m_Len, 2, m_Len);   
    // месяц
    to_numeric(Month, m_Cmd + m_Len, 2, m_Len);   
    // год
    to_numeric(Year, m_Cmd + m_Len, 4, m_Len);   
    // час
    to_numeric(Hour, m_Cmd + m_Len, 2, m_Len);   
    // минута
    to_numeric(Minute, m_Cmd + m_Len, 2, m_Len);   
    // секунда
    to_numeric(Second, m_Cmd + m_Len, 2, m_Len);   

    m_RspLen = 0;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if (*ErrorCode == 23)
        m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    
    return S_OK;
}
コード例 #11
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::State(BSTR FirmID, LONG *Opened, LONG *Over24h, LONG *Idle, LONG *OutOfPaper, LONG *DocOpened, LONG *DrawerOpened, LONG* ErrorCode)
{
//  статус ФР
    InitCmd();
    // команда
    to_numeric(101, m_Cmd, 3, m_Len);   //GETSTATUS
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    // опрос принтера
    to_numeric(1, m_Cmd + m_Len, 1, m_Len);   

    m_RspLen = 4;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if (*ErrorCode == E_SUCCESS)
    {
        *Opened = ((m_Rsp[0] & 0x10) == 0x10);		// смена открыта
        *Over24h = ((m_Rsp[1] & 0x2) == 0x2);		// смена больше 24 ч.
        *DocOpened = ((m_Rsp[0] & 0x20) == 0x20);	// документ открыт

        *Idle = ((m_Rsp[3] & 0x2) == 0x2);			// принтер не отвечает
        *Idle = *Idle || (m_Rsp[1] & 0x1);			// или блокирован
        *Idle = !*Idle;

        *OutOfPaper = ((m_Rsp[3] & 0x4) == 0x4);	// бумаги нет
        if( *OutOfPaper & ((m_Rsp[0] & 0x40) == 0x40))		// команда зависла и бумаги нет
            *OutOfPaper = 2;
        else if ((m_Rsp[0] & 0x40) == 0x40)					// бумага уже есть, а команда все еще висит
            *OutOfPaper = 3;
    }

//  статус ДЯ
    CashdrawerState(DrawerOpened, ErrorCode);

    return S_OK;
}
コード例 #12
0
ファイル: string.cpp プロジェクト: sakas--/lean
static bool append_char(expr const & e, std::string & r) {
    if (auto c = to_char(e)) {
        r.push_back(*c);
        return true;
    } else {
        return false;
    }
}
コード例 #13
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::PrintBarcode(BSTR FirmID, BYTE nPrintText, BSTR wszData, LONG* ErrorCode)
{
    CW2A szData(wszData);
    m_ECRList.Win1251ToCP866(szData);

    BYTE nPrintBuffer[255];
    DWORD dwBufferSize;

    dwBufferSize = 0;
    memset(nPrintBuffer, 0, 255);

    // позиционирование по центру
    nPrintBuffer[dwBufferSize++] = 0x1B;
    nPrintBuffer[dwBufferSize++] = 'a';
    nPrintBuffer[dwBufferSize++] = 1;

    // высота штрих-кода
    nPrintBuffer[dwBufferSize++] = 0x1D;
    nPrintBuffer[dwBufferSize++] = 'h';
    nPrintBuffer[dwBufferSize++] = 70;

    // ширина кода
    nPrintBuffer[dwBufferSize++] = 0x1D;
    nPrintBuffer[dwBufferSize++] = 'w';
    nPrintBuffer[dwBufferSize++] = 2;

    // цифры
    nPrintBuffer[dwBufferSize++] = 0x1D;
    nPrintBuffer[dwBufferSize++] = 'H';
    nPrintBuffer[dwBufferSize++] = 2;

    // штрих-код
    nPrintBuffer[dwBufferSize++] = 0x1D;
    nPrintBuffer[dwBufferSize++] = 'k';
    nPrintBuffer[dwBufferSize++] = 0x43;
    nPrintBuffer[dwBufferSize++] = 0x0C;

    // данные
    memcpy(nPrintBuffer + dwBufferSize, szData, 12);
    dwBufferSize += 12;

    InitCmd();
    // команда
    to_numeric(237, m_Cmd, 3, m_Len);   //PRINTBARCODE
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    // устройство
    to_numeric(0, m_Cmd + m_Len, 1, m_Len);   
    // текст
    to_bchar((char *)nPrintBuffer, m_Cmd + m_Len, dwBufferSize, m_Len);

    CopyMemory(CommandBuffer[CommandBufferLen++], m_Cmd, m_Len);

    return S_OK;
}
コード例 #14
0
ファイル: p2.cpp プロジェクト: stefansundin/hax
int main() {
	for (;;) {
		int k;
		scanf("%d ", &k);
		if (k == 0) break;

		char e[100],c[100];
		gets(e);
		//printf("e: '%s'\n", e);
		int n = strlen(e);
		c[n] = '\0';
		//printf("n: %d\n", n);

		int i;
		for (i=0; e[i] != '\0'; i++) {
			int j = (k*i)%n;
			int m = (k*j)%n;
			c[m] = to_char((to_number(e[j])+j)%28);
		}
		printf("%s\n", c);

		/*
		for (i=0; e[i] != '\0'; i++) {
			printf("%02d ", i);
		}
		printf("\n ");
		for (i=0; e[i] != '\0'; i++) {
			printf("%c  ", e[i]);
		}
		printf("\n");
		for (i=0; e[i] != '\0'; i++) {
			printf("%02d ", to_number(e[i]));
		}
		printf("\n");
		for (i=0; e[i] != '\0'; i++) {
			int j = (k*i)%n;
			printf("%02d ", j);
		}
		printf("\n ");
		for (i=0; e[i] != '\0'; i++) {
			int j = (k*i)%n;
			printf("%c  ", to_char((to_number(e[j])+j)%28));
		}
		printf("\n");
		for (i=0; e[i] != '\0'; i++) {
			int j = (k*((k*i)%n))%n;
			printf("%02d ", j);
		}
		printf("\n");
		*/
	}

	return 0;
}
コード例 #15
0
ファイル: cql_uuid.cpp プロジェクト: denji/cpp-driver
std::string
cql::cql_uuid_t::to_string() const
{
    std::string result;
    result.reserve(36);
    
    size_t i = 0u;
    for (const cql_byte_t* it_data = _uuid; it_data != _uuid+_size; ++it_data, ++i) {
        const size_t hi = ((*it_data) >> 4) & 0x0F;
        result += to_char(hi);
        
        const size_t lo = (*it_data) & 0x0F;
        result += to_char(lo);
        
        if (i == 3 || i == 5 || i == 7 || i == 9) {
            result += '-';
        }
    }
    return result;
}
コード例 #16
0
ファイル: d7_main.cpp プロジェクト: avjgit/notes3
int main()
{
    // auto tests
    int init_size = 3;
    Queue q;
    int input [] = {1, 2, 3};

    q.enqueue(init_size, input);
    test(to_char(init_size) + " in queue", init_size, q.count());

    q.dequeue();
    test(to_char(init_size-1) + " in queue", init_size-1, q.count());


    // manual input
    d7();

    system("pause");
    return 0;
}
コード例 #17
0
ファイル: xprintf_float.c プロジェクト: mysticTot/learn_c
static int
exponent(char* p0, int expo, int fmtch) {
    char* p, *t;
    char expbuf[MAXEXPDIG];
    p = p0;
    *p++ = fmtch;

    if (expo < 0) {
        expo = -expo;
        *p++ = '-';
    } else {
        *p++ = '+';
    }

    t = expbuf + MAXEXPDIG;

    if (expo > 9) {
        do {
            *--t = to_char(expo % 10);
        } while ((expo /= 10) > 9);

        *--t = to_char(expo);

        for (; t < expbuf + MAXEXPDIG; *p++ = *t++)
            ;
    } else {
        /*
         * Exponents for decimal floating point conversions
         * (%[eEgG]) must be at least two characters long,
         * whereas exponents for hexadecimal conversions can
         * be only one character long.
         */
        if (fmtch == 'e' || fmtch == 'E') {
            *p++ = '0';
        }

        *p++ = to_char(expo);
    }

    return (p - p0);
}
コード例 #18
0
ファイル: document.cpp プロジェクト: Lumate/FastBSON-Cpp
 void Element::serialize_bson<Document> (std::ostringstream &oss) const
 {
     std::ostringstream data_ser;
     for (const std::pair<std::string, Element> &p : (* (std::static_pointer_cast<Document> (m_data))).m_data)
     {
         data_ser << to_char (p.second.m_type) << p.first << X00;
         p.second.encode (data_ser);
     }
     _to_stream (oss, static_cast<int> (5 + data_ser.tellp()));
     oss << data_ser.str() << X00;
     return;
 }
コード例 #19
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::GetDateShiftRange(BSTR FirmID, LONG Password, LONG* Year1, LONG* Month1, LONG* Day1, LONG* Year2, LONG* Month2, LONG* Day2, LONG* Shift1, LONG* Shift2, LONG* ErrorCode)
{
    LONG Hour, Minute, Second;

    GetDateTime(FirmID, Year2, Month2, Day2, &Hour, &Minute, &Second, ErrorCode);	
    *Year2 -= 2000;

    // получим дату закрытия первой смены
    InitCmd();
    // команда
    to_numeric(109, m_Cmd, 3, m_Len);   //GETСSHIFT
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    // номер смены
    to_numeric(1, m_Cmd + m_Len, 4, m_Len);   
    m_RspLen = 24;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if (*ErrorCode == E_SUCCESS)
    {
        *Day1	= from_numeric(m_Rsp + 4, 2);
        *Month1	= from_numeric(m_Rsp + 4 + 2, 2);
        *Year1	= from_numeric(m_Rsp + 4 + 4, 4) - 2000;
    }
    
    InitCmd();
    // команда
    to_numeric(106, m_Cmd, 3, m_Len);   //GETSHIFTNUM
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    m_RspLen = 4;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);

    if (*ErrorCode == E_SUCCESS)
    {
        *Shift1 = 1;
        *Shift2 = from_numeric(m_Rsp, 4);
    }
    
    return S_OK;
}
コード例 #20
0
ファイル: vectors.cpp プロジェクト: Lumate/FastBSON-Cpp
 void Element::serialize_bson<array> (std::ostringstream &oss) const
 {
     int index = 0;
     std::ostringstream data_ser;
     for (const Element &e : * (std::static_pointer_cast<array> (m_data)))
     {
         data_ser << to_char (e.m_type) << std::to_string (index++) << X00;
         e.encode (data_ser);
     }
     _to_stream (oss, static_cast<int> (5 + data_ser.tellp()));
     oss << data_ser.str() << X00;
     return;
 }
コード例 #21
0
ファイル: bg_classes.c プロジェクト: rabb/eth32nix-rabbmod
// kw: this function was unused,
//     It's now used and changed to allow more.
int BG_ClassTextToClass(char *str) {
	
	switch( tolower(str[0]) ) {
		case 's':
		case to_char(PC_SOLDIER):
		return PC_SOLDIER;
		case 'm':
		case to_char(PC_MEDIC):
		return PC_MEDIC;
		case 'e':
		case to_char(PC_ENGINEER):
		return PC_ENGINEER;
		case 'f':
		case 'l':	//lieutenant	// FIXME: remove from missionpack
		case to_char(PC_FIELDOPS):
			return PC_FIELDOPS;
		case 'c':
		case to_char(PC_COVERTOPS):
		return PC_COVERTOPS;
		default:
	return -1;
	}
}
コード例 #22
0
ファイル: main.c プロジェクト: ESiWACE/ESD-Middleware
char* create_pretty_number_ll(const double value) {
  char*  names[] = {"", "k", "M", "G", "T", "P", "E", "Z", "Y"};
  char* pretty_number;
  size_t pretty_number_size;
  FILE* stream = open_memstream(&pretty_number, &pretty_number_size);

  long long int a = (long long) value;
  double b = value - a;

  int n = floor(log10(a));
  for (size_t pos = n; pos >= n/3*3; --pos) {
    fprintf(stream, "%d", to_char(value, pos));
  }
  fprintf(stream, ".");
  for (size_t pos = n/3*3-1; pos > n/3*3-2; --pos) {
    fprintf(stream, "%d", to_char(value, pos));
  }

  fprintf(stream, " %s%s", names[n/3], "B");
  fclose(stream);

  return pretty_number;
}
コード例 #23
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::ContinuePrint(BSTR FirmID, LONG* ErrorCode)
{
    ClearPrintBuffer();

    InitCmd();
    // команда
    to_numeric(405, m_Cmd, 3, m_Len);   //REPEAT
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);

    m_RspLen = 0;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    return S_OK;
}
コード例 #24
0
void CLocalSetAdd::OnOK() 
{
	const int NOFIND=-1;
	UpdateData();
	if ( ! (m_name.Find("'") == NOFIND && m_name.Find(";") == NOFIND  && \
		m_remark.Find("'") == NOFIND && m_remark.Find(";") == NOFIND && ! m_name.IsEmpty())  )
		AfxMessageBox("输入的文字中不能含用单引号及分号等特殊字符");
	
	strSql.Format("Insert into lsq_reside_local ( llocal,lname,lremark) values( \
		(select Ltrim(to_char(NVL(max(llocal),0)+1,'009')) from lsq_reside_local),\
		'%s','%s' ) ",m_name,m_remark);
	if( COtherDecharge::WriteSQL(strSql) )AfxMessageBox("新增成功");
	else  AfxMessageBox("新增失败...");
	CDialog::OnOK();
}
コード例 #25
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
VOID CECR::SetClisheOrFooterString(BSTR FirmID, BSTR String, LONG Row, LONG* ErrorCode, BYTE CmdNo)
{
    if(Row > 10)
    {
        *ErrorCode = E_SUCCESS;
        return;
    }

    DWORD dwLen, dwSpaces;

    CHAR lzStringToPrint[MAX_STRING_LEN];
    CW2A szString(String);
    m_ECRList.Win1251ToCP866(szString);
    ZeroMemory(lzStringToPrint, MAX_STRING_LEN);

    if (String)
    {
        dwLen = (DWORD) strlen(szString);
        if (dwLen < m_ECRList.GetStringLen())
        {
            dwSpaces = (m_ECRList.GetStringLen() - dwLen) / 2;
            FillMemory(lzStringToPrint, dwSpaces, 0x20);
            CopyMemory(lzStringToPrint + dwSpaces, szString, dwLen);
        }
        else
            CopyMemory(lzStringToPrint, szString, m_ECRList.GetStringLen());
    }

    InitCmd();
    // команда
    to_numeric(CmdNo, m_Cmd, 3, m_Len);   
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len); 
    // номер строки
    to_numeric(Row, m_Cmd + m_Len, 2, m_Len);   
    // высота строки
    to_numeric(1, m_Cmd + m_Len, 2, m_Len);   
    // данные строки
    to_bchar(lzStringToPrint, m_Cmd + m_Len, strlen(lzStringToPrint), m_Len);

    m_RspLen = 0;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if(*ErrorCode == 45)			// если ФР блокирован, все равно вернем удачный код завершения, чтобы оболочка могла нормально загрузиться
        *ErrorCode = E_SUCCESS;

}
コード例 #26
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::GetCashMoney(BSTR FirmID, LONG* ErrorCode, LONG* Money)
{
    InitCmd();
    // команда
    to_numeric(111, m_Cmd, 3, m_Len);   //GETSUM
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    // регистр
    to_numeric(23, m_Cmd + m_Len, 3, m_Len);   
    
    m_RspLen = 16;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if (*ErrorCode == E_SUCCESS)
        *Money = from_money(m_Rsp, m_RspLen);

    return S_OK;
}
コード例 #27
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::GetEKLZState(BSTR FirmID, BOOL* IsEKLZLow, LONG* ErrorCode)
{
    *IsEKLZLow = FALSE;
    // статус ФР
    InitCmd();
    // команда
    to_numeric(101, m_Cmd, 3, m_Len);   //GETSTATUS
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    // опрос принтера
    to_numeric(1, m_Cmd + m_Len, 1, m_Len);   
    m_RspLen = 4;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if (*ErrorCode == E_SUCCESS)
        *IsEKLZLow = ((m_Rsp[1] & 0x20) == 0x20);

    return S_OK;
}
コード例 #28
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::GetReceiptNumber(BSTR FirmID, LONG ReceiptType, LONG* ErrorCode, LONG* ReceiptNumber)
{

    InitCmd();
    // команда
    to_numeric(112, m_Cmd, 3, m_Len);   //GETCOUNTER
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    // номер счетчика
    to_numeric(6, m_Cmd + m_Len, 2, m_Len);   

    m_RspLen = 8;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    if (*ErrorCode == E_SUCCESS)
        *ReceiptNumber = from_numeric(m_Rsp, 8);

    return S_OK;
}
コード例 #29
0
ファイル: ECR.cpp プロジェクト: Dennis-Petrov/Cash
STDMETHODIMP CECR::CancelReceipt(BSTR FirmID, LONG* ErrorCode)
{

    InitCmd();
    // команда
    to_numeric(216, m_Cmd, 3, m_Len);   //ABORT
    // пароль
    to_char(OPERATOR_PASSWD, m_Cmd + m_Len, 4, m_Len);
    
    m_RspLen = 0;
    m_ECRList.PassCmd(FirmID, m_Cmd, m_Len, m_Rsp, m_RspLen, ErrorCode);
    ClearPrintBuffer();
    bDocOpened = FALSE;

    if (*ErrorCode == 34)
        *ErrorCode = E_SUCCESS;
        
    return S_OK;
}
コード例 #30
0
ファイル: startup.c プロジェクト: cggong/iu_c311
void print_ptr_rec(ptr x) {
  /*printf("%u\n", x);*/
  if (is_fixnum(x)) {
    printf("%d", to_fixnum(x));
  } else if (x == bool_f) {
    printf("#f");
  } else if (x == bool_t) {
    printf("#t");
  } else if (is_null(x)) {
    print_null();
  } else if (is_char(x)) {
    printf("%s", beautify(to_char(x)));
  } else if (is_pair(x)) {
    printf("(");
    print_pair(x);
    printf(")");
  } else {
    printf("#<unknown 0x%08x>", x);
  }
}