Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2018, 12:50   #1
SERGIOBrest
Пользователь
 
Регистрация: 26.05.2017
Сообщений: 19
По умолчанию Открыть файл из программы

Необходимо реализовать открытие фала по ссылке, которая записывается в поле 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
SERGIOBrest вне форума Ответить с цитированием
Старый 03.11.2018, 12:53   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Т.е. логики на то, чтобы понять, что ExtractFileDir = "извлечь директорию файла" мешает, вам не хватает?
p51x на форуме Ответить с цитированием
Старый 05.11.2018, 08:07   #3
SERGIOBrest
Пользователь
 
Регистрация: 26.05.2017
Сообщений: 19
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Т.е. логики на то, чтобы понять, что ExtractFileDir = "извлечь директорию файла" мешает, вам не хватает?
Это понятно, что данная функция извлекает директорию файла, но может есть дополнительный параметр, позволяющий открыть файл из директории или функция, позволяющая это сделать
SERGIOBrest вне форума Ответить с цитированием
Старый 05.11.2018, 08:35   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Есть. ShellExecute с параметром open.
p51x на форуме Ответить с цитированием
Старый 05.11.2018, 10:44   #5
SERGIOBrest
Пользователь
 
Регистрация: 26.05.2017
Сообщений: 19
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Есть. ShellExecute с параметром open.
ShellExecute и использую, проблема только в том, что путь к файлу не фиксированный и прописывается в поле memo, через opendialog
SERGIOBrest вне форума Ответить с цитированием
Старый 05.11.2018, 10:45   #6
SERGIOBrest
Пользователь
 
Регистрация: 26.05.2017
Сообщений: 19
По умолчанию

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);
SERGIOBrest вне форума Ответить с цитированием
Старый 05.11.2018, 15:06   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от SERGIOBrest Посмотреть сообщение
При использовании функции в данном виде, файл не запускается
Если так ?
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	String FilePath;
	if (OpenDialog1->Execute())
	{
		FilePath= OpenDialog1->FileName;
		Memo1->Lines->Add(FilePath);
	}
	ShellExecute( Handle, L"open", (FilePath).w_str(), 0, 0, SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------

Последний раз редактировалось xxbesoxx; 05.11.2018 в 16:10.
xxbesoxx вне форума Ответить с цитированием
Старый 05.11.2018, 19:26   #8
SERGIOBrest
Пользователь
 
Регистрация: 26.05.2017
Сообщений: 19
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Если так ?
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	String FilePath;
	if (OpenDialog1->Execute())
	{
		FilePath= OpenDialog1->FileName;
		Memo1->Lines->Add(FilePath);
	}
	ShellExecute( Handle, L"open", (FilePath).w_str(), 0, 0, SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
ошибка

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

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.
SERGIOBrest вне форума Ответить с цитированием
Старый 06.11.2018, 15:30   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от SERGIOBrest Посмотреть сообщение
ошибка
Ошибка нету на C++ XE3

Цитата:
Сообщение от SERGIOBrest Посмотреть сообщение
как осуществить в последующем процедуру открытия из базы
вот так
Код:
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
   String OpenMyFile = ADOTable1->FieldByName("Put_file")->AsString; 
   ShellExecute( Handle, L"open", (OpenMyFile).w_str(), 0, 0, SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
Цитата:
Сообщение от SERGIOBrest Посмотреть сообщение
скажем посредством компонента DBMemo.
Зачем из DBMemo когда путь файла хранятся на бд

Последний раз редактировалось xxbesoxx; 06.11.2018 в 15:40.
xxbesoxx вне форума Ответить с цитированием
Старый 08.11.2018, 17:30   #10
SERGIOBrest
Пользователь
 
Регистрация: 26.05.2017
Сообщений: 19
По умолчанию

void __fastcall TForm1::Button3Click(TObject *Sender)
{
String OpenMyFile = ADOTable1->FieldByName("Put_file")->AsString;
ShellExecute( Handle, L"open", (OpenMyFile).w_str(), 0, 0, SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------

Не работает при нажатии на кнопку
SERGIOBrest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
хочу зашифровать файл. можно ли зашифровать так, чтобы только Я смог открыть? (файл CPK) AlexPanda Безопасность, Шифрование 3 17.07.2017 17:52
Чем открыть файл messages.qdb. Это файл истории icq. Seniora Софт 19 23.04.2016 09:15
Открыть файл из директории программы samouelson C# (си шарп) 4 20.06.2012 19:28
Открыть файл, разделить ячейку на 1000, сохранить файл, закрыть файл. Как? Ник Харди Microsoft Office Excel 7 30.01.2012 18:47