Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 18.04.2010
Сообщений: 25
1

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

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

Author24 — интернет-сервис помощи студентам
Делаю небольшую программу. Она должна открывать некий файл и обрабатываются данные из него.
В общем есть некая структура Object. Из файла считывается число n и нужно создать массив этих Object из n элементов.
Плюс, желательно сделать, чтобы можно было открыть файл с помощью моей программы. То есть я дважды щелкаю по файлу и открывается моя программа, выполняя определенные действия с этим файлом.
Как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2010, 19:58
Ответы с готовыми решениями:

Чтение с файла и резервирование пямяти для массива объектов
Проблема такая. Мне надо считать с файла строки и записать их в массив, который я закину в объект,...

Запись файла и чтение массива объектов класса Emloyee
Здравствуйте! Два дня бьюсь над записью в файл и чтения из файла массива объектов созданного...

Чтение объектов из файла
Пожалуйста, помогите с поиском ошибки. Суть - чтение объектов из файла, 3 столбца и n строк. Путем...

Чтение объектов из файла
Всем привет! Сохраняю в файл массив объектов у которых есть связь с другим массивом объектов,...

15
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
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;
}
0
0 / 0 / 1
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 20:11  [ТС] 3
У меня в Dev-Cpp вылезает ошибка variable-sized object `ObArr' may not be initialized.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.09.2010, 20:18 4
MkG, М. Ну структура то пустая. Заполните ее чем-нибудь.
Если будет продолжать напишите.

C++
1
2
Object*ObArr;
ObArr=new Object[n];
0
0 / 0 / 1
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 20:27  [ТС] 5
Все теперь работает. A что насчет
Плюс, желательно сделать, чтобы можно было открыть файл с помощью моей программы. То есть я дважды щелкаю по файлу и открывается моя программа, выполняя определенные действия с этим файлом.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.09.2010, 20:32 6
MkG, Стандартом языка это не предусмотрено. А вот к WinApi можете попробовать обратиться
0
65 / 53 / 4
Регистрация: 06.09.2010
Сообщений: 254
06.09.2010, 21:10 7
Нужно добавить запись в реестре, что программа такая-то отвечает за обработку файлов таких-то. Делается это, действительно, с помощью WinApi.
0
0 / 0 / 1
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 21:15  [ТС] 8
2afiskon.
А можно поподробнее? Что вписать в реестр и что вписать в программу, чтобы она знала, что делать с файлом, который ей пытаются впихнуть?
0
65 / 53 / 4
Регистрация: 06.09.2010
Сообщений: 254
06.09.2010, 21:24 9
Честно говоря я уже очень давно ничего не писал под windows. Советую поискать в google, особенно полезным может оказаться поиск в блогах. Кроме того, посмотрите собственный реестр, сделайте поиск по имени программы браузера (firefox.exe, opera.exe или что там у Вас) - там по большому счету должно быть очевидно что и куда записать. Но вообще-то с реестром нужно быть осторожнее - не забывайте делать резервную копию системы.
0
0 / 0 / 1
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 21:26  [ТС] 10
А как искать?
0
65 / 53 / 4
Регистрация: 06.09.2010
Сообщений: 254
06.09.2010, 21:27 11
Уж пользоваться google.com, будьте любезны, научитесь самостоятельно.
0
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445
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);
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
06.09.2010, 21:53 13
Цитата Сообщение от MkG Посмотреть сообщение
То есть я дважды щелкаю по файлу и открывается моя программа, выполняя определенные действия с этим файлом.
Присваиваете файлу какое-нибудь уникальное расширение (типа file.xyz), в проводнике два раза по нему щёлкаете, винда говорит, что не знает, что с ним делать, предлагает в сети что-нибудь поискать, отказываетесь (выбираете "указать программу"), в появившемся окне находите свою программу, следите за тем, чтобы был отмечен чекбокс "открывать этой программой все файлы с этим расширением", всё. Вот, правда, программу после этого в другое место переносить нельзя. Так, что, лучше её (программу) сначала куда-нибудь в program files засунуть...
0
0 / 0 / 1
Регистрация: 18.04.2010
Сообщений: 25
06.09.2010, 22:14  [ТС] 14
Mencey, я не знаю Delphi.
Easybudda, я знаю, как ассоциировать файл определенного типа с определенной программой. Я не знаю, как заставить программу корректно работать с файлом.
0
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445
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;
}
0
Эксперт С++
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
07.09.2010, 18:05 16
MkG, почитайте тут.
0
07.09.2010, 18:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.09.2010, 18:05
Помогаю со студенческими работами здесь

Чтение из файла и создание объектов MFC
Rect MyRect; CPaintDC dc(this); char buff; int x1,x2,x3,x4,i=1; ifstream f(&quot;E\\data.txt&quot;);...

Чтение и запись объектов класса из файла
Создайте класс и его элементы в соответствии с вашим вариантом. Затем создайте объект класса и...

Сохранение и чтение динамических объектов с ini файла
Привет всем, есть код сохранения и чтения динамических объектов: procedure...

Добавить вывод в файл и чтение из файла объектов класса
Добавить вывод в файл и чтение из файла объектов класса. Работа должна отображаться на мониторе....


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru