CFileDialog и fopen
От: Ettore  
Дата: 18.07.08 00:23
Оценка:
Здравствуйте!
Необходимо при помощи CFileDialog получить путь к файлу так, чтоб по нему можно было открыть фаил в fopen. напрямую через fd.m_ofn.lpstrFile не выходит, фаил не "схватывается"(хотя если fd.m_ofn.lpstrFile потом тупо переприсвоить ="file.txt"; — все работает)...
помогите!!!!
Re: CFileDialog и fopen
От: Ettore  
Дата: 18.07.08 01:04
Оценка:
Здравствуйте, Ettore, Вы писали:

E>Здравствуйте!

E>Необходимо при помощи CFileDialog получить путь к файлу так, чтоб по нему можно было открыть фаил в fopen. напрямую через fd.m_ofn.lpstrFile не выходит, фаил не "схватывается"(хотя если fd.m_ofn.lpstrFile потом тупо переприсвоить ="file.txt"; — все работает)...
E>помогите!!!!

покопавшис, проблема оказалась в другом. параметр m_TEMPб который хранит путь к файлу определен как глобальная переменая. он обязан передаваться между вкладками. при откртии файла и записи в него пути (fd.m_ofn.lpstrFile) все открывается. НО при первоначальном присовении парметру m_TEMP какого-либо пути вручную, файл распознается, но при открытии фаила(и соответственно перезаписи m_TEMP) открываться все перестает...
Re[2]: CFileDialog и fopen
От: dcb-BanDos Россия  
Дата: 18.07.08 12:32
Оценка: 32 (1) +2 :)
Здравствуйте, Ettore, Вы писали:

E>Здравствуйте, Ettore, Вы писали:


E>>Здравствуйте!

E>>Необходимо при помощи CFileDialog получить путь к файлу так, чтоб по нему можно было открыть фаил в fopen. напрямую через fd.m_ofn.lpstrFile не выходит, фаил не "схватывается"(хотя если fd.m_ofn.lpstrFile потом тупо переприсвоить ="file.txt"; — все работает)...
E>>помогите!!!!

E>покопавшис, проблема оказалась в другом. параметр m_TEMPб который хранит путь к файлу определен как глобальная переменая. он обязан передаваться между вкладками. при откртии файла и записи в него пути (fd.m_ofn.lpstrFile) все открывается. НО при первоначальном присовении парметру m_TEMP какого-либо пути вручную, файл распознается, но при открытии фаила(и соответственно перезаписи m_TEMP) открываться все перестает...


перечитал раз двадцать, все равно ничего не понял, не буду говорить про свои ассоциации, возникнувшие при прочтении ))) , попытаюсь разобраться:

1.

Необходимо при помощи CFileDialog получить путь к файлу так чтоб по нему можно было открыть фаил в fopen.


Окей, отрываем MSDN видим следующее:

GetFileExt
Returns the file extension of the selected file.

GetFileName
Returns the filename of the selected file.

GetFileTitle
Returns the title of the selected file.

GetFolderPath
Retrieves the path of the currently open folder or directory for an Explorer-style Open or Save As common dialog box.

GetNextPathName
Returns the full path of the next selected file.

GetOFN
Retrieves the OPENFILENAME structure of the CFileDialog object.

GetPathName
Returns the full path of the selected file.


считаем что путь/пути к файлам мы получили.

2. Зачем тебе fopen, если ты используешь MFC да и С++? Используй CFile, std::fstream и прочее.
3.

напрямую через fd.m_ofn.lpstrFile не выходит, фаил не "схватывается"(хотя если fd.m_ofn.lpstrFile потом тупо переприсвоить ="file.txt"; — все работает)...

по буквам догадываемся что fd — это объект CFileDialog, опять лезем в MSDN, видим следующее:

m_ofn is a structure of type OPENFILENAME.

не поверив, что он объявлен как public глянул исходник:

public:
// Attributes
__declspec(property(get=GetOFN)) OPENFILENAME m_ofn;

Далее смотрю что такое OPENFILENAME, нахожу у него lpstrFile.
Перечитываю фразу:

напрямую через fd.m_ofn.lpstrFile не выходит, фаил не "схватывается"(хотя если fd.m_ofn.lpstrFile потом тупо переприсвоить ="file.txt"; — все работает)...

не понимаю, что происходит с начала, что потом, потом долго думаю над "фаил не "схватывается"", мозг ступорит.
затем перечитываю еще раз, понимаю что происходит присвоение fd.m_ofn.lpstrFile ="file.txt" и "все работает"
над словами "все работает" опять ступор....

4. Дальше — больше (с)...

покопавшис, проблема оказалась в другом. параметр m_TEMPб который хранит путь к файлу определен как глобальная переменая. он обязан передаваться между вкладками. при откртии файла и записи в него пути (fd.m_ofn.lpstrFile) все открывается. НО при первоначальном присовении парметру m_TEMP какого-либо пути вручную, файл распознается, но при открытии фаила(и соответственно перезаписи m_TEMP) открываться все перестает...


читаю про m_TEMP, предполагаю, что я могу его найти в OPENFILENAME, но нет, его там нет....
читаю дальше и вижу, что он еще и определен как ГЛОБАЛЬНАЯ переменная...
интуитивно вспоминаю что глобальные переменные — это зло, но у нас другая проблема.....о нет, где-то глобально определен m_TEMP!!!!
Далее читаю про то, что этот параметр(ака глобальная переменная) должен передаваться между вкладками.......
Так как интуиция меня начинает подводить, начинаю думать что я сошел с ума.
Зачем передавать глобальную переменную между вкладками это остается для меня загадкой, но еще большей загадкой становится вопрос: "какие еще №%?№% вкладки??!!?"
следующее предложение заставляет вырваться нецензурные слова вида: "о нет, фак мой мозг!!!!"

при открытии файла и записи в него пути (fd.m_ofn.lpstrFile) все открывается.

что мы видим?!
а видим мы следующее:
1. мы открываем файл
2. записываем в него путь fd.m_ofn.lpstrFile="text.txt"
3. все открывается.

в процессе написания этих пунктов пробежал по ним, ничего опять не понял и безкультурно выругался про себя.
    Файл открыт, туда пишем путь этого файла.(в принципе может такое понадобится)
    концовка меня убивает, у нас итак все открыто, да еще и что-то записано, а все открывается.
Идем далее:
НО при первоначальном присовении парметру m_TEMP какого-либо пути вручную, файл распознается, но при открытии фаила(и соответственно перезаписи m_TEMP) открываться все перестает...

Всплывает в памяти глобальный параметр m_TEMP, оказывается, мы туда что-то присваиваем.
Файл распознается... интересно чем он распознается?! антивирусом как вирус?!

но при открытии фаила(и соответственно перезаписи m_TEMP) открываться все перестает...

перечитываю опять раз пять, открыли файл, перезаписали глобальный параметр m_TEMP
и о нет!!! открываться все перестает!!!!

Умываю руки, понял что мои навыки интуиции и телепатии находятся даже не на нуле, а в минусе =(
Я в шоке, в принципе все действительно может перестать открываться, единственное что могу сказать....

Может винт сдох?!
Ничто не ограничивает полет мысли программиста так, как компилятор.
Re[2]: CFileDialog и fopen
От: Аноним  
Дата: 21.07.08 09:33
Оценка:
Здравствуйте, Ettore, Вы писали:

E>>Необходимо при помощи CFileDialog получить путь к файлу так, чтоб по нему можно было открыть фаил в fopen. напрямую через fd.m_ofn.lpstrFile не выходит, фаил не "схватывается"(хотя если fd.m_ofn.lpstrFile потом тупо переприсвоить ="file.txt"; — все работает)...

E>>помогите!!!!
E>покопавшис, проблема оказалась в другом. параметр m_TEMPб который хранит путь к файлу определен как глобальная переменая. он обязан передаваться между вкладками. при откртии файла и записи в него пути (fd.m_ofn.lpstrFile) все открывается. НО при первоначальном присовении парметру m_TEMP какого-либо пути вручную, файл распознается, но при открытии фаила(и соответственно перезаписи m_TEMP) открываться все перестает...
Что-то у Вас какая-то каша в голове. Ничего не понятно из Вашего описания проблемы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.