Hello everyone,
I get a strange problem with FileBrowserComponent and i can't figure out why.
This is my piece of code :
///get the desktop file of the user File desktopFile = File:: getSpecialLocation(File::userDesktopDirectory); //create a ScopedPointer for the audio file filter wildcardFilter = new WildcardFileFilter(String("*.wav,*.aif,*.aiff,*.mp3"), "*", String("Audio files")); //create the flags of the FileBrowserComponent int flags = FileBrowserComponent::openMode | FileBrowserComponent::canSelectFiles | FileBrowserComponent::filenameBoxIsReadOnly; //create a ScopedPointer<FileBrowserComponent> with the filter and desktop as default directory browser =new FileBrowserComponent(flags , desktopFile, wildcardFilter, nullptr); //Create a FileChooserDialogBox with my FileBrowserComponent FileChooserDialogBox dialogBox (String("Choose an audio file"), String("Please choose some audio files that you want to open..."), *browser, false, Colours::lightgrey); ////Use the selected files if (dialogBox.show()) { int numberOfFiles = browser->getNumSelectedFiles (); StringArray mesfiles; for(int i=0;i<numberOfFiles;++i) { File selectedFile = browser->getSelectedFile (i); mesfiles.add(selectedFile.getFullPathName ()); DBG(selectedFile.getFullPathName ()); }}
This piece of code work well when i use it alone in a dedicated application for it.
When I add it in a function of my program it work well when i compile in release mode but when i compile in debug mode, MS Visual studio lunch an exception with the following text :
"Unhandled 0x00452AA0 in myprogram.exe Exception: 0xC0000005: Access Violation when writing to the location 0x00A28B74."
and stop at this line of the juce_String.cpp code:
static CharPointerType makeUniqueWithByteSize (const CharPointerType text, size_t numBytes) { StringHolder* const b = bufferFromText (text); if (b == (StringHolder*) &emptyString) { CharPointerType newText (createUninitialisedBytes (numBytes)); newText.writeNull(); return newText; } ///line where the program stop if (b->allocatedNumBytes >= numBytes && b->refCount.get() <= 0) return text; CharPointerType newText (createUninitialisedBytes (jmax (b->allocatedNumBytes, numBytes))); memcpy (newText.getAddress(), text.getAddress(), b->allocatedNumBytes); release (b); return newText; }
Do someone know why it could have this behavior and don't work only in debug mode? What could cause the problem?
I'm sorry to ask a so stupid question on this forum but i'm a newbie with Juce and C++ programing. It is not my regular work. Maybe someone can have an answer for me.
Thanks.