I
Ian Robertson
I am trying to write a function that takes a reference to an object as its
arguement. The object is created in another function and I am trying to pass
the object to another function from within the function that created the
object. I have cut out some code as I dont think showing a for loop is
helpful.
void TMP3_Main_Form::LoadMP3()
{
TMemoryStream *MP3Stream = new TMemoryStream();
MP3Stream->LoadFromFile(FileListBox1->Items->Strings.c_str());
GetMP3Data(&MP3Stream);
....
....
....
}
the object is created within this function. I load a file into the stream. I
then want to pass that stream to another function to perform other tasks on
the stream.
My GetMP3Data function accepts a pointer to a stream as its arguement.
void TMP3_Main_Form::GetMP3Data(TMemoryStream *MP3)
{
char DATA[3]={0,0,0};
MP3.Position = MP3.Seek(-128,soFromEnd);
MP3.Read(DATA,3);
/* Have tried
MP3->Position = MP3->Seek(-128,soFromEnd);
MP3->Read(DATA,3);
also but this didnt seem to work either
*/
....
....
....
}
I am having trouble with the * and & operators. I can use and process
MP3Stream within the LoadTag() function but not with the GetMP3Data
function. I am trying to avoid having to reload the file from disk from
scratch in the GetMP3Data function to get the data into the function.
Ideally I want to be able to load my file once into a stream in memory, do
my processing with a couple of different functions on the same stream, and
then rewrite the file back to disk from my updated stream. At the moment I
have to keep reloading the file from disk as I cant pass by reference
properly.
Can anyone help?
Thanks in advance
arguement. The object is created in another function and I am trying to pass
the object to another function from within the function that created the
object. I have cut out some code as I dont think showing a for loop is
helpful.
void TMP3_Main_Form::LoadMP3()
{
TMemoryStream *MP3Stream = new TMemoryStream();
MP3Stream->LoadFromFile(FileListBox1->Items->Strings.c_str());
GetMP3Data(&MP3Stream);
....
....
....
}
the object is created within this function. I load a file into the stream. I
then want to pass that stream to another function to perform other tasks on
the stream.
My GetMP3Data function accepts a pointer to a stream as its arguement.
void TMP3_Main_Form::GetMP3Data(TMemoryStream *MP3)
{
char DATA[3]={0,0,0};
MP3.Position = MP3.Seek(-128,soFromEnd);
MP3.Read(DATA,3);
/* Have tried
MP3->Position = MP3->Seek(-128,soFromEnd);
MP3->Read(DATA,3);
also but this didnt seem to work either
*/
....
....
....
}
I am having trouble with the * and & operators. I can use and process
MP3Stream within the LoadTag() function but not with the GetMP3Data
function. I am trying to avoid having to reload the file from disk from
scratch in the GetMP3Data function to get the data into the function.
Ideally I want to be able to load my file once into a stream in memory, do
my processing with a couple of different functions on the same stream, and
then rewrite the file back to disk from my updated stream. At the moment I
have to keep reloading the file from disk as I cant pass by reference
properly.
Can anyone help?
Thanks in advance