unit ConstUnit;

interface

uses SysUtils, MySQLUniProvider, Uni, DBAccess, MemDS,
Classes,  Dialogs, Graphics, dateUtils;

const
SAVE_ACTION_ADD     =  'add';
SAVE_ACTION_UPDATE  = 'update';
DEFAULT_PAIENT_BIRTH_DATE = '01.01.1940';



report_error              = 1;  //1 - ошибки sql не показываются
                                //2 - ошибки sql показываются


Begin_conn_login_prompt   = false;
Begin_conn_username_root  = 'root';
Begin_conn_server         = 'localhost';
Begin_conn_pass_root      = '';


database_name             = 'rd';
user_name                 = 'rd';
user_pass                 = 'rd_pass';
priv_y_count              = 9;            //количество привелегий у пользователя базы

table_izm_name            = 'rd_izmerenia';
table_patient_name        = 'rd_patient';
table_param_name          = 'rd_param';
table_znacheniya_name     = 'rd_znacheniya';
table_points_name         = 'rd_points';


izm_form_name             = 'Проведение измрения';
izm_device_ready          = 'Прибор готов к измерению';
izm_get_data              = 'Получаем данные...';
izm_mes_decode            = 'Декодирование посылки...';

begin_caption_error                 = 'Ошибка при инициализации программы';

Begin_mes_check_first               = 'Проверка на первый запуск программы....';
Begin_mes_root_connected            = 'Соединение с сервером баз данных установлено!';

begin_mes_fail_connect              = 'Невозможно найти сервер базы данных или подключиться к нему.'+#13+
                                      'Проверьте параметры подключения и запущен ли сервер';
begin_mes_terminate                 = 'Программа прекращает свою работу...';
begin_mes_second_connect_false      = 'Подключение не установлено. Программа завершает свою работу...';

Begin_mes_check_database            = '1. Проверяем наличие базы данных...';
Begin_mes_exist_database            = '   База данных "'+database_name+'" существует';
Begin_mes_notexist_database         = '   База данных "'+database_name+'" не существует!!!';
Begin_mes_create_database           = '   Попытка создать базу данных "'+database_name+'"...';
Begin_mes_create_database_sucsess   = '   База данных "'+database_name+'" успешно создана!';

Begin_mes_check_user                = '2. Проверяем наличие пользователя...';
Begin_mes_check_user_sucsess        = '   Пользователь "'+user_name+'" обнаружен';
Begin_mes_check_user_notsucsess     = '   Пользователь "'+user_name+'"не обнаружен!!!';
Begin_mes_user_create               = '   Попытка создать пользователя "'+user_name+'"...';
Begin_mes_user_create_suc           = '   Пользователь "'+user_name+'" успешно добавлен!';

Begin_mes_check_user_priv           = '3. Проверяем пользователя "'+user_name+'" на предмет достаточности прав для работы с программой';
Begin_mes_check_user_priv_suc       = '   Права пользователя подтверждены!';
Begin_mes_check_user_priv_notsuc    = '   Права пользователя не соответствуют заданным. Попытка изменить права...';
Begin_mes_check_user_priv_change    = '   Права пользователя успешно изменены!';

Begin_mes_first_stage_complete      = 'Первый этап проверки успешно завершен!!!';

Begin_mes_reconnect                 = 'Устанавливаем повторное соединение с базой данных...';
Begin_mes_reconnect_sucsess         = 'Соединение успешно установлено';

Begin_mes_table_pat_exist           = '   Таблица '''+table_patient_name+''' для пациентов существует';
Begin_mes_table_izm_exist           = '   Таблица '''+table_izm_name+''' для измерений существует';
Begin_mes_table_param_exist         = '   Таблица '''+table_param_name+''' для параметров существует';
Begin_mes_table_znach_exist         = '   Таблица '''+table_znacheniya_name+''' для значений измерений существует';
Begin_mes_table_points_exist        = '   Таблица '''+table_points_name+''' для описания точек существует';

Begin_mes_table_not_pat_exist       = '   Таблица '''+table_patient_name+''' для пациентов не существует';
Begin_mes_table_not_izm_exist       = '   Таблица '''+table_izm_name+''' для измерений не существует';
Begin_mes_table_not_param_exist     = '   Таблица '''+table_param_name+''' для параметров не существует';
Begin_mes_table_not_znach_exist     = '   Таблица '''+table_znacheniya_name+''' для значений измерений не существует';
Begin_mes_table_not_points_exist    = '   Таблица '''+table_points_name+''' для описания точек не существует';

Begin_mes_table_pat_create          = '   Попытка создать таблицу '''+table_patient_name+''' для пациентов... ';
Begin_mes_table_izm_create          = '   Попытка создать таблицу '''+table_izm_name+''' для измерений...';
Begin_mes_table_param_create        = '   Попытка создать таблицу '''+table_param_name+''' для параметров...';
Begin_mes_table_znach_create        = '   Попытка создать таблицу '''+table_znacheniya_name+''' для значений измерений...';
Begin_mes_table_points_create       = '   Попытка создать таблицу '''+table_points_name+''' для описания точек...';

Begin_mes_table_pat_create_sucsess  = '   Таблица '''+table_patient_name+''' для пациентов успешно создана';
Begin_mes_table_izm_create_sucsess  = '   Таблица '''+table_izm_name+''' для измерений успешно создана';
Begin_mes_table_param_create_sucsess= '   Таблица '''+table_param_name+''' для параметров успешно создана';
Begin_mes_table_znach_create_sucsess= '   Таблица '''+table_znacheniya_name+''' для значений измерений успешно создана';
Begin_mes_table_points_create_sucsess= '   Таблица '''+table_points_name+''' для описания точек успешно создана';

Begin_mes_keys_create               = '   Попытка создания внешних ключей...';

Begin_mes_table_sucsess             = 'Второй этап проверки пройден!';
Begin_mes_check_passed              = 'ПРОВЕРКА НА КОРРЕКТНОСТЬ ПАРМЕТРОВ СОЕДИНЕНИЯ С БАЗОЙ ДАННЫХ ПРОЙДЕНА!!!';
Begin_mes_program_start             = 'Запуск программы...';

/////////////////////////////////////////////////////////////////
/// Сообщения программы                                       ///
/////////////////////////////////////////////////////////////////
mess_caption                        = 'RD Project. БМТ1';
image_size_label                    = 'Текущий размер: ';

add_point_to_database_mes           = 'Точка успешно записана в базу данных!';
add_param_to_database_mes           = 'Параметр успешно записан в базу данных!';
red_point_in_database_mes           = 'Точка успешно отредактирована!';
red_param_in_database_mes           = 'Параметр успешно отредактирован!';
del_param_from_database_mes         = 'Параметр успешно удален из базы данных.'+#13+
                                      'Также удалены все измерения этого параметра';
del_point_from_database_mes         = 'Точка успешно удалена из базы данных'+#13+
                                      'Также удалены все измерения, связанные с этой точкой';

add_pat_to_database_mes             = 'Информация о новом пациенте успешно записана!';
del_pat_from_database_mes           = 'Информация о пациенте удалена из базы данных!'+#13+
                                      'Также удалена информация о всех измерениях с участием этого пациента';
red_pat_in_database_mes             = 'Информация о пациенте успешно отредактирована!';

izm_data_lost                       = 'Вы уверены, что хотите закрыть окно измерений?';
izm_izm_end                         = 'Измерение закончилось. Все точки замерены';                                      
izm_caption_message                 = 'RD_project. Измерение сопротивления БАТ';

del_point_question_mes              = 'Вы выбрали удаление точки. При будет удалена '+
                                      'вся информация об измерениях и значениях параметров, '+
                                      'связанных с этой точкой. Вы хотите продолжить?';
del_param_question_mes              = 'Вы выбрали удаление параметра. При будет удалена '+
                                      'вся информация об измерениях и значениях параметров, '+
                                      'связанных с этим параметром. Вы хотите продолжить?';
del_measure_question_mes            = 'Вы уверены что хотите удаить всю информацию об измерении?';
del_patient_question_mes            = 'Вы уверены что хотите удалить информацию о пациенте. '+
                                      'Также будет удалена вся информация о его измерениях';
make_defaut_message                 = 'ВНИМАНИЕ! Все данные после выполнения этой операции будут Уничтожены! Вы уверены в продолжении?';
make_default_dll_error              = 'Не найдена библиотека pictures.dll!!!';

/////////////////////////////////////////////////////////////////
///  МЕТКИ и ТЕКСТ В ПРОГРАММЕ                                ///
////////////////////////////////////////////////////////////////
////////////////////////
///  MAIN UNIT        //
////////////////////////
status_bar_database_connection_exisits     = 'Подключение к базе данных: Есть';
status_bar_database_connection_not_exisits = 'Подключение к базе данных: <b><FONT color="#FF0000"> НЕТ</font></b>';
status_bar_device_connected                = 'Состояние прибора: Подключен';
status_bar_device_not_connected            = 'Состояние прибора: <b><FONT color="#FF0000"> НЕ ПОДКЛЮЧЕН</font></b>';
status_bar_number_of_measurments           = 'Проведено исследований: ';

//Закладка выбора измерений
MAIN_UNIT_MEASURE_CHOISE_NOT_SELECTED = 'Измерение не выбрано...';

//Закладка графики
main_unit_graphics_compress =         'сжато в ';
main_unit_graphics_compress_unit =    ' раз';
main_unit_graphics_title_R        = 'Сопротивление БАТ, МОм';
main_unit_graphics_title_G0       = 'Проводиость БАТ, 1/Ом*10^6';
main_unit_graphics_title_G1       = 'Проводиость БАТ, 1-ая гармоника, 1/Ом*10^6';
main_unit_graphics_title_G2       = 'Проводиость БАТ, 2-ая гармоника, 1/Ом*10^6';
main_unit_graphics_title_G3       = 'Проводиость БАТ, 3-ая гармоника, 1/Ом*10^6';
main_unit_graphics_title_C        = 'Емкость БАТ, нФ';
main_unit_graphics_title_Usm      = '';
main_unit_graphics_title_Ism      = '';



//// Закладка диагноза
summ_left_hands       = 'Сумма левой=';
summ_right_hands      = 'Сумма правой=';
summ_hands            = 'Сумма рук=';

summ_left_legs        = 'Сумма левой=';
summ_right_legs       = 'Сумма правой=';
summ_legs             = 'Сумма ног=';

summ_all              = 'Сумма =';
diagnoz_table_unit    = 'МОм';

////////////////////////
///  ADMIN UNIT       //
////////////////////////
params_default_name_opisnie_1 = 'Значения напряжения';
params_default_name_opisnie_2 = 'Значения тока';
params_default_name_opisnie_3 = 'Сопротивление';
params_default_name_opisnie_4 = 'Проводимость';
params_default_name_opisnie_5 = 'Первая гармоника проводимости';
params_default_name_opisnie_6 = 'Вторая гармоника проводимости';
params_default_name_opisnie_7 = 'Третья гармоника проводимости';
params_default_name_opisnie_8 = 'Емкость';
params_default_name_opisnie_9 = 'Напряжение смещения';
params_default_name_opisnie_10= 'Ток смещения';

params_default_name1 = 'U';
params_default_name2 = 'I';
params_default_name3 = 'R';
params_default_name4 = 'G0';
params_default_name5 = 'G1';
params_default_name6 = 'G2';
params_default_name7 = 'G3';
params_default_name8 = 'C';
params_default_name9 = 'Uсм';
params_default_name10= 'Iсм';

point_label_name       = 'Точка №:';
param_label_name       = 'Параметр №:';
image_size_label_name  = 'Текущий размер: ';


////////////////////////
///  IZM UNIT         //
////////////////////////
izm_stop_measurement                     = 'Досрочно закончить измерение';
izm_unit_end_measurment_btn_label        = 'Закончить измерение';
IZM_UNIT_MEASURMENT_LABEL                = 'Измерение ';

////////////////////////
///  DeviceRD UNIT    //
////////////////////////
devicerd_device_just_connected           = 'Прибор подключен. Перезапустите программу';

/////////////////////////////////////////////////////////////////
/// Названия колонок в таблицах                                //
/////////////////////////////////////////////////////////////////
/// Таблицы точек и параметров
point_param_num_name                = ' Номер';
point_param_name_name               = ' Название';
point_param_opis_name_param         = ' Описание параметра';
point_param_opis_name_point         = ' Описание точки';
/// Таблица пациентов
new_izm_num_name                    = ' №';
new_izm_fam_name                    = ' Фамилия';
new_izm_name_name                   = ' Имя';
new_izm_otch_name                   = ' Отчество';
new_izm_day_name                    = ' Число';
new_izm_mon_name                    = ' Месяц';
new_izm_year_name                   = ' Год';
new_izm_opis_name                   = ' Примечание';

function mysql_query(used_query:TUniQuery; zapros:String; mode:byte):boolean;

function BytesToStr(const i64Size: Int64): string;
function GetFileSize(namefile: string): string;
function Rounder(Value: extended; Decimals: Integer): extended;
function strtst(var Input: string; EArray: string; Action: integer): string;
function convert_day(day:integer):string;
function convert_month(month:integer):string;

function make_date(day,month,year:string):string;

procedure ShowMessage(const value : string) ; overload;
procedure ShowMessage(const value : integer) ; overload;
procedure ShowMessage(const value : extended) ; overload;
procedure ShowMessage(const value : boolean) ; overload;

implementation

uses DataUnit;

function make_date(day,month,year:string):string;
begin
  result:=day+'.'+month+'.'+year+'г.';
end;


function convert_day(day:integer):string;
begin
  if (day<10) then result:='0'+inttostr(day)
  else result:=inttostr(day);
end;
function convert_month(month:integer):string;
begin
  if (month<10) then result:='0'+inttostr(month)
  else result:=inttostr(month);
end;


function strtst(var Input: string; EArray: string; Action: integer): string;
begin
  case Action of
    1:
      begin
        while length(Input) <> 0 do
        begin
          if pos(Input[1], EArray) = 0 then
            delete(Input, 1, 1)
          else
          begin
            result := result + Input[1];
            delete(Input, 1, 1);
          end;
        end;
      end;
    2:
      begin
        while length(Input) <> 0 do
        begin
          if pos(Input[1], EArray) <> 0 then
            delete(Input, 1, 1)
          else
          begin
            result := result + Input[1];
            delete(Input, 1, 1);
          end;
        end;
      end;
end;
end;

function Rounder(Value: extended; Decimals: Integer): extended;
 var
   j: Integer;
   A: extended;
 begin
   A := 1;
   case Decimals of
     0: A := 1;
     1: A := 10;
     else
       for j := 1 to Decimals do
         A := A * 10;
   end;
   Result := Int((Value * A) + 0.5) / A;
 end;

function mysql_query(used_query:TUniQuery; zapros:String; mode:byte):boolean;
begin
used_query.Connection:=SQL_DM.mysql_con;
used_query.Active:=false;
used_query.SQL.Clear;
used_query.SQL.Append(zapros);
try
  if mode=1 then  used_query.Active:=true
  else
  if mode=2 then  used_query.Execute;
except
//
end;
if (used_query.Active) or (not used_query.Executing) then result:=true
else result:=false;

end;
function BytesToStr(const i64Size: Int64): string;
 const
   i64GB = 1024 * 1024 * 1024;
   i64MB = 1024 * 1024;
   i64KB = 1024;
 begin
   if i64Size div i64GB > 0 then
     Result := Format('%.2f GB', [i64Size / i64GB])
   else if i64Size div i64MB > 0 then
     Result := Format('%.2f MB', [i64Size / i64MB])
   else if i64Size div i64KB > 0 then
     Result := Format('%.2f KB', [i64Size / i64KB])
   else
     Result := IntToStr(i64Size) + ' Byte(s)';
 end;
function GetFileSize(namefile: string): string;
var
  InfoFile: TSearchRec;
  AttrFile: Integer;
  ErrorReturn: Integer;
begin
  AttrFile := $0000003F; {Any file}
  ErrorReturn := FindFirst(namefile, AttrFile, InfoFile);
  if ErrorReturn <> 0 then
    Result := '' {в случае, если файл не найден}
  else
    Result := BytesToStr(InfoFile.Size); {Размер файла в байтах}
  FindClose(InfoFile);
end;

//displays a string in a dialog box
procedure ShowMessage(const value : string) ;
begin
  Dialogs.ShowMessage(value) ;
end;
//displays an integer in a dialog box
procedure ShowMessage(const value : integer) ;
begin
  ShowMessage(IntToStr(value)) ;
end;
//displays a float in a dialog box
procedure ShowMessage(const value : extended) ;
begin
  ShowMessage(FloatToStr(value)) ;
end;
//displays a boolean in a dialog box
procedure ShowMessage(const value : boolean) ;
begin
  ShowMessage(BoolToStr(value, true)) ;
end;


end.
