Toon posts:

[C++] opendialog en file open probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Na een aantal c++ posts is mijn project voor school bijna af, althans....

Ik ben tegen de zoveelste rare kwestie aangelopen, namelijk:
Als ik bijvoorbeeld via een opendialog een file opsla of weer open BUITEN de map vanwaar ik mijn programma draai dan treedt het probleem op. :'(

(dit saven en openen werkt overigens prima het probleem is een gevolg van het gebruik van de opendialog)

Ga ik vervolgens een andere file openen, welke zich in dezelfde dir bevindt als vanwaar ik de executable run, dus als volgt:
pfLeesIn=fopen("VijfLetters","r");
Dan krijg ik de fout dat hij de file niet kan vinden. Open ik vantevoren NIETS met de opendialog dan opent hij hem wel. 8)7

dus de inital open dir of iets dergelijks wordt waarschijnlijk door de opendialog geset op een andere dir dan de homedir. waardoor bij de fopen de file niet gevonden kan worden. |:(

Full path heeft geen zin want het programma moet vanuit verschillende paths/dirs gerunned kunnen worden. :)

Ook heb ik gedacht aan het achterhalen van de path vanwaar de exe draait en dit path te gebruiken. Dit door de /tralalala.exe eraf te splitsen en de filenaam die ik wil openen eraan te plakken, dmv onderstaande code, maar ik vind dit nogal een provisorische oplossing. :P

char cDirectoryBuffer[300];
GetModuleFileName(NULL, cDirectoryBuffer, 300) ;

Mijn vraag: Heb ik hier te maken met een bug in windows? :?
en hoe kan ik ervoor zorgen dat ik de initial dir weer op de homedir kan zetten als het ware?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:10

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik snap je verhaal niet helemaal, maar ik denk dat je niet op de hoogte bent van het feit dat een proces een working directory heeft vanwaar relatieve paden geopend worden. Deze directory kun je opvragen en instellen met Get/SetCurrentDirectory().

Let er overigens op dat de current directory tijdens startup niet de directory hoeft te zijn waar de executable in staat; de initiele working directory is instelbaar via snelkoppelingen of mbv code als je een ander proces opstart.

En uit de MSDN:
The dialog box automatically changes your current directory when the user selects a different drive or directory. To prevent the dialog box from changing your current directory, set the OFN_NOCHANGEDIR flag

[ Voor 20% gewijzigd door .oisyn op 11-05-2005 19:13 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.