/** * разбираем комбинацию * Документ 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; } }
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]); } } }
// 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));