Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Include files nested too deep - problem z biblioteką

Ostatnio zmodyfikowano 2009-04-26 09:36
Autor Wiadomość
paszfelk
Temat założony przez niniejszego użytkownika
Include files nested too deep - problem z biblioteką
» 2009-04-26 08:12:23
Witam! Chciałem trochę przerobić odtwarzacz, którego dostałem kod. Chciałem dodać odtwarzanie CD i nie mogę... Wszystko jest w porządku, żadnego błędu nie ma oprócz jednego: [C++ Fatal Error]cd.h(5): F1005 Include files nested too deep.
Czytałem, że to jest coś w stylu przeciążenia bibliotekami.
Co mam z tym zrobić, żeby zadziałało? :(
Zamieszczam kod biblioteki cd.h:
C/C++
#include <winsock2.h>
#include <windows.h>

#pragma hdrstop
#include "cd.h"


//---------------------------------------------------------------------------

#pragma package(smart_init)

#include <mmsystem.h>


bool KontrolaTackiCD( AnsiString Drive, bool Operacja )
{
   
   
    bool Wynik = false;
   
    MCI_OPEN_PARMS parametry;
    parametry.dwCallback = 0;
    parametry.lpstrDeviceType = "CDAudio";
    parametry.lpstrElementName = Drive.c_str();
   
   
    //mciSendCommand(0,MCI_OPEN,MCI_OPEN_ELEMENT | MCI_OPEN_TYPE,(long)&parametry);
    MCIERROR mciBlad = mciSendCommand( 0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE,( long ) & parametry );
    if( mciBlad != 0 )
    {
        char opisBledu[ MAXERRORLENGTH ];
        mciGetErrorString( mciBlad, opisBledu, MAXERRORLENGTH );
        ShowMessage( opisBledu );
        return false;
    }
   
   
    if( Operacja )
   
         Wynik =( mciSendCommand( parametry.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0 ) == 0 );
   
    else
   
         Wynik =( mciSendCommand( parametry.wDeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0 ) == 0 );
   
   
    mciSendCommand( parametry.wDeviceID, MCI_CLOSE, MCI_NOTIFY,( long ) & parametry );
   
    return Wynik;
}

bool OpenCD( AnsiString Drive )
{
   
    return KontrolaTackiCD( Drive, true );
}

bool CloseCD( AnsiString Drive )
{
    return KontrolaTackiCD( Drive, false );
}

//---------------------------------------------------------------------------

int StanCDAudio( AnsiString Drive )
{
    MCI_OPEN_PARMS parametry;
    parametry.dwCallback = 0;
    parametry.lpstrDeviceType = "CDAudio";
    parametry.lpstrElementName = Drive.c_str();
    mciSendCommand( 0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE,( long ) & parametry );
   
    MCI_STATUS_PARMS stan;
    stan.dwItem = MCI_STATUS_MODE;
    mciSendCommand( parametry.wDeviceID, MCI_STATUS, MCI_WAIT | MCI_STATUS_ITEM,( long ) & stan );
    int Wynik = stan.dwReturn;
   
    mciSendCommand( parametry.wDeviceID, MCI_CLOSE, MCI_NOTIFY,( long ) & parametry );
    return Wynik;
}

//---------------------------------------------------------------------------

bool IsCDAudio( AnsiString Drive )
{
    MCI_OPEN_PARMS parametry;
    parametry.dwCallback = 0;
    parametry.lpstrDeviceType = "CDAudio";
    parametry.lpstrElementName = Drive.c_str();
    MCIERROR mciBlad = mciSendCommand( 0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE,( long ) & parametry );
    if( mciBlad != 0 ) return false;
   
    MCI_STATUS_PARMS stanNapedu;
    stanNapedu.dwCallback = 0;
    stanNapedu.dwItem = MCI_CDA_STATUS_TYPE_TRACK;
    stanNapedu.dwTrack = 1;
    mciBlad = mciSendCommand( parametry.wDeviceID, MCI_STATUS, MCI_TRACK | MCI_STATUS_ITEM,( long ) & stanNapedu );
    if( mciBlad != 0 ) return false;
   
    bool Wynik;
    switch( stanNapedu.dwReturn )
    {
    case MCI_CDA_TRACK_AUDIO: Wynik = true; break;
    default: Wynik = false; break;
    }
   
    mciSendCommand( parametry.wDeviceID, MCI_CLOSE, MCI_NOTIFY,( long ) & parametry );
    return Wynik;
}

//---------------------------------------------------------------------------

bool KontrolaCDAudio( AnsiString Drive, unsigned long Operacja )
{
    MCI_OPEN_PARMS parametry;
    parametry.dwCallback = 0;
    parametry.lpstrDeviceType = "CDAudio";
    parametry.lpstrElementName = Drive.c_str();
    mciSendCommand( 0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE,( long ) & parametry );
   
    bool Wynik =( mciSendCommand( parametry.wDeviceID, Operacja, 0, 0 ) == 0 );
   
    mciSendCommand( parametry.wDeviceID, MCI_CLOSE, MCI_NOTIFY,( long ) & parametry );
    return Wynik;
}

bool PlayCDAudio( AnsiString Drive )
{
    return KontrolaCDAudio( Drive, MCI_PLAY );
}

bool ResumeCDAudio( AnsiString Drive )
{
    return KontrolaCDAudio( Drive, MCI_RESUME );
}

bool PauseCDAudio( AnsiString Drive )
{
    if( StanCDAudio( Drive ) != 525 ) return KontrolaCDAudio( Drive, MCI_PAUSE );
    else return ResumeCDAudio( Drive );
   
}

bool StopCDAudio( AnsiString Drive )
{
   
    return KontrolaCDAudio( Drive, MCI_STOP );
}

bool UstalPoziomGlosnosciCDAudio( unsigned short kanalLewy, unsigned short kanalPrawy )
{
    unsigned long glosnosc =( kanalLewy << 24 ) |( kanalPrawy << 8 );
    return( auxSetVolume( AUX_MAPPER, glosnosc ) == MMSYSERR_NOERROR );
}

bool CzytajPoziomGlosnosciCDAudio( unsigned short & kanalLewy, unsigned short & kanalPrawy )
{
    unsigned long glosnosc;
    bool Wynik =( auxGetVolume( AUX_MAPPER, & glosnosc ) == MMSYSERR_NOERROR );
    kanalLewy =( unsigned short )(( glosnosc & 0xFFFF0000 ) >> 24 );
    kanalPrawy =( unsigned short )(( glosnosc & 0x0000FFFF ) >> 8 );
    return Wynik;
}

i programu:
C/C++
#include <vcl.h>
#pragma hdrstop

#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGAUGES"
#pragma resource "*.dfm"
TStatusBar * StatusBar;
TFileListBox * FileListBox;
TDirectoryListBox * DirectoryListBox;
TForm1 * Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1( TComponent * Owner )
    : TForm( Owner )
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TimerTimer( TObject * Sender )
{
    if( MediaPlayer->Mode == mpPlaying )
    {
        Pasek->Progress = MediaPlayer->Position * 100 / MediaPlayer->Length;
    }
    if( MediaPlayer->Mode == mpStopped )
    {
        Timer->Enabled = false;
        Pasek->Progress = 0;
        MediaPlayer->Rewind();
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click( TObject * Sender )
{
    if( OpenDialog->Execute() )
    {
        MediaPlayer->FileName = OpenDialog->FileName;
        MediaPlayer->Open();
        Button1->Enabled = true;
        Button2->Enabled = true;
        Button3->Enabled = true;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click( TObject * Sender )
{
    MediaPlayer->Play();
    Timer->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click( TObject * Sender )
{
    MediaPlayer->Stop();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click( TObject * Sender )
{
    MediaPlayer->Pause();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click( TObject * Sender )
{
    WinExec( "SNDVOL32.EXE", SW_SHOWNORMAL );
}
//---------------------------------------------------------------------------

void UstalPoziomGlosnosciWave( unsigned short kanalLewy, unsigned short kanalPrawy )
{
    unsigned long glosnosc =( kanalLewy << 24 ) |( kanalPrawy << 8 );
    waveOutSetVolume(( HWAVEOUT ) WAVE_MAPPER, glosnosc );
}

void CzytajPoziomGlosnosciWave( unsigned short & kanalLewy, unsigned short & kanalPrawy )
{
    unsigned long glosnosc;
    waveOutGetVolume(( HWAVEOUT ) WAVE_MAPPER, & glosnosc );
    kanalLewy =( unsigned short )(( glosnosc & 0xFFFF0000 ) >> 24 );
    kanalPrawy =( unsigned short )(( glosnosc & 0x0000FFFF ) >> 24 );
}

void __fastcall TForm1::TrackBar1Change( TObject * Sender )
{
    UstalPoziomGlosnosciWave( TrackBar1->Position, TrackBar2->Position );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::TrackBar3Change( TObject * Sender )
{
    Pasek->Progress = MediaPlayer->Position * 100 / MediaPlayer->Length;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::DirectoryListBox1Change( TObject * Sender )
{
    StatusBar->SimpleText = IntToStr( FileListBox->Items->Count ) + " files.";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click( TObject * Sender )
{
    if( OpenDialog1->Execute() )
    {
        MediaPlayer->FileName = OpenDialog1->FileName;
        MediaPlayer->Open();
        Button1->Enabled = true;
        Button2->Enabled = true;
        Button3->Enabled = false;
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListBox1Click( TObject * Sender )
{
    ListBox1->Items->Add( OpenDialog1->FileName );
}
//---------------------------------------------------------------------------
#include "cd.h"
void __fastcall TForm1::Button7Click( TObject * Sender )
{
    mciSendString( "set cdaudio door open wait", NULL, 0, 0 );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button8Click( TObject * Sender )
{
    mciSendString( "set cdaudio door closed wait", NULL, 0, 0 );
}
//---------------------------------------------------------------------------
#include "cd.h"

void __fastcall TForm1::Button9Click( TObject * Sender )
{
    //-----------------------------------
   
   
    //----------------------------------
    OpenCD(( AnsiString ) DriveComboBox1->Drive + ":" );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button10Click( TObject * Sender )
{
    CloseCD(( AnsiString ) DriveComboBox1->Drive + ":" );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button11Click( TObject * Sender )
{
    switch( StanCDAudio(( AnsiString ) DriveComboBox1->Drive + ":" ) )
    {
    case 1242348: ShowMessage( "Symbol nie wskazuje napędu CD" ); break;
    case 1242732: ShowMessage( "Brak napędu CD" ); break;
    case 530: ShowMessage( "Brak płyty" ); break;
    case 525: ShowMessage( "Zatrzymany" ); break;
    case 526: ShowMessage( "Odtwarzanie" ); break;
        default: ShowMessage( IntToStr( StanCDAudio(( AnsiString ) DriveComboBox1->Drive + ":" ) ) ); break;
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button12Click( TObject * Sender )
{
    ShowMessage(( IsCDAudio(( AnsiString ) DriveComboBox1->Drive + ":" ) ) ? "Tak"
        : "Nie" );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button13Click( TObject * Sender )
{
    PlayCDAudio(( AnsiString ) DriveComboBox1->Drive + ":" );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button14Click( TObject * Sender )
{
    PauseCDAudio(( AnsiString ) DriveComboBox1->Drive + ":" );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button15Click( TObject * Sender )
{
    ResumeCDAudio(( AnsiString ) DriveComboBox1->Drive + ":" );
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button16Click( TObject * Sender )
{
    StopCDAudio(( AnsiString ) DriveComboBox1->Drive + ":" );
}
//---------------------------------------------------------------------------

Jeszcze main.h w razie czego :)
C/C++
//---------------------------------------------------------------------------

#ifndef MainH
#define MainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "CGAUGES.h"
#include <MPlayer.hpp>
#include <ExtCtrls.hpp>
#include <Dialogs.hpp>
#include <ComCtrls.hpp>
#include <FileCtrl.hpp>
//---------------------------------------------------------------------------
class TForm1
    : public TForm
{
    __published: // IDE-managed Components
    TMediaPlayer * MediaPlayer;
    TButton * Button1;
    TButton * Button2;
    TButton * Button3;
    TButton * Button4;
    TCGauge * Pasek;
    TTimer * Timer;
    TOpenDialog * OpenDialog;
    TButton * Button5;
    TTrackBar * TrackBar1;
    TTrackBar * TrackBar2;
    TDirectoryListBox * DirectoryListBox1;
    TStatusBar * StatusBar1;
    TListBox * ListBox1;
    TOpenDialog * OpenDialog1;
    TButton * Button6;
    TLabel * Label1;
    TComboBox * ComboBox1;
    TButton * Button7;
    TButton * Button8;
    TButton * Button9;
    TButton * Button10;
    TButton * Button11;
    TButton * Button12;
    TButton * Button13;
    TButton * Button14;
    TButton * Button15;
    TButton * Button16;
    TEdit * Edit1;
    TButton * Button17;
    void __fastcall TimerTimer( TObject * Sender );
    void __fastcall Button4Click( TObject * Sender );
    void __fastcall Button1Click( TObject * Sender );
    void __fastcall Button3Click( TObject * Sender );
    void __fastcall Button2Click( TObject * Sender );
    void __fastcall Button5Click( TObject * Sender );
    void __fastcall TrackBar1Change( TObject * Sender );
    void __fastcall TrackBar3Change( TObject * Sender );
    void __fastcall DirectoryListBox1Change( TObject * Sender );
    void __fastcall Button6Click( TObject * Sender );
    void __fastcall ListBox1Click( TObject * Sender );
    void __fastcall Button7Click( TObject * Sender );
    void __fastcall Button8Click( TObject * Sender );
    void __fastcall FormCreate( TObject * Sender );
    void __fastcall Button9Click( TObject * Sender );
    void __fastcall Button10Click( TObject * Sender );
    void __fastcall Button11Click( TObject * Sender );
    void __fastcall Button12Click( TObject * Sender );
    void __fastcall Button13Click( TObject * Sender );
    void __fastcall Button14Click( TObject * Sender );
    void __fastcall Button15Click( TObject * Sender );
    void __fastcall Button16Click( TObject * Sender );
private: // User declarations
public: // User declarations
    __fastcall TForm1( TComponent * Owner );
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 * Form1;
//---------------------------------------------------------------------------
#endif

Kompilator to Borland C++ builder 6.
Proszę o pomoc.
P-6021
paszfelk
Temat założony przez niniejszego użytkownika
» 2009-04-26 10:10:01
No tak... nie dopisałem, że już próbowałem to zrobić, ale po tym wywala pełno błędów, których nie było:
http://www.fotosik.pl/pokaz_obrazek/40b970cf00092c7f.html
P-6024
DejaVu
» 2009-04-26 12:17:34
#pragma hdrstop <= nie wiem co to, ale na początku każdego pliku nagłówkowego wypadałoby mieć #pragma once - sprawdź czy to rozwiąże problem. Jeśli nie to będziemy myśleli dalej.
P-6032
paszfelk
Temat założony przez niniejszego użytkownika
» 2009-04-26 13:17:30
Niestety nic to nie dało :(
Błąd jest nadal.
P-6042
DejaVu
» 2009-04-26 18:44:37
Pierwszy plik, który podałeś powinien być plikiem cd.cpp. Plik nagłówkowy (cd.h) powinien natomiast wyglądać tak:
C/C++
#pragma once

//tu odpowiednie pliki nagłówkowe

bool KontrolaTackiCD( AnsiString Drive, bool Operacja );
bool OpenCD( AnsiString Drive );
bool CloseCD( AnsiString Drive );
int StanCDAudio( AnsiString Drive );
bool IsCDAudio( AnsiString Drive );
bool KontrolaCDAudio( AnsiString Drive, unsigned long Operacja );
bool PlayCDAudio( AnsiString Drive );
bool ResumeCDAudio( AnsiString Drive );
bool PauseCDAudio( AnsiString Drive );
bool StopCDAudio( AnsiString Drive );
bool UstalPoziomGlosnosciCDAudio( unsigned short kanalLewy, unsigned short kanalPrawy );
bool CzytajPoziomGlosnosciCDAudio( unsigned short & kanalLewy, unsigned short & kanalPrawy );
P-6059
manfred
» 2009-04-26 09:36:08
#include "cd.h" w cd.h... Biedny preprocesor włącza ten plik do samego siebie, jednak w końcu przestaje mu się chcieć... Wywal to rekurencyjne #include!
P-18842
« 1 »
  Strona 1 z 1