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: #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(); 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: #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 :)
#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: 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: public: __fastcall TForm1( TComponent * Owner ); };
extern PACKAGE TForm1 * Form1;
#endif
Kompilator to Borland C++ builder 6. Proszę o pomoc. |
|
paszfelk Temat założony przez niniejszego użytkownika |
» 2009-04-26 10:10:01 |
|
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. |
|
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. |
|
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: #pragma once
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 );
|
|
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! |
|
« 1 » |