Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MkG
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 25
#1

Чтение массива объектов и регистрация расширения файла - C++

06.09.2010, 19:58. Просмотров 996. Ответов 15
Метки нет (Все метки)

Делаю небольшую программу. Она должна открывать некий файл и обрабатываются данные из него.
В общем есть некая структура Object. Из файла считывается число n и нужно создать массив этих Object из n элементов.
Плюс, желательно сделать, чтобы можно было открыть файл с помощью моей программы. То есть я дважды щелкаю по файлу и открывается моя программа, выполняя определенные действия с этим файлом.
Как это сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
06.09.2010, 20:02     Чтение массива объектов и регистрация расширения файла #2
MkG,

Код такой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <fstream>
 
struct Object
{
//Элементы
};
 
int main()
{
    int n;
    std::ifstream ifs;
    ifs.open("Test.txt");
    ifs>>n;
    Object ObArr[n];
    //И далее
    return 0;
}
MkG
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 20:11  [ТС]     Чтение массива объектов и регистрация расширения файла #3
У меня в Dev-Cpp вылезает ошибка variable-sized object `ObArr' may not be initialized.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
06.09.2010, 20:18     Чтение массива объектов и регистрация расширения файла #4
MkG, М. Ну структура то пустая. Заполните ее чем-нибудь.
Если будет продолжать напишите.

C++
1
2
Object*ObArr;
ObArr=new Object[n];
MkG
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 20:27  [ТС]     Чтение массива объектов и регистрация расширения файла #5
Все теперь работает. A что насчет
Плюс, желательно сделать, чтобы можно было открыть файл с помощью моей программы. То есть я дважды щелкаю по файлу и открывается моя программа, выполняя определенные действия с этим файлом.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
06.09.2010, 20:32     Чтение массива объектов и регистрация расширения файла #6
MkG, Стандартом языка это не предусмотрено. А вот к WinApi можете попробовать обратиться
afiskon
 Аватар для afiskon
65 / 53 / 3
Регистрация: 06.09.2010
Сообщений: 254
06.09.2010, 21:10     Чтение массива объектов и регистрация расширения файла #7
Нужно добавить запись в реестре, что программа такая-то отвечает за обработку файлов таких-то. Делается это, действительно, с помощью WinApi.
MkG
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 21:15  [ТС]     Чтение массива объектов и регистрация расширения файла #8
2afiskon.
А можно поподробнее? Что вписать в реестр и что вписать в программу, чтобы она знала, что делать с файлом, который ей пытаются впихнуть?
afiskon
 Аватар для afiskon
65 / 53 / 3
Регистрация: 06.09.2010
Сообщений: 254
06.09.2010, 21:24     Чтение массива объектов и регистрация расширения файла #9
Честно говоря я уже очень давно ничего не писал под windows. Советую поискать в google, особенно полезным может оказаться поиск в блогах. Кроме того, посмотрите собственный реестр, сделайте поиск по имени программы браузера (firefox.exe, opera.exe или что там у Вас) - там по большому счету должно быть очевидно что и куда записать. Но вообще-то с реестром нужно быть осторожнее - не забывайте делать резервную копию системы.
MkG
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 21:26  [ТС]     Чтение массива объектов и регистрация расширения файла #10
А как искать?
afiskon
 Аватар для afiskon
65 / 53 / 3
Регистрация: 06.09.2010
Сообщений: 254
06.09.2010, 21:27     Чтение массива объектов и регистрация расширения файла #11
Уж пользоваться google.com, будьте любезны, научитесь самостоятельно.
Mencey
 Аватар для Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
06.09.2010, 21:51     Чтение массива объектов и регистрация расширения файла #12
Вот нагуглил код процедуры(на Delphi) короче функция делает так чтобы файл с разрешением ext открывался программой FileName.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.RegisterFileType(ext: string; FileName: string);
var
  reg: TRegistry;
begin
  reg:=TRegistry.Create;
  with reg do
  begin
    RootKey:=HKEY_CLASSES_ROOT;
    OpenKey('.'+ext,True);
    WriteString('',ext+'file');
    CloseKey;
    CreateKey(ext+'file');
    OpenKey(ext+'file\DefaultIcon',True);
    WriteString('',FileName+',0');
    CloseKey;
    OpenKey(ext+'file\shell\open\command',True);
    WriteString('',FileName+' "%1"');
    CloseKey;
    Free;
  end;
end;
Пример работы:
RegisterFileType('DelphiWorld', Application.ExeName);
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
06.09.2010, 21:53     Чтение массива объектов и регистрация расширения файла #13
Цитата Сообщение от MkG Посмотреть сообщение
То есть я дважды щелкаю по файлу и открывается моя программа, выполняя определенные действия с этим файлом.
Присваиваете файлу какое-нибудь уникальное расширение (типа file.xyz), в проводнике два раза по нему щёлкаете, винда говорит, что не знает, что с ним делать, предлагает в сети что-нибудь поискать, отказываетесь (выбираете "указать программу"), в появившемся окне находите свою программу, следите за тем, чтобы был отмечен чекбокс "открывать этой программой все файлы с этим расширением", всё. Вот, правда, программу после этого в другое место переносить нельзя. Так, что, лучше её (программу) сначала куда-нибудь в program files засунуть...
MkG
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 22:14  [ТС]     Чтение массива объектов и регистрация расширения файла #14
Mencey, я не знаю Delphi.
Easybudda, я знаю, как ассоциировать файл определенного типа с определенной программой. Я не знаю, как заставить программу корректно работать с файлом.
Mencey
 Аватар для Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
06.09.2010, 22:27     Чтение массива объектов и регистрация расширения файла #15
Код некомпилил такчто возможны ошибки. Ну думаю в целом понятно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <conio.h>
 
int main(int argc, char* argv[])
// argc - кол-во аргументов командной строки, argv - аргументы командной строки
{
  // Первый аргумент имя программы
  printf( "%s\n", argv[0] );
  // Например елси твоей программой открывают файл, то фторым имя открываемого файла
  if( argc <= 1 )
    return 1;
  printf( "%s", argv[1] );  
  getch();
  return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2010, 18:05     Чтение массива объектов и регистрация расширения файла
Еще ссылки по теме:

Чтение массива из файла C++
Запись и чтение массива из файла C++
Чтение объектов из файла C++
C++ Считывание массива объектов из файла
Добавить вывод в файл и чтение из файла объектов класса C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
07.09.2010, 18:05     Чтение массива объектов и регистрация расширения файла #16
MkG, почитайте тут.
Yandex
Объявления
07.09.2010, 18:05     Чтение массива объектов и регистрация расширения файла
Ответ Создать тему
Опции темы

Текущее время: 02:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru