Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обьясните что делает код 
:(
    Опции темы
weldpua2008
Дата 5.4.2009, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 28.12.2008

Репутация: нет
Всего: нет



Привет Всем
Есть некая главная функция, не полностью приведена ниже. Я не пойму что должно записываться в       FileRead(FH,Q.spectr, sizeof 4*2*Q.nDSPZ); в Q.spectr. Она в класе обьявлена:  public:int   *spectr; А Q.allocate_spectr(), которая тоже ниже приведена заполняет её...
Код

void TMainForm::vOpenDSPZdata(){

     FLName=OpenMultiDialog->Files->Strings[nf];
    FH=FileOpen(FLName,fmOpenRead);
    if(FH==-1){ShowMessage("Error with FileOpen");return;}

    FSName = ExtractFileName(OpenMultiDialog->Files->Strings[nf]);
    FSName = FSName.SubString(0,FSName.Length()-4)+".dsp";
    FSName = ExtractFilePath(FLName) + FSName;

    filec = 0;
    file_razmer = FileSeek(FH,filec,2);
    FileSeek(FH,0,0);

    FileRead(FH,&Q.fh, sizeof Q.fh);
    Q.fh2dspp(66000,0,0);
    Q.allocate_spectr();

    n_vib = (file_razmer - (sizeof Q.fh))/(sizeof 4*2*Q.nDSPZ);
    int Naver;
    Naver=10;
    for(i=0;i<Naver;i++){

      FileRead(FH,Q.spectr, sizeof 4*2*Q.nDSPZ);

      Q.get_spectrAB_prop();

      SeriesShow();

    }

    Application->ProcessMessages();
    FileClose(FH);

 }
}


Q.allocate_spectr():
Код

void DSPZ::allocate_spectr(){
  spectr = new int[2*nDSPZ];
  chA = new float[nDSPZ];
  chB = new float[nDSPZ];
}



Q.get_spectrAB_prop():
Код

void DSPZ::get_spectrAB_prop(){
  for(j=0;j<nDSPZ-1;j++){
      tmp =  Float_num(spectr[2*j],1);  //if (tmp<=0) tmp = 1; tmp = 10*log10(tmp);
      if (dspp.winchA%2)   chA[nDSPZ-j-1] = tmp;
      else chA[j] = tmp;
      tmp =  Float_num(spectr[2*j+1],1); //if (tmp<=0) tmp = 1; tmp = 10*log10(tmp);
      if (dspp.winchB%2)   chB[nDSPZ-j-1] = tmp;
      else chB[j] = tmp;
  }
      ud.id = spectr[2*(nDSPZ-1)];
      spp.cntms = ud.fd.cnt;
      spp.satA  = ud.fd.sat;

      ud.id = spectr[2*(nDSPZ-1)+1];
      spp.cnt   = ud.fd.cnt;
      spp.satB  = ud.fd.sat;

      if (dspp.winchA%2)  chA[0] = chA[1];
      else   chA[nDSPZ-1] = chA[nDSPZ-2];

      if (dspp.winchB%2)  chB[0] = chB[1];
      else   chB[nDSPZ-1] = chB[nDSPZ-2];
}

Код

float Float_num(int SSAMPLE,float _Avc)
{
  float _SNrm = 4*2*1024./4294967296./_Avc; //norming
  int expn = (SSAMPLE&0x1f);            //exponent
  unsigned int mant = (SSAMPLE&0xFFFFFFC0); //mantissa
  return (float)(mant)/pow(2., expn)*_SNrm;
}


Добавлено через 4 минуты и 15 секунд
Где можно прочитать по Borland'ким функциям:
FileSeek()
FileRead()

И почему в 
Код

float Float_num(int SSAMPLE,float _Avc)

 pow(2., expn), а не  pow(2, expn)?
ЗЫ:
Я понимаю, что эти вопросы надо задать программисту, но не могу....Этот код работает smile
PM MAIL   Вверх
mes
Дата 5.4.2009, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



2  - int
2. - double




--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.