Изменить расширение файла delphi
← →
Morsik ( 2010-07-03 18:42 ) [0]
Сделал вкладку в MainMenu Файл, а там открыть, сохранить и выход. А когда открываешь или сохраняешь нет формата. Как его сделать? Какая команда нужна?
← →Демо © ( 2010-07-03 19:23 ) [1]
Используй OpenDialog и SaveDialog
← →Anatoly Podgoretsky © ( 2010-07-03 19:48 ) [2]
Чего, чего нет?
← →QAZ ( 2010-07-03 22:58 ) [3]
> Чего, чего нет?
фильтра расширений видимо :)
Германн © ( 2010-07-04 01:34 ) [4]
> Morsik (03.07.10 18:42)
>
> Сделал вкладку в MainMenu Файл, а там открыть, сохранить
> и выход. А когда открываешь или сохраняешь нет формата.
> Как его сделать? Какая команда нужна?
Команды такой нет. Есть только мозг и знания.
P.S. И не надо надеяться на примеры "надыбанные" из и-нета. Даже если они хорошие, то всё равно для их реализации в своей программе нужны базовые знания.
← →Германн © ( 2010-07-04 03:07 ) [5]
Ну и мозг тоже.
Это в добавок к [4].
Morsik ( 2010-07-04 09:13 ) [6]
Я имею ввиду, что открываю Файл нажимаю сохранить и появляется окно стандартное. Внизу есть поле названия и формата. Название вписать можно, а в строке формата, нет никакого формата и сохраняется в неопределённом файле. Как это сделать.
← →И. Павел © ( 2010-07-04 10:57 ) [7]
У компонентов SaveDialog/OpenDialog есть свойство Filter. Выбираете его в инспекторе объектов, жмете на кнопку возле него (с тремя точками) и вписываете название расширения и само расширение.
← →И. Павел © ( 2010-07-04 10:59 ) [8]
А в свойстве DefaultExt нужно прописать расширение, которое будет добавляться к имени файла, если в нем не задано никакого расширения.
← →Плохиш © ( 2010-07-04 15:03 ) [9]
> Morsik (04.07.10 09:13) [6]
Для программистов создали встроенную справку, так что найми программиста.
Демо © ( 2010-07-04 15:18 ) [10]
> Плохиш © (04.07.10 15:03) [9]
> > Morsik (04.07.10 09:13) [6]Для программистов создали
> встроенную справку, так что найми программиста.
С такими советами лучше работать физически.
← →Плохиш © ( 2010-07-04 22:02 ) [11]
> Демо © (04.07.10 15:18) [10]
Работай.
Германн © ( 2010-07-05 01:17 ) [12]
> С такими советами лучше работать физически.
Звучит двусмысленно.
В каком виде сохраняются созданные программы? Этот вопрос возникает у любого начинающего программиста. Эта тема заслуживает отдельного внимания. Как известно, в Windows любая программа представляет собой exe-файл, который является исполняемым, т.е. может быть запущен как отдельное приложение. Понятно, что разрабатывая программу, в итоге нужно получить именно exe-файл, чтобы его можно было запустить на компьютере, где не установлена среда, в которой эта программа была создана. В языках программирования для DOS, в частности Turbo Pascal, всё довольно просто - весь программный код сохраняется в один-единственный файл, а в итоге получается exe-файл. Довольно просто и удобно. При переходе в Windows всё становится гораздо сложнее. Оконное приложение Windows не может быть сохранено в одном файле. Если в среде DOS программы можно называть именно программами, то в объектно-ориентированном программировании они называются проектами. Почему проектами? Всё достаточно просто - программа представляет собой совокупность некоторого числа файлов различного типа, определённым образом связанных между собой. Очевидно, что всю эту группу логично назвать проектом.
В этой статье мы познакомимся с самыми основными типами файлов, которые включены в любой проект, созданный на Delphi. На самом деле типов файлов гораздо больше, но эти - базовые.
*.dcu, *.obj - объектные файлы
Эти файлы представляют собой уже скомпилированные модули. При очередной компиляции Delphi создаёт для каждого pas-файла соответствующий dcu-файл. Это существенно ускоряет компиляцию в дальнейшем, т.к. имеющиеся файлы просто включаются в конечный exe-файл, а не обрабатываются заново. OBJ-файлы - это тоже скомпилированные модули, но применяющиеся в С++. При работе в Delphi эти файлы не используются, но при необходимости их можно сформировать.
*.res - файл ресурсов
Это дополнительный файл. В нём находятся данные различных типов - это могут быть тексты, изображения, звуки и т.д. К примеру, для проекта этот файл создаётся автоматически и в нём сохраняется иконка (значок) приложения, а также некоторая информация о проекте.
*.dfm - файл описания формы
В этом файле содержится описание всех объектов, которые расположены на форме, а также информация обо всех их свойствах. При этом в этот файл сохраняются только те свойства объектов, которые были принудительно изменены. Это объясняется тем, что все свойства любого объекта имеют значения по умолчанию (т.е. заранее установленные). Соответственно нет смысла хранить значения абсолютно всех свойств - достаточно запомнить только те, которые имеют значение, отлиное от начального. Все остальные свойства принимают своё исходное значение и таким образом вся форма восстанавливается.
Свойства проекта
Для проекта можно установить множество разнообразных параметров. Все они находятся в окне Project -> Options. В частности, на вкладке Application можно указать заголовок проекта, который будет отображаться на кнопке программы на панели задач. Совет: всегда прописывайте заголовок своей программе, не оставляйте стандартного "Project1" - это резко бросается в глаза. На этой же вкладке можно выбрать иконку (значок) для приложения - файл *.ico размером 32х32 пикселя. В блоке Output settings можно указать расширение выходного файла. Заполнять это поле не обязательно - по умолчанию файлу присваивается расширение .exe. Однако в некоторых случаях эта настройка бывает полезной. Например, экранные программы-заставки представляют собой те же исполняемые exe-файлы, только имеют расширение .scr. Неудобно каждый раз после внесения изменений в программу, чтобы протестировать заставку, переименовывать файл. А прописав в указанное поле "scr" проблема мигом решится.
*.~* - временные файлы
Файлы, расширение которых начинается со знака тильды ("~"), являются временными. Это означает, что они не несут какой-либо важной информации и используются в других целях (например, для ускорения компиляции). Эти файлы можно смело удалять, если они мешают. Чем больше проект, тем обычно больше появляется временных файлов.
Комментарии читателей к данной статье
Вот задание: создайте приложение, которое должно уметь открывать текстовые файлы
и отображать их в многострочном редакторе. Сразу после открытия файл
должен сохраниться в том же каталоге и с тем же именем, но с расширением
bac. Как можно изменить формат?
Как определить имя открываемого в системе файла, как антивирус
Как опредилить имя открываемого в системе фала как антивирусs&
Формат открываемого документа?!
Привет) Есть вопрос, насчет значений аргумента Format и форматов открываемых документов. Сейчас.
Имя открываемого файла в OpenDialog
Как узнать само имя файла открываемого в OpenDialog, а не путь к нему и имя?
Отключить в Excel предупреждение «Действительный формат открываемого файла отличается от указываемого…»
Добрый день. Подскажите реально ли избавиться от этого предупреждения? Оно вылазиет потому что.
Может быть, таки, bak? Обычно, такое расширение дают атосоздаваемым резервным копиям. Хотя разницы нет никакой.
А Вас никто не просит менять формат. Вас просят поменять расширение и сохранить файл со старым именем и новым расширением. Для это есть функция ChangeFileExt()
Как получить имя открываемого файла?
Привет. Не могу сообразить как получить имя открываемого (открываемых) файлов, если делаем это.
Как задать путь для открываемого файла в консоли
Задача следующая: Пользователь должен запустить консольное приложение, после чего он получит.
Адрес открываемого файла
Как получить путь открываемого файла через OpenDialog в VCL Form Application программе? AnsiString.
Количество элементов открываемого файла
Как подсчитать количество элементов в каждом слове int main() < setlocale(LC_ALL, "Russian"); .
Имя переменной открываемого файла
Приветствую всех. Для примера что нужно приведу код в ворде: Допустим имя_открываемого_файла -.
Обратимся к опциям проекта в Delphi: меню Project -> Options. -> вкладка Version Info (см. Рис. 1). На этй вкладке указывается нужная нам информация. Чтобы получить доступ к ней, поставим крыжик на Include version information in project, что по-русски означает "Включить информацию о версии в проект".
Рис. 1
Теперь пройдемся по содержимому вкладки:
Mdule version namber - здесь можно задать номер версии файла. Крыжик на Auto-increment build number позволит автоматически увеличивать номер версии при каждой сборке проекта.
Примечание: Номер версии будет автоматически увеличиваться только в том случае, если произведена сборка проекта (меню Project -> Build Project). Просто при компиляции номер версии не изменяетя.
Mdule attributes - эти флаги можно включить в информацию о версии только с чисто информационной целью. Рассмотрим их значения:
Аттрибут | Эффект |
---|---|
Debug build | Включается чтобы показать что проект был скомпилирован в режиме отладки. |
Pre-release | Включается чтобы показать что версия не для коммерческого использования. |
DLL | Включается чтобы показать что проект использует динамически подключемые библиотеки (DLL). |
Special build | Включается чтобы показать что данная версия - вариант стандартного релиза. |
Private build | Включается чтобы показать что данная версия собиралась без использования стандартных процедур релиза. |
Language - показывает какая кодовая страница потребуется системе для выполнения данной программы. Выбери планируемый язык программы из выпадающего спика. Шестнадцатиричное значение выбранной локализации появится над выпадающим списком.
Ну, и, наконец, окно со списком ключей. Количество ключей, их состав и значения строго не регламентируются. Ключи можно удалять, добавлять новые, изменять их наименование. По умолчанию предлагается список из десяти ключей, зачения которых понимаются и однозначно интерпретирутся Windows.
Как видно из представленной таблицы ключи по умолчанию содержат всю интересующую нас информацию о программе (ну, а если этого недостаточно, то добавьте свои собственные ключи). Заполните их значения и откомпилируйте программу. Теперь в Windows можно щелкнуть правой клавишей мыши на файле программы и в свойствах файла появится вкладка с информацией о версии программы как показано ниже (см. Рис. 2):
Рис. 2
Примечание: Практически вся эта информация прицепляется при компиляции в текстовом виде в качестве довеска в конец файла после кода программы. Она входит в контрольную сумму файла и поэтому считается что подделать ее нельзя. Начинается она с текста StringFileInfo. Дальше идет указатель на рабочую кодовую страницу программы в шестнадцатиричном коде. Потом идут: имя первого ключа и его значение, имя второго ключа и его значение и т.д. по всему списку ключей. Подробную ее структуру можно посмотреть в хелпе по Delphi6. В Delphi7 я информации по структуре уже не нашел :(.
Теперь у нас имеется вся нужная информация. Осталось дело за малым. Считать ее и вывести в удобном для нас виде. Подробнее см. Читать информацию о версии файла.
Объект INIFILES - работа с INI файлами
Почему иногда лучше использовать INI-файлы, а не реестр?
1. INI-файлы можно просмотреть и отредактировать в обычном блокноте.
2. Если INI-файл хранить в папке с программой, то при переносе папки на другой компьютер настройки сохраняются. (Я еще не написал ни одной программы, которая бы не поместилась на одну дискету :)
3. Новичку в реестре можно запросто запутаться или (боже упаси), чего-нибудь не то изменить.
Поэтому для хранения параметров настройки программы удобно использовать стандартные INI файлы Windows. Работа с INI файлами ведется при помощи объекта TIniFiles модуля IniFiles. Краткое описание методов объекта TIniFiles дано ниже.
Constructor Create('d:\test.INI');
Создать экземпляр объекта и связать его с файлом. Если такого файла нет, то он создается, но только тогда, когда произведете в него запись информации.
WriteBool(const Section, Ident: string; Value: Boolean);
Присвоить элементу с именем Ident раздела Section значение типа boolean
WriteInteger(const Section, Ident: string; Value: Longint);
Присвоить элементу с именем Ident раздела Section значение типа Longint
WriteString(const Section, Ident, Value: string);
Присвоить элементу с именем Ident раздела Section значение типа String
ReadSection (const Section: string; Strings: TStrings);
Прочитать имена всех корректно описанных переменных раздела Section (некорректно описанные опускаются)
ReadSectionValues(const Section: string; Strings: TStrings);
Прочитать имена и значения всех корректно описанных переменных раздела Section. Формат :
имя_переменной = значение
EraseSection(const Section: string);
Удалить раздел Section со всем содержимым
ReadBool(const Section, Ident: string; Default: Boolean): Boolean;
Прочитать значение переменной типа Boolean раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
ReadInteger(const Section, Ident: string; Default: Longint): Longint;
Прочитать значение переменной типа Longint раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
ReadString(const Section, Ident, Default: string): string;
Прочитать значение переменной типа String раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
Free;
Закрыть и освободить ресурс. Необходимо вызвать при завершении работы с INI файлом
Property Values[const Name: string]: string;
Доступ к существующему параметру по имени Name
Статья добавлена: 1 июня 2005
Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.
*.pas - модуль (самостоятельный, либо модуль формы)
Именно этот файл больше всего похож на файл программ Turbo Pascal. В этом файле находится код программы. Модули могут быть отдельными от конкретных проектов - в этом случае их можно подключить к любому проекту и использовать. Как правило, в отдельных модулях находятся вспомогательные функции, либо какие-либо объекты. Помимо этого модуль есть у каждой формы. В результате *.pas-файл неразрывно связан с файлом *.dfm, а форма соответственно описывается этими двумя файлами - один содержит её состояние и объекты, а второй - код программы, относящийся к этой форме. Следует отметить, что модули значительно облегчают процесс написания программы и ориентацию в больших модулях - отдельные элементы большого модуля можно вынести в несколько модулей и просто подключить их к проекту.
Заключение
В этой статье рассмотрены все базовые навыки для управления проектами. Теперь можно приступить непосредственно к изучению языка и исследованию объектов.
Автор: Ерёмин А.А.
Статья добавлена: 14 апреля 2007
Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.
Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:
Ссылка для форумов (BBCode):
Поделитесь ссылкой в социальных сетях:
Комментарии читателей к данной статье
Пока нет комментариев к данной статье. Оставьте свой и он будет первым.
Добавление элементов в контекстное меню "Создать"
1. Создать новый документ, поместить его в папку Windows/ShellNew
2. В редакторе реестра найти расширение этого файла, добавить новый подключ, добавить туда строку: FileName в качестве значения которой указать имя созданного файла.
В проводнике контекстное меню "Открыть в новом окне"
1. Найти ключ HKEY_CLASSES_ROOT\Directory\Shell
2. Создать подключ: opennew в котором изменить значение (По умолчанию) на: "Открыть в новом окне"
3. Под этим ключом создать еще подключ command (По умолчанию) = explorer %1
Использование средней кнопки мыши Logitech в качестве двойного щелчка
Подключ HKEY_LOCAL_MACHINE\SoftWare\Logitech и там найти параметр DoubleClick заменить 000 на 001
Новые звуковые события
Например создает звуки на запуск и закрытие WinWord
HKEY_CURRENT_USER\AppEvents\Shemes\Apps добавить подключ WinWord и к нему подключи Open и Close.
Теперь в настройках звуков видны новые события
Путь в реестре для деинсталяции программ:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
Работа с реестром в Delphi
В Delphi есть объект TRegistry при помощи которого очень просто работать с реестром.
Реестр предназначен для хранения системных переменных и позволяет зарегистрировать файлы программы, что обеспечивает их показ в проводнике с соответствующей иконкой, вызов программы при щелчке на этом файле, добавление ряда команд в меню, вызываемое при нажатии правой кнопки мыши над файлом. Кроме того, в реестр можно внести некую свою информацию (переменные, константы, данные о инсталлированной программы . ). Программу можно добавить в список деинсталляции, что позволит удалить ее из менеджера "Установка/Удаление программ" панели управления.
Для работы с реестром применяется ряд функций API :
RegCreateKey (Key: HKey; SubKey: PChar; var Result: HKey): Longint;
Создать подраздел в реестре. Key указывает на "корневой" раздел реестра, в SubKey - имя раздела - строится по принципу пути к файлу в DOS (пример subkey1\subkey2\ . ). Если такой раздел уже существует, то он открывается (в любом случае при успешном вызове Result содержит Handle на раздел). Об успешности вызова судят по возвращаемому значению, если ERROR_SUCCESS, то успешно, если иное - ошибка.
RegOpenKey(Key: HKey; SubKey: PChar; var Result: HKey): Longint;
Открыть подраздел Key\SubKey и возвращает Handle на него в переменной Result. Если раздела с таким именем нет, то он не создается. Возврат - код ошибки или ERROR_SUCCESS, если успешно.
RegCloseKey(Key: HKey): Longint;
Закрывает раздел, на который ссылается Key. Возврат - код ошибки или ERROR_SUCCESS, если успешно.
RegDeleteKey(Key: HKey; SubKey: PChar): Longint;
Удалить подраздел Key\SubKey. Возврат - код ошибки или ERROR_SUCCESS, если нет ошибок.
RegEnumKey(Key: HKey; index: Longint; Buffer: PChar;cb: Longint): Longint;
Получить имена всех подразделов раздела Key, где Key - Handle на открытый или созданный раздел (см. RegCreateKey и RegOpenKey), Buffer - указатель на буфер, cb - размер буфера, index - индекс, должен быть равен 0 при первом вызове RegEnumKey. Типичное использование - в цикле While, где index увеличивается до тех пор, пока очередной вызов RegEnumKey не завершится ошибкой (см. пример).
RegQueryValue(Key: HKey; SubKey: PChar; Value: PChar; var cb: Longint): Longint;
Возвращает текстовую строку, связанную с ключом Key\SubKey.Value - буфер для строки; cb- размер, на входе - размер буфера, на выходе - длина возвращаемой строки. Возврат - код ошибки.
RegSetValue(Key: HKey; SubKey: PChar; ValType: Longint; Value: PChar; cb: Longint): Longint;
Задать новое значение ключу Key\SubKey, ValType - тип задаваемой переменной, Value - буфер для переменной, cb - размер буфера. В Windows 3.1 допустимо только Value=REG_SZ. Возврат - код ошибки или ERROR_SUCCESS, если нет ошибок.
Работа с проектом
Ну а теперь пришло время рассказать о базовых операциях с проектом, так как ранее речь об этом не шла. Рассмотрим всё по порядку.
Создание нового проекта
Для создания "чистого листа" следует выбрать в меню File -> New -> Application. В разных версиях Delphi содержимое подменю New может немного отличаться, но всё основное присутствует всегда. После этого создаётся новый проект, такой, какой появляется при запуске Delphi.
Открытие существующего проекта (или файла)
Для этого существует команда File -> Open. Выбрав файл *.dpr, откроется проект, а выбрав какой-либо другой файл (например, *.pas или *.dfm) откроется что-либо другое (например, отдельная форма).
Сохранение
С сохранением есть несколько тонкостей. Исходя из того, что проект представляет собой совокупность нескольких файлов, можно сделать вывод, что сохранять нужно все эти файлы, а не какой-то в отдельности. Выбрав File -> Save, Вы сохраните только текущую форму, но не более того, а проект останется "висеть в воздухе". File -> Save As. - стандартный пункт, который делает то же самое, что и Save, только позволяет пересохранить файл (форму) под другим именем. Команда Save Project As. сохраняет файл проекта (*.dpr). Таким образом, чтобы сохранить проект полностью, нужно сохранить каждую из форм и сам проект. Делать это по отдельности достаточно неудобно, поэтому существует команда, облегчающая этот процесс: File -> Save All. При вызове этой команды сначала появится диалог для сохранения формы (если форм несколько, то и диалогов будет несколько), а затем диалог для сохранения проекта. После того, как все диалоги отработали, можно с уверенностью сказать, что проект сохранён полностью.
Железное правило: каждый проект должен быть сохранён в отдельном каталоге!
Если в один каталог сохранить несколько проектов, то все файлы перемешаются и можно отправлять всё в корзину. Этого нельзя делать ни в коем случае!
*.dof, *.cfg - файлы конфигурации проекта
В этих файлах хранятся опции текущего проекта (которые настраиваются в окне Project - Options). При отсутствии этих файлов будут использоваться стандартные параметры.
*.dpr - файл проекта
Это главный файл всего проекта. Если этот файл отсутствует, запустить программу будет невозможно. В файле хранятся все основные параметры приложения, а также информация об окнах, которые в приложение включены. Файл представляет собой свободно читаемый код. Посмотреть содержимое этого файла можно командой меню Project -> View Source. В более новых версиях Delphi файл проекта имеет другое расширение - .bdsproj (в Borland Developer Studio 2006), .dproj (в Delphi 2007 и далее). Обратная совместимость поддерживается.
Статьи, похожие по тематике
Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:
Ссылка для форумов (BBCode):
Поделитесь ссылкой в социальных сетях:
Запуск и остановка программы
Теперь, когда проект сохранён, программу можно и запустить и посмотреть, что же получилось. Ещё одно правило, которое желательно соблюдать: перед запуском программы проект нужно сохранить. Мгновенный вопрос: зачем? Конечно, делать это или нет - решать Вам, но бывают случаи, когда программа зависает (по вине самого программиста например), а с ней зависает и оболочка Delphi. В этом случае ничего не остаётся делать, как "убивать" Delphi через Диспетчер задач Windows. Понятно, что изменения, которые были внесены в проект, теряются. Однако не всё так плохо. Случаи зависания Delphi IDE достаточно редки. Как правило, если программа зависает, Delphi позволяет её просто уничтожить из памяти и продолжить работу. Процесс сохранения проекта перед запуском можно поручить оболочке: меню Tools -> Environment Options. , вкладка Preferences, блок Autosave options - опция Editor files.
Запомните следующие основные горячие клавиши:
Ctrl+F9 - компиляция программы. Что такое компиляция? Говоря простым языком - создание выходного (exe) файла программы. Следует отметить, что имя выходного файла совпадает с именем проекта, т.е. именем *.dpr-файла и не может быть изменено. Выходной файл создаётся в том же каталоге, где расположение *.dpr-файл. Однако компиляция просто "собирает" всю программу, но не запускает её.
F9 - запуск. В отличие от компиляции, это уже полноценный запуск программы из оболочки Delphi, однако не совсем такой, каким является запуск приложения из Windows. Запуск происходит под отладчиком. Но об этом позже.
Ctrl+F2 - остановка выполнения программы. Это именно то, о чём сказано чуть выше. Если нужно экстренно завершить работу программы, нужно активировать какое=-либо из окон оболочки Delphi и нажать это сочетание клавиш. Программа будет остановлена и можно будет безболезненно продолжить работу.
Все эти команды доступны и напрямую из меню: Run -> Run, Project -> Compile, Run -> Program Reset.
Все основные команды управления проектом вынесены также в виде кнопок на панели инструментов:
Читайте также: