#define UploadN_pos (10) // номер выгрузки
#define fd_pos (14) |
// время совершения звонка |
#define Direct_pos (1) либо O |
// направление (вх\исх), может принимать значения I |
#define dur_pos (5) |
// длительность звонка |
#define Anum_pos (12) |
// номер отправителя |
#define Bnum_pos (12) |
// номер получателя |
#define servicekey_pos (2) // код услуги в скобках указаны размеры полей (количество символов в текстовом файле CDR) символа перехода на нов. строку в конце файла быть не должно.
Листинг файла CDEMO6.CPP.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <conio.h>
#include <windows.h> #include <time.h> extern "C"
{
#include "string.h"
#include "oratypes.h"
#include "ocidfn.h"
#include "ocidem.h"
#include "ociapr.h"
}
/* exit status upon failure */
#define DEFER_PARSE 1
#define NATIVE 1
#define VERSION_7 2
text *username; text *password; text *server;
text *insert = (text *) "INSERT INTO calls(N, UPLOADN, FD, DIRECT, DURATION,
ANUM, BNUM, SK) VALUES (SQ$CALLS_N.NEXTVAL, :uploadn, to_date(:fd,
'ddmmyyyyhh24miss'), :direct, :duration, :anum, :bnum, :sk)"; // Define an LDA, a HDA, and two cursors. Lda_Def lda;
ub4 hda[HDA_SIZE/sizeof(ub4)]; Cda_Def cda1; void err_report(); void do_exit(); void myfflush();
// определяем формат CDR-файла с числом символов для каждого параметра
#define UploadN_pos (10)
#define fd_pos (14)
#define Direct_pos (1)
#define dur_pos (5)
#define Anum_pos (12)
#define Bnum_pos (12) #define servicekey_pos (2) struct CDR_record
{
char uploadN[11]; // номер выгрузки char fd[15]; // дата звонка char Direct[3]; // направление оказания услуги char dur[6]; // длительность звонка char Anum[13]; // номер отправителя char Bnum[13]; // номер получателя
char servicekey[3]; // код услуги
}; int main()
{
char CDRname[128]; char CDRnameTmp[128];
int len = 12; // длина имени CDR-файла в символах char qqq[2]; int count1 = 10; int count = 0;
int i=0; // счетчик записей в файле очереди int CDRNum = 0; // количество записей в файле очереди
char tmpbuf[128];
// ------------ считывание пароля с реестра ------------------------
HKEY hk;
HKEY hk1;
DWORD dw;
DWORD dw2;
DWORD dw3;
DWORD dw4;
DWORD dw5;
char un[80]; char pwd[80]; char srv[80]; char FileNameRQ[80]; char FileNameRQTmp[] = "rqtmp.txt"; strcpy(FileNameRQ, ""); strcpy(un, ""); strcpy(pwd, ""); strcpy(srv, "");
RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Kate\\Charger\\dbconnect", &hk);
if (RegQueryValueEx(hk, "Username", 0, 0, (LPBYTE) un, &dw))
{
RegSetValueEx(hk, "Username", 0, REG_EXPAND_SZ, (LPBYTE) un, strlen(un)+1);
}
if (RegQueryValueEx(hk, "Password", 0, 0, (LPBYTE) pwd, &dw2))
{
RegSetValueEx(hk, "Password", 0, REG_EXPAND_SZ, (LPBYTE) pwd, strlen(pwd)+1);
}
if (RegQueryValueEx(hk, "Server", 0, 0, (LPBYTE) srv, &dw3)) {
RegSetValueEx(hk, "Server", 0, REG_EXPAND_SZ, (LPBYTE) srv, strlen(srv)+1);
}
RegCloseKey(hk);
RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Kate\\Charger", &hk1);
if (RegQueryValueEx(hk, "RQfile", 0, 0, (LPBYTE) FileNameRQ, &dw4))
{
RegSetValueEx(hk1, "RQfile", 0, REG_EXPAND_SZ, (LPBYTE) FileNameRQ, strlen(FileNameRQ)+1);
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.