Как открыть файл c builder

Обновлено: 03.07.2024

Необходимо реализовать открытие фала по ссылке, которая записывается в поле memo посредством диалога opendialog. Нижеприведенный код позволяет открыть каталог, но не файл

String FilePath;
if (OpenDialog1->Execute())
FilePath= OpenDialog1->FileName;
Memo2->Lines->Add(FilePath);
>
ShellExecute( Handle, L"open", (ExtractFileDir(Memo2->Text)).w_str(), 0, 0, SW_SHOWNORMAL);
>

Как реализовать открытие файла по ссылке из поля memo

Т.е. логики на то, чтобы понять, что ExtractFileDir = "извлечь директорию файла" мешает, вам не хватает? Т.е. логики на то, чтобы понять, что ExtractFileDir = "извлечь директорию файла" мешает, вам не хватает? Это понятно, что данная функция извлекает директорию файла, но может есть дополнительный параметр, позволяющий открыть файл из директории или функция, позволяющая это сделать ShellExecute и использую, проблема только в том, что путь к файлу не фиксированный и прописывается в поле memo, через opendialog

ShellExecute( Handle, L"open", (Memo2->Text).w_str(), 0, 0, SW_SHOWNORMAL);
При использовании функции в данном виде, файл не запускается

код при нажатии на кнопку

String FilePath;
if (OpenDialog1->Execute())
FilePath= OpenDialog1->FileName;
Memo2->Lines->Add(FilePath);
>
ShellExecute( Handle, L"open", (Memo2->Text).w_str(), 0, 0, SW_SHOWNORMAL);

При использовании функции в данном виде, файл не запускается Последний раз редактировалось xxbesoxx; 05.11.2018 в 16:10 .

Переделал код, получил желаемый результат

if (OpenDialog1->Execute())
FilePath= OpenDialog1->FileName;
Memo2->Lines->Add(FilePath);
>

ShellExecuteW( Handle, L"open", WideString(FilePath).c_bstr(), 0, 0, SW_SHOWDEFAULT);

Возник еще вопрос, открытие происходит из переменной FilePath, в последующем прописанный путь в FilePath будет заноситься в таблицу ADOTable, как осуществить в последующем процедуру открытия из базы, скажем посредством компонента DBMemo.

Здесь дается описание файлов, из которых состоит проект, и советы по работе с проектом.
Теперь пора познакомиться подробнее с файлами проекта и операциями, производимыми над ними. При работе в среде разработки Borland C++ Builder 6 довольно часто приходится открывать и сохранять файлы. Все изменения в проекте перед запуском программы необходимо сохранять в файлах проекта во избежание их потери в случае возникновения ошибок или зависания компьютера. При этом можно производить сохранение всего проекта целиком или сохранять отдельно необходимые файлы. Для сохранения всего проекта целиком вызовите из главного меню команду Save Project As (Сохранить проект как) или Save All (Сохранить все) или нажмите комбинацию клавиш <Shift>+<Ctrl>+<S>. На экране отобразится стандартное диалоговое окно сохранения файлов (рис. 11.1).

Диалоговое окно сохранения файлов

Рис. 11.1. Диалоговое окно сохранения файлов

В этом окне необходимо выбрать место расположения проекта в имеющихся каталогах или создать для этого отдельный каталог (папку). Последний вариант предпочтительнее, поскольку позволяет систематизировать все проекты и устраняет возможность наложения файлов с одинаковыми именами друг на друга. После чего следует последовательно произвести сохранение всех файлов проекта.

Среда разработки предлагает по умолчанию свои имена для сохраняемых файлов. Например, для сохранения файлов с текстами программ предлагается имя Unit1.cpp, Unit2.cpp и т. д. Для сохранения файлов проектов будут предлагаться имена Project1.bpr, Project2.bpr и т.д. Вы вправе менять эти имена на собственные. Это даже полезно делать, поскольку по окончании разработки программы ее исполняемый файл с расширением ехе будет иметь имя Prcject1.exe. Согласитесь, что это имя ничего не говорит о программе, и лучше давать файлам имена, которые дают представление о том, какая программа находится в файле. Например, Edit, Timer, Bloknot и т. п. При переименовании файлов рекомендуется использовать названия, состоящие из букв латинского алфавита. Рассмотрим сохранение проекта на примере простой программы, описанной ранее. Нажмите комбинацию клавиш <Shift>+<Ctrl>+<S> на клавиатуре или соответствующий данной команде значок на панели быстрых кнопок. В открывшемся окне замените имя сохраняемого файла Unit1.cpp на uprog1.cpp и нажмите кнопку Сохранить. Далее замените предлагаемое для сохранения имя файла проекта Project1.bpr на Prog 1.bpr и вновь нажмите кнопку Сохранить. Теперь запустите программу на выполнение с помощью команды Run из главного меню. После того как на экране появится окно программы, сверните его. Вы увидите, что в свернутом виде программа имеет название Prog1, а не Project1, как раньше. Таким образом можно давать программе осмысленные имена. Завершите работу приложения (программы). Теперь, если вы просмотрите содержимое каталога, в котором сохраняли файлы проекта, с помощью, например, Проводника (Explorer) из среды Windows, то обнаружите в этом каталоге файлы, в том числе и с именами, которые вы задали.
Ценными файлами в этой группе являются файлы с текстами программ с расширением срр, заголовочные файлы с расширениями h и hpp, файл установок формы проекта с расширением dfm, файл ресурсов с расширением res и файл проекта с расширением bpr, bpg или bpk . Файлы с расширениями

h, obj, tds и ехе создаются в момент компиляции проекта и могут быть восстановлены после удаления в любое время.
Наибольшим объемом обладает файл с расширением tds , предназначенный для отладки программы. Со временем у вас будет расти количество проектов, поэтому для их хранения может понадобиться значительный объем места на жестком диске. Для рационального использования места на диске не рекомендуется хранить вспомогательные файлы проекта, а обходиться хранением только кодов программ, файлов проектов, исполняемого файла и файлов рисунков, иконок, фонов, курсоров, звуковых файлов и пр.
Для облегчения данной задачи я предлагаю вам использовать командный файл очистки проекта от всех вспомогательных файлов. Листинг (текст) данного командного файла приведен ниже.

Листинг 11.1. Командный файл очистки проекта

Как видите, он состоит всего из трех строчек с командами удаления вспомогательных файлов с некоторыми расширениями. Создайте с помощью любого текстового редактора файл с именем bcbclr.bat и занесите в него данные строки команд. После чего поместите этот файл в каталог с файлами проекта, закройте среду разработки Borland C++ Builder 6 и запустите файл bcbclr.bat на выполнение. В результате каталог будет очищен от лишних файлов и освободит тем самым немало места на жестком диске.

Теперь рассмотрим, как можно открыть сохраненный проект для продолжения работы с ним или для его корректировки. Запустите среду разработки Borland C++ Builder 6. Вызовите из главного меню команду Open Project (Открыть проект) или нажмите комбинацию клавиш <Ctrl>+<Fll> на клавиатуре. На экране отобразится стандартное диалоговое окно открытия файлов (рис. 11.2).

Работа с текстовыми файлами в Borland C++ Builder

Работа с файлами с использованием функций компонент

Многим визуальные компоненты и некоторые классы имеют доступ к функциям:

Эти функции особенно удобны для работы с текстовыми фыйлами.

Примеры загрузки и сохранения файлов:

При использовании функции SaveToFile если файл не существует, то он будет создан. Во всех приведенных выше примерах создаются текстовые файлы. Компонент TRichEdit создает текстовый файл в формате .rtf, поэтому логичнее записать:

Работа с текстовыми файлами с использованием методов перечисленных классов и компонент аналогична. Все они имеют счетчик строк:

Все компоненты позволяют удалять, вставлять и добавлять строки (пример удаления второй строки вставки на ее место новой строки и добовления в конец списка новой строки):

Содержимое строк можно получит по номеру строки n:

Возможно присвоить некоторой строке текст для дальнейшей манипуляции содержимым текста как единой строкой и далее перенести исправленный текст опять в компоненты:

Кроме того компоненты TComboBox и TListBox позволяют (лучше в обработчике своих событий OnChange) получить доступ к выбранным строкам:

Компоненты TComboBox и TListBox кроме того позволяют определить номер строки по тексту в строке:

Компоненты TComboBox и TListBox, класс TStringList кроме того позволяют выполнить сортировку загруженных строк:

Перечисленные методы практически полностью перекрывают все потребности для работы с текстовыми файлами. Как правило в большинстве случаев достаточными являются TMemo TrichEdit и класс TStringList.

Однако многими возможностями при работе с текстом обладает класс TFileStream.

Работа с файлами с использованием класса TFileStream

Следующий пример работы с текстовым файлом с использованием класса TFileStream может показаться некоторым программным извращением (класс более подходит для работы с бинарными файлами), но посколько при работе с текстовыми ресурсами наиболее удобными являются потоки, то рассмотрим и эту возможность.


Поместить на форму следующие компоненты, расположенные на закладках Win3.1 и Standard:

DriveComboBox с помощью него создаётся выпадающий список в котором отображаются названия всех носителей присутствующих в системе. С помощью него мы будем осуществлять переход от одного диска к другому;

DirectoryListBox с помощью него будет отображаться дерево каталогов выбранного диска;

FileListBox с помощью него отображается список файлов выбранной директории;

Edit1 (для отображения пути к выбранному файлу) и Edit2 (для отображения результата);

Lable1, Lable2, Lable3, Lable4, Lable6, Lable7 (для отображения комментариев);

Button1, Button2, Button3, Button4;

Настроить свойства используемых компонентов

Выделить компонент DriveComboBox и открыть закладку Properties инспектора объектов. Открыть список в свойстве DirList и выбрать в нём компонент DirectoryList1, теперь в нём будут отображаться каталоги с выбранного диска;

Выделить компонент DirectoryListBox щёлкнув по нему левой кнопкой мыши и в свойстве FileList выбрать компонент FileListBox1 из выпадающего списка;

Изменить свойства Caption в элементе Lable1соответственно на «Выбрать диск»;

Изменить свойства Caption в элементе Lable2 соответственно на «Выбрать директорий»;

Изменить свойства Caption в элементе Lable3 соответственно на «Выбрать файл»;

Изменить свойства Caption в элементе Lable4 соответственно на «Нажать на кнопку «Установить»;

Изменить свойства Caption в элементе Lable5 соответственно на «Полученный путь к файлу»;

Изменить свойства Caption в элементе Lable6 соответственно на «Открыть файл»;

Изменить свойства Caption в элементе Lable7 соответственно на «Результат»;

Изменить свойства Caption в элементах Button1, Button2, Button3 и Button4 на «Установить», «Открыть», «Результат» и «Выход» соответственно;

Убрать в свойстве Text элементов Edit1 и Edit2 содержимое.

Приступить к обработке событий.

Начать с нажатия кнопки «Установить» на форме Form1. Прежде всего активизировать кнопку, с которой будем работать. Затем перейти в инспектор объектов и активизировать страницу событий (Events). На ней можно обнаружить список всех возможных событий для активного компонента (в данном случае кнопки). Нас интересует событие OnClick, возникающее при нажатии кнопки. Чтобы определить обработчик этого события, необходимо сделать двойной щелчок мыши в поле значения. Появится окно редактора кода с заготовкой для нашего обработчика, в котором необходимо написать код
Edit1->Text=FileListBox1->FileName;

Написать следующий код для обработки события при нажатии на кнопку «Открыть»:

if((F=fopen(Edit1->Text.c_str(),"rt"))==NULL) // проверка открытия файла

ShowMessage ("Файл не удаётся открыть");

else ShowMessage ("Файл открыт");

// Чтение информации из файла

// Оператор чтения целой переменной из файла

// и помещение ёё в соответствующую переменную массива

fscanf(F,"%d",&Mint[i][j]); // &Mint[i][j] - Указатель на массив

// После того как закончили чтение из файла его необходимо закрыть

Написать следующий код для обработки события при нажатии на кнопку «Результат»:

int A; // переменная для результата

Написать следующий код для обработки события при нажатии на кнопку «Выход»: Close();

Поместить в начало программы описания файла, массива и переменных для цикла;

Создать текстовый файл с данными, разделёнными между собой пробелами

Выполнить команду Run/Ran;

Выбрать диск, выбрать директорий, выбрать файл, нажать на кнопку «Установить», нажать на кнопку «Открыть», нажать на кнопку «Результат», посмотреть результат и нажать на кнопку «Выход».

FILE*F; // описание файла

int Mint[3][3]; // описание массива

int i,j; // описание переменных для циклов

__fastcall TForm1::TForm1(TComponent* Owner)

void __fastcall TForm1::Button4Click(TObject *Sender)

void __fastcall TForm1::Button1Click(TObject *Sender)

// Помещение выбранного пути в Edit1 для использования в операторе

void __fastcall TForm1::Button2Click(TObject *Sender)

if((F=fopen(Edit1->Text.c_str(),"rt"))==NULL) // проверка открытия файла

ShowMessage ("Файл не удаётся открыть");

else ShowMessage ("Файл открыт");

// Чтение информации из файла

// Оператор чтения целой переменной из файла и помещение ёё в соответствующую переменную массива

fscanf(F,"%d",&Mint[i][j]); // &Mint[i][j] - Указатель на массив

2.Как мне создать файловую ассоциацию? Ассоциировать мою программу с определенными файлами и поменять у них иконки. И как убрать эту асоциацию(откатиться назад) без геморройных последствий ввиде невнятных значков файлов и т.п.





Блин у меня есть огромная кгига Архангельского Программирование в Builder 6(1150 страниц), но там такого не нашел.
P.S Если книга не тяжелая(всмысле объема), то я её скачаю.

Добавлено 23.05.08, 17:54
Мдяяяяя 992 стр. если моя книжка весит 126 мегов, а эта наверное метров 110 как минимум. Для меня скачать это нереально в ближайшее время(верне реально,но долго и модем в телефоне жалко).

AntiAspirant если тебе нетрудно, то ты мог бы рассказать тут о чем хотябы в этих статьях написано(а в идеале скинуть их в .doc файл)



А идеале откопал у себя диск с примерами, прилагаю исходники.Если каких то файлов хватать не будет, пиши, я поищу их, потому что в одной папке на диске находится по несколько примеров.

Это точно, все правильно, книжка хорошая,
Программно зарегестрировать твой тип файла не знаю как, но если укажешь в свойствах твоего файла с помощью какого приложения его открывать то ты его вручную ассоциируешь с твоей прогой. Теперь тыкая по файлу будет открываться твоя прога и параметры в нее будет передаваться имя твоего файла, его нужно перехватывать.

Так как сам этого никогда не делал, конкретным кодом помочь не могу, но есть книга по этой теме электронная, сам не читал но очень рекомендовали

Добавлено 23.05.08, 18:13
Создание эффективных WIN32-приложений с учётом специфики 64-разрядной версии Windows - 4,5 мб



Так как сам этого никогда не делал, конкретным кодом помочь не могу, но есть книга по этой теме электронная, сам не читал но очень рекомендовали

Добавлено 23.05.08, 18:15

Вот только не знаю выложена ли в инете, у меня она в печатном виде. Ну я думаю что можно найти(если поискать), если найду то попробую скачать(не боги горшки обжигают ). Создание эффективных WIN32-приложений с учётом специфики 64-разрядной версии Windows - 4,5 мб





Вот назрел ещё один вопросик:
Вот этот код из примера AntiAspirant-а регистрирует собственное расширение файла и у этого файла ставится иконка программы. Так вот как поменять иконку не меняя иконки у программы. т.е. брать иконки из других источников например ImaheList или ресурса?

Ди и чегото непонятно мне что такое ParamStr(0) или ParamStr(1). Может кто-нибуть подробно разъяснить этот код(если несложно, т.к. я никого не принуждаю )?

Читайте также: