mciSendString Problem

Hallo,
ich habe ein kleines Problem wo ich nicht mehr weiter weiß.
Und zwar habe ich eine Klasse geschrieben die einzelne Tonspuren verwalten bzw. abspielen kann.
Headerdatei:
//---------------------------------------------------------------------------

#ifndef U_TonspurH
#define U_TonspurH
#include
#include
#include
#include
//---------------------------------------------------------------------------
class Track
{
public:
Track(void);
~Track(void);
void setVolume(int volume);
int getVolume(void) const;
void play(AnsiString file);
void stop(void);
private:
AnsiString _alias;
int _volume;
void CloseFile(void);
};
class MediaPlayer
{
public:
MediaPlayer(int TrackCount);
~MediaPlayer(void);
Track &operator[](int index);
void stopAll(void);
private:
Track *_tracks;
int _TrackCount;
};
#endif

Cpp-Datei:
//---------------------------------------------------------------------------

#pragma hdrstop

#include „U_Tonspur.h“
//---------------------------------------------------------------------------

#pragma package(smart_init)
Track::Track(void)
{
_alias = „“;
_volume = 100; // Anfangs mit voller Lautstärke
}
Track::~Track(void)
{
CloseFile();
}
void Track::setVolume(int volume)
{
_volume=volume;
}
int Track::getVolume(void) const
{
return _volume;
}
void Track::stop(void)
{
mciSendString(("stop "+_alias).c_str(),0,0,0);
}
void Track::stuck_out_tongue:lay(AnsiString file)
{
if(_alias != „“)
CloseFile();

int x;
x = random(255);
_alias = „Track“ + x;
mciSendString((„open „“+file+“" alias "+_alias + „wait“).c_str(),0,0,0);
mciSendString((„play „+_alias+“ from 0“).c_str(),0,0,0);
mciSendString(("setaudio „+_alias+“ volume to "+IntToStr(_volume)).c_str(),0,0,0);
}
void Track::CloseFile(void)
{
mciSendString(("close "+_alias).c_str(),0,0,0);
}
Track &MediaPlayer::operator[](int index)
{
return _tracks[index];
}
MediaPlayer::MediaPlayer(int TrackCount)
{
_TrackCount = TrackCount;
_tracks = new Track[TrackCount];
}
MediaPlayer::~MediaPlayer(void)
{
stopAll();
delete[]_tracks;
}
void MediaPlayer::stopAll(void)
{
for(int i=0;i

Hallo Henning

Ich bin weder mit MCI noch mit dem Borland sehr vertraut, ich spiele aber das folgende (mit VC6 auf WIN2K) ohne Probleme auf Anhieb:

// geht so zu linken auf VC6:
#pragma comment (lib, "winmm")

#include 
#include 

int main()
{
 mciSendString(
 "play D:/wavs/future.wav from 0 to 3000 wait",0,0,0);
 // auch ohne " to 3000 wait"

 system("pause");
 return 0;
}

Hast du beim Borland die „winmm.lib“ (oder nach GNU auch „libwinmm.a“) gelinkt? Ohne der geht gar nichts.

Die „“ bei dem Dateinamen sind offenbar überflüssig:

mciSendString(("open \""+file+"\" alias "+\_alias + "wait").c\_str(),0,0,0);

würde ich so schreiben:

mciSendString(
 string("open " + file + alias + \_alias + " wait").c\_str(),0,0,0);

wenn das der Pfad ist, den Du brauchst.

lg
Martin

PS: der Code ist in

 Marken zu schreiben.

Hallo,
also ich habe es nun mal so gemacht wie du geschrieben hast. Allerdings kennt er bei deinem Vorschlag alias nicht, was ja zu MciSendString() dazugehört. Zum Anderen muss ich mal schauen wie ich die *.lib-Datei einbinden kann. Denn bisher kenn ich das von Klassen nur mit #include oder #include „clGraph.h“ für eigene Units.

Viele Grüße
Henning

Hallo Henning

Allerdings kennt er bei deinem Vorschlag alias nicht, was ja
zu MciSendString() dazugehört.

Wie, „alias“ gehört dazu? Seit wann?
Sieht man doch in meinem Beispiel, das es ohne geht, oder nicht?

In deinem Code gibt es die Zeile:

mciSendString(("open \""+file+"\" alias "+\_alias + "wait").c\_str(),0,0,0);

Wenn er „alias“ nicht kennt, hast Du wohl vergessen, das weiter oben wo zu deklarieren, z.B. als AnsiString. Das kann auch syntaktisch nicht stimmen: wenn „alias“ ein String ist, muss vorher ein ‚+‘ rein, und das " nachher weg. Mit der Schreibe (d.i. ohne Leerzeichen) würde ich allerdings auch die Uebersicht verlieren.

Zum Anderen muss ich mal schauen wie ich die *.lib-Datei einbinden kann. Denn bisher
kenn ich das von Klassen nur mit #include oder
#include „clGraph.h“ für eigene Units.

Sollte im Compiler-Handbuch stehen, oder Du machst eine neue Frage hier „wie geht Lib einbinden“.
Schreibe auch die Fehler-Meldungen, die Du kriegst. Das kann für Borland-Kenner/innen ganz aufschlussreich sein.

lg
Martin B