示例#1
0
 /**
 * разбираем комбинацию
 * Документ 36
 //      4     int     кол-во коэффициентов
 //      8     double  коэффициенты
 //      Сначала идут коэффициенты для загружений,
 //      потом для комбинаций
 *
 * @param String $s
 * @return Array
 */
 function get_from_spr($s)
 {
     $pos = 0;
     //кол-во коэффициентов в комбинации
     $koef_count = bytes2un_int(substr($s, $pos, 4));
     $pos += 4;
     $this->factors = array();
     for ($i = 1; $i <= $koef_count; $i++) {
         $this->factors[$i] = bytes2double(substr($s, $pos, 8), 1, 0);
         $pos += 8;
     }
 }
示例#2
0
 function get_from_scad_spr($s)
 {
     mysql_query("TRUNCATE TABLE " . combinations);
     $comb = new Combination();
     //начинаем чтение с кол-ва комбинаций
     $pos = 1;
     $comb_count = bytes2un_int(substr($s, $pos, 4));
     $pos += 4;
     //перебор строк
     for ($i = 1; $i <= $comb_count; $i++) {
         //2 нулевых байта перед комбинацией
         $pos += 2;
         //кол-во коэффициентов в комбинации
         $koef_count = bytes2un_int(substr($s, $pos, 4));
         //кол-во байтов в комбинации
         $gap = 4 + $koef_count * 8;
         $comb->get_from_spr(substr($s, $pos, $gap));
         $pos += $gap;
         for ($k = 1; $k <= count($comb->factors); $k++) {
             //запись в базу данных
             mysql_query("INSERT IGNORE INTO " . combinations . " SET \n                   comb = {$i}, koef = {$k}, value = " . $comb->factors[$k]);
         }
     }
 }
示例#3
0
文件: rsu.php 项目: vokson/scad.local
     //                echo "RSU->Forces_Plate_Names".  print_r($rsu->forces_plate_names)."<br/>";
     //                echo "RSU->Forces_Plate_Values".  print_r($rsu->forces_plate_values)."<br/>";
 }
 $rsu->UNG = $UNG;
 $rsu->view = $view;
 ###### F22 #######
 //читаем 4 байта - количество загружений в данной формуле
 $L_count = bytes2un_int(fread($fk, 4));
 //8 байт - значение критерия
 $rsu->criterion_value = sprintf("%01.2f", bytes2double(fread($fk, 8), 1, 0));
 //        echo "RSU->criterion_value = ". $rsu->criterion_value ."<br/>";
 //для каждого загружения в формуле читаем номер и значение множителя
 //записываем в массив
 $L_name_mas = array();
 for ($k = 1; $k <= $L_count; $k++) {
     $L_name_mas[] = bytes2un_int(fread($fk, 4));
 }
 $L_koef_mas = array();
 for ($k = 1; $k <= $L_count; $k++) {
     $L_koef_mas[] = bytes2double(fread($fk, 8), 1, 0);
 }
 //        echo "L_name_mas = ";print_r($L_name_mas);echo '<br/>';
 //        echo "L_koef_mas = ";print_r($L_koef_mas);echo '<br/>';
 for ($k = 0; $k < $L_count; $k++) {
     if ($L_koef_mas[$k] >= 0 && $k > 0) {
         $rsu->formula .= '+';
     }
     if (abs($L_koef_mas[$k] - 1) > 0.001) {
         $rsu->formula .= $L_koef_mas[$k] . '*';
     }
     $rsu->formula .= 'L' . $L_name_mas[$k];
include_once './func.php';
include_once './db_connect.php';
//подключаемся к базе
$dbh = mysql_connect(host, user, pswd) or die("Не могу соединиться с MySQL.");
mysql_select_db(SCAD) or die("Не могу подключиться к базе.");
mysql_query("SET NAMES utf8");
define('START_OFFSET', 8);
define('MAX_DOC', 100);
if (isset($_FILES['file']['name']) && $_FILES['file']['name'] != '') {
    //читаем файл *.SPR
    $f = fopen($_FILES['file']['tmp_name'], "rb");
    //Формат начала файла
    //*schema*_int32 - offset описания документов
    fseek($f, 8);
    // (int) 4 - offset описания документов
    $docDescriptionOffset = bytes2un_int(fread($f, 4));
    // Минимальный offset
    $minDocOffset = $docDescriptionOffset;
    // Читаем массив адресов документов в конце файла
    // Переходим на первый документ
    fseek($f, $docDescriptionOffset);
    $document = array();
    // Добавляем пустой элемент для документа No.0
    $document[0] = 0;
    $isFinalDoc = FALSE;
    while ($isFinalDoc === FALSE) {
        // читаем номер документа
        $number = unpackInt_2(fread($f, 2));
        // если номер положителен, читаем offset и count
        if ($number > 0) {
            $offset = unpackInt_4(fread($f, 4));