Тема: Читання розширення бінарного файлу

Доброго для ,  пишу курсову по С++ ось виникла невеличка проблема) Потрібно прочитати розширення бінарного файлу і відповідно до розширення відкривало файл у відповідній програмі. Можливо підскажите якусь літературу , чи алгоритм , буду вдячний =)

2

Re: Читання розширення бінарного файлу

Команда system("myprogram.exe myfile.myexention"); вам у поміч.

I belong to the Dead Generation.
Подякували: IlleQuiDormit1

3 Востаннє редагувалося IlleQuiDormit (04.03.2014 21:51:30)

Re: Читання розширення бінарного файлу

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 // Stream^ myStream;
                 System::IO::Stream ^ myStream;
      OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
      

     
      openFileDialog1->InitialDirectory = "c:\\";
      openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
      openFileDialog1->FilterIndex = 2;
      openFileDialog1->RestoreDirectory = true;
     // openFileDialog1->ShowDialog();
    
      if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
      {
         if ( (myStream = openFileDialog1->OpenFile()) != nullptr )
         {
              system("c:\\WinDjView.exe c:\\pascal.djvu");
            
            myStream->Close();
         };
      
      };
             }    ;
     
             };

Ось що я накидав , результат якийсь є , але не зовсім те .
Мене цікавить чи можна , при зчитуванні файлу через openFileDialog1 якось визначити його тип . І щоб приблизно кінцевий результат був:

 if ( somefile == ".djvu") system(" c:\\WinDjView.exe somefile");

Тобто читало файл через penFileDialog1 перевіряло його тип , якщо тип співпадає з якоюсь з умов, відкривало його у відповідній програмі.

Так як я зрозумів команда system працює як командна строка, і опрацьовувати з нею файлові зміні чи потоки не вийде. ( у напрямку якому я запитую)
(P.S:Уявлення є , а як реалізувати в коді , толком не знаю , вже кілька годин цікавість розриває , шастаю по форумах і шукаю інформацію)

4

Re: Читання розширення бінарного файлу

По розширенню тип файлу визначити на 100% впевнено є неможливо. Припустимо, я перейменував файл vasa.rar на vasa.doc - і вьорд захлинеться у списку кодувань, якими, можливо, закодовано файл.

Більшість стандартних типів файлів мають структуру визначеного вигляду - щодо особливостей кожної слід гуглити.

I belong to the Dead Generation.

5 Востаннє редагувалося koala (05.03.2014 08:38:14)

Re: Читання розширення бінарного файлу

Так як я зрозумів команда system працює як командна строка, і опрацьовувати з нею файлові зміні чи потоки не вийде. ( у напрямку якому я запитую)

Не зрозумів, що значить "опрацьовувати файлові зміні чи потоки", якщо вам треба "відповідно до розширення відкривати файл у відповідній програмі".

Console
Просто робіть

system("\"c:\\pascal.djvu\"");

(внутрішні лапки в цьому випадку не потрібні, але якщо ім'я файлу містить пробіли...)
Ну, або

system("start \"c:\\pascal.djvu\"");

- якщо не потрібно чекати на завершення.

WinAPI

Деталі тут

ShellExecute(handle, "open", "\"c:\\pascal.djvu\"", NULL, NULL, SW_SHOWNORMAL);

Подякували: IlleQuiDormit1

6 Востаннє редагувалося IlleQuiDormit (06.03.2014 01:14:15)

Re: Читання розширення бінарного файлу

Написав як було запропоновано

ShellExecute(Handle, "open", "\"c:\\File1.txt\"", NULL, NULL, SW_SHOWNORMAL);

але при компіляції  кидає помилку  http://screenshot.su/show.php?img=256b7 … 149e14.jpg

Почитав декілька статтей виникло питання, чи можна задавати файл для відкриття  через діалогове вікно, щоб користувачи вибирав файл, як в Openfiledialog.

// Знайшов назву функції але про неї майже нічого можливо не те ле все ж таки - FindExecutable

7 Востаннє редагувалося Chemist-i (06.03.2014 01:18:09)

Re: Читання розширення бінарного файлу

то підключить windows.h
чи Shellapi.h
короче ось тут почитайте

x

8 Востаннє редагувалося koala (06.03.2014 07:48:41)

Re: Читання розширення бінарного файлу

IlleQuiDormit написав:

Написав як було запропоновано

ShellExecute(Handle, "open", "\"c:\\File1.txt\"", NULL, NULL, SW_SHOWNORMAL);

але при компіляції  кидає помилку  http://screenshot.su/show.php?img=256b7 … 149e14.jpg

Вам там прямим текстом написано: проблема з першим параметром. А ми не телепати.

IlleQuiDormit написав:

Почитав декілька статтей виникло питання, чи можна задавати файл для відкриття  через діалогове вікно, щоб користувачи вибирав файл, як в Openfiledialog.

// Знайшов назву функції але про неї майже нічого можливо не те ле все ж таки - FindExecutable

Можна. За допомогою Openfiledialog (я нічого не знаю про бібліотеку з такою функцією/класом, але судячи з назви, воно цілком спроможне зробити те, що ви хочете).