|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.09.2007, 01:14 | #1 |
Регистрация: 26.09.2007
Сообщений: 5
|
Генерация файла с расширением CPP
Здраствуйте. У меня такой вопрос.
Предположим нужно сгенерировать какой-нибудь код на C++ и сохранить его в файлах .h и .CPP. (программа на С++ генерирует) Не могли бы вы подсказать как это сделать. То есть, как вообще с помощью C++ создать файл с такими расширениями? (заранее извиняюсь если вопрос глупый, но мне не понятно) |
26.09.2007, 15:08 | #2 |
Форумчанин
Регистрация: 10.09.2007
Сообщений: 105
|
Так, начну с того, что *.CPP файл, это обычный текстовый файл.
Создать его можно функцией //----------------------ВЗЯЛ ИЗ MS SDK------------------------------- HANDLE CreateFile( LPCTSTR lpFileName, // pointer to name of the file DWORD dwDesiredAccess, // access (read-write) mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes DWORD dwCreationDistribution, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // handle to file with attributes to copy ); //--------------------------------------------------------------------- так, функция возвращает идентификатор созданного файла (Handle). первый параметр функции это и есть имя файла. В нашем случае это SuperFile.cpp....правильно??? нам же нужен *.cpp файл? далее, второй параметр есть тип доступа к объекту может быть 0 - железка сама решает как файл может быть открыт программой GENERIC_READ - только чтение GENERIC_WRITE - запись. можно комбинировать, если мне не изменяет память при помощи операции побитового или....тоесть GENERIC_READ | GENERIC_WRITE далее, значит тут идет параметр, регулирующий, как будет вести себя система при одновременном открытии данного файла несколькими приложениями, возможны варианты: FILE_SHARE_DELETE - если одно приложение работает с файлом, а от другого приходит запрос на его удаление, файл будет удален FILE_SHARE_READ - соответственно дает читать одновременно всем ну и FILE_SHARE_WRITE - писать одновременно все. Можешь поставить 0, и тогда только одна прога может читать/писать этот файл в один момент времени. далее, идет указатель на структуру SECURITY_ATTRIBUTES, ее нужно объявить выше. туда будут помещены кое какие данные, тут писать не буду. далее идет интересный параметр, отвечающий за реакцию функции на разные обстаятельства при создании файла, если указать CREATE_NEW - функция навернется если файл уже существует собственно эту константу и ставь. а то я печатать запарюсь и последний параметр, отвечает за атрибуты файла FILE_ATTRIBUTE_HIDDEN - вот так ты сделаешь скрытым FILE_ATTRIBUTE_NORMAL - так нормальным сделаешь. есть куча возможностей, далее идет последний....о да, наконец то, последний параметр, отвечает за указание системе, как создать файл. есть вариации, можно реализовать отложенную запись на диск, писать файл в кэш, а потом уже на диск. но нам тут нужен параметр.... в общем я особо не вник пиши NULL вот рабочий пример вызова функции HANDLE hFile = CreateFile("C:\\test121233.cpp", GENERIC_READ|GENERIC_WRITE, 0, &tt, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
Бог сделал людей разными, а генерал Кольт уравнял шансы
|
26.09.2007, 15:10 | #3 |
Форумчанин
Регистрация: 10.09.2007
Сообщений: 105
|
Да, народ,
кто силен в английском, переведите инфу про последний параметр!!!!
Бог сделал людей разными, а генерал Кольт уравнял шансы
|
26.09.2007, 15:18 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Хендл на временный файл (с аттрибутом копии)
I'm learning to live...
|
26.09.2007, 17:21 | #5 |
Форумчанин
Регистрация: 10.09.2007
Сообщений: 105
|
это параметр, принимающий Хендл на временный файл, а временный файл, это файл имеющий атрибут копии. Я вас правильно понял?
если да, то смысл такого действия. просто в MS SDK писалось нечто насчет отложенной записи на диск и прочего.
Бог сделал людей разными, а генерал Кольт уравнял шансы
|
27.09.2007, 08:09 | #7 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я наверно некорректно выразился, технически перевел, вот цитата :
Файл-шаблон, атрибуты которого используются для открытия. В Windows 95/98 не используется и должен быть равен 0 Кроме того : hTemplateFile is not supported and the function fails if it is nonzero. - Этот параметр не поддерживается и функция вернет фальш если не поставить в него 0 (Null)
I'm learning to live...
|
28.09.2007, 10:00 | #8 |
Форумчанин
Регистрация: 10.09.2007
Сообщений: 105
|
Если честно, я не пользуюсь Visual, только продукцией фирмы Borland.
Это функция из прикладного интерфейса программирования Win32. Ее можно без труда использовать в обоих средах. А вообще для более простой работы можно использовать файловые потоки, определенные в "fstream.h", вот простейший пример: //--------------------------------------------------------------------- #include <iostream.h> #include <fstream.h> #include <windows.h> #pragma hdrstop //--------------------------------------------------------------------- char Hello[] = "int main(){cout<<\"Hello World!\"<<endl; return 0;}"; #pragma argsused int main(int argc, char* argv[]) { SetConsoleOutputCP(1251); char Filename[] = "C:\\code.cpp"; cout<<"Программа создает *.CPP файл"<<endl <<"И записывает в него код \"Hello World\""<<endl; ofstream Output(Filename); Output<<Hello; system("pause"); return 0; } //---------------------------------------------------------------------
Бог сделал людей разными, а генерал Кольт уравнял шансы
|
28.09.2007, 10:01 | #9 |
Форумчанин
Регистрация: 10.09.2007
Сообщений: 105
|
Stilet,
спасибо. блин, нужно учить буржуйский.
Бог сделал людей разными, а генерал Кольт уравнял шансы
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Можно ли внести изменения в файл с расширением .exe | Sanlev | Помощь студентам | 12 | 08.02.2010 15:49 |
по нажатию на кнопку вызвать другой фаил с расширением exe который находится в той же папке | 1234 | Общие вопросы Delphi | 3 | 05.08.2008 12:32 |
Как получить график из файла с расширением .crd | feldmaster | Помощь студентам | 1 | 22.04.2008 23:19 |
Как можно в файл (со своим расширением) записать любые файлы (например, звуковые)? | andrey4623 | Общие вопросы Delphi | 3 | 12.01.2008 09:59 |
Генерация имени записываемого файла. Паскаль | NikLik | Помощь студентам | 4 | 25.11.2007 21:25 |