全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1100
推到 Plurk!
推到 Facebook!

函式間呼叫的問題

尚未結案
huei_brother
一般會員


發表:36
回覆:15
積分:10
註冊:2004-08-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-12 17:04:30 IP:140.127.xxx.xxx 未訂閱
板上各位前輩大家好:    小弟寫了一個程式compiler都出現錯誤可以請幫我一下看我是哪裡有宣告錯誤    謝謝    
     void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      void Read_Files();
      void preEmphasized(short *signal);
      void hamWindow();          // Main //        Read_Files();  // 呼叫函式把聲音檔讀進來存在singnal裡
    preEmphasized(signal); // 呼叫函式將singnal裡的資料做運算
    hamWindow();
    //將 preEmphasized和 hamWindow 相乘存到fftData
    double *fftData = new double[512];
    for (int j = 0; j < 256; j  )
    {
       fftData[j] = preEmphasized[j] * hamWindow[j];
    }         for (int j = 0; j < 256; j  )
     {
    ListBox1->Items->Add(fftData[j]);
   }    }
//------------------------------------------------------------------
void Read_Files()
{
   int FileLen,dd=44;
   char* file_name="1.WAV";
   short *signal;
   FILE *inf;
   bool open_flag;
   int handle;
     if (open_flag==true)
   {
      fclose(inf);
   }
   inf=fopen(file_name,"r");
   open_flag=true;
   handle=fileno(inf);
   FileLen= filelength(handle);
   if (feof(inf))
   {
      fclose(inf);
      open_flag=false;
   }
   signal = new short[(FileLen-dd)];
   fseek(inf,dd,SEEK_SET);
   fread(signal,sizeof(short),(FileLen-dd),inf);    }
//---------------------------------------------------------------------------
void preEmphasized(short *signal)
{
  double *preEmphasized = new double[1024];
  for (int i = 1; i < 1024; i  )
  {
      preEmphasized[i] = signal[i]   signal[i - 1] * -0.97;
      preEmphasized[0] = signal[0];
  }    }
//---------------------------------------------------------------------------
void hamWindow()
{
   double PI = 3.14159;
   double windowSize = 256;
   double *hamWindow = new double[windowSize];
   for (int i = 0; i < windowSize; i  )
   {
       hamWindow[i] = 0.54 - 0.46 * cos(2 * PI * i / windowSize);
   }
}
//---------------------------------------------------------------------------    
huei_brother
一般會員


發表:36
回覆:15
積分:10
註冊:2004-08-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-12 22:53:46 IP:211.76.xxx.xxx 未訂閱
抱歉忘了把錯誤訊息貼上來 錯誤訊息 Undefined symbol 'signal' Size of the type 'void(short *)' is unknown or zero Size of the type 'void()' is unknown or zero Illegal use of pointer
derrenbol1
中階會員


發表:5
回覆:113
積分:93
註冊:2004-12-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-13 01:57:25 IP:210.202.xxx.xxx 未訂閱
To huei_brother: 你在Button1Click中真的並未定義signal這個變數; signal也不是外部變數, 所以才會產生錯誤; 試試看 將Read_File()函數中對signal的定義移到外部去. 還有.. 變數最好改個名字.
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-13 21:23:29 IP:61.217.xxx.xxx 未訂閱
huei_brother 你好:    由你的程式註解來看,會不會是呼叫 preEmphasized() 函式時所給予的參數名稱寫錯了 (少了一個 n)?
preEmphasized(signal); // 呼叫函式將singnal裡的資料做運算
7 天天敲鍵盤 v 時時按滑鼠 8
系統時間:2024-06-24 20:55:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!