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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2014, 15:28   #1
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию Всем здравствуйте! Как реализовать чтобы определённый файл открывался сразу?

Всем здравствуйте! Как реализовать чтобы определённый файл открывался сразу? Т.е. к примеру у меня есть кнопка: презентация
Как реализовать так, чтобы при нажатии на кнопку сразу открывалась определённая презентация, вложенная в папку с прогой. Прописывание просто пути к файлу не подойдёт, так как это нужно будет показать на других компах и путь к папке будет меняться. Т.е. если на компе он находится на Д диске, то на других компах он будет вообще читаться через флешку и путь уже измениться. Как реализовать данную задачу?! Подскажите! Заранее спасибо!
Argontarg вне форума Ответить с цитированием
Старый 03.02.2014, 15:34   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Прописывание просто пути к файлу не подойдёт
Попробуйте формировать путь динамически, например, при запуске программы с использованием GetDir. Сформированные пути затем можно подставить в ShellExecute.
Streletz вне форума Ответить с цитированием
Старый 03.02.2014, 16:35   #3
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Попробуйте формировать путь динамически, например, при запуске программы с использованием GetDir. Сформированные пути затем можно подставить в ShellExecute.
ммм, как это сделать?) не забывайте что это форум Новички в программировании ) Я делал кнопку с ShellApi и OpenDialog, там просто выбирал файл вручную, но нужно чтобы сразу открывался файл.
Argontarg вне форума Ответить с цитированием
Старый 03.02.2014, 16:50   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Argontarg Посмотреть сообщение
ммм, как это сделать?) не забывайте что это форум Новички в программировании ) Я делал кнопку с ShellApi и OpenDialog, там просто выбирал файл вручную, но нужно чтобы сразу открывался файл.
Простите, но здесь нет ничего сложного. Для ещё большей простоты, будем считать, что презентация и программа лежат в одной папке.
С помощью GetDir получаете папку в которой лежит программа в виде строковой переменной.
Далее к присоединяете к ней имя файла презентации:
Код:
DirName:=DirName+'\MyFile.ppt';
Полученный результат подставляете в ShellExecute по аналогии OpenDialog.FileName. Только вместо OpenDialog.FileName у Вас будет DirName.
Всё это можно без проблем разместить в обработчике одной кнопки.
И будет Вам счастье.
Streletz вне форума Ответить с цитированием
Старый 03.02.2014, 17:10   #5
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Простите, но здесь нет ничего сложного. Для ещё большей простоты, будем считать, что презентация и программа лежат в одной папке.
С помощью GetDir получаете папку в которой лежит программа в виде строковой переменной.
Далее к присоединяете к ней имя файла презентации:
Код:
DirName:=DirName+'\MyFile.ppt';
Полученный результат подставляете в ShellExecute по аналогии OpenDialog.FileName. Только вместо OpenDialog.FileName у Вас будет DirName.
Всё это можно без проблем разместить в обработчике одной кнопки.
И будет Вам счастье.
Я извиняюсь конечно, но здесь http://www.delphibasics.ru/GetDir.php написано то, что определенный диск привязывается к функции, т.е. если у меня сохранён в папке с прогой на диске С, то и на других компах будет открываться именно с этого диска ?
Argontarg вне форума Ответить с цитированием
Старый 03.02.2014, 17:12   #6
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Или я могу "GetDir(3, DirName); // Сохраняем директорию C: в переменной DirName
ShowMessage(DirName);" описать это так GetDir(Сюда просто название папки где находится файл, типо "Новая папка" , DirName); и всё?
Argontarg вне форума Ответить с цитированием
Старый 03.02.2014, 17:20   #7
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Argontarg Посмотреть сообщение
Я извиняюсь конечно, но здесь http://www.delphibasics.ru/GetDir.php написано то, что определенный диск привязывается к функции, т.е. если у меня сохранён в папке с прогой на диске С, то и на других компах будет открываться именно с этого диска ?
Простите и Вы меня, но видимо Вы не до полностью или не внимательно ознакомились с описанием процедуры GetDir. Привязка к диску зависит от значения 1го параметра. Если в него передать 0, то она Вам выдаст корректное значение пути к папке с программой, независимо от буквы диска.
Иначе говоря, если Вы запускаете программу с флешки, то какую бы букву ей не присваивали разные ПК, GetDir в этом случае всегда выдаст "настоящий" путь. Поэтому, это
Цитата:
Или я могу "GetDir(3, DirName); // Сохраняем директорию C: в переменной DirName
ShowMessage(DirName);" описать это так GetDir(Сюда просто название папки где находится файл, типо "Новая папка" , DirName); и всё?
в данном случае излишне.
Streletz вне форума Ответить с цитированием
Старый 03.02.2014, 17:45   #8
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Хм,
GetDir(0, DirName);
DirName:=DirName+'\тут путь Презентация.ppt';
ShowMessage(DirName);
if DirName(Здесь ошибку даёт, какую функцию надо вписать?) then
ShellExecute(Hinstance, 'open', PChar(DirName) , nil, nil, SW_SHOWMAXIMIZED);


Только ошибку даёт.

Последний раз редактировалось Argontarg; 03.02.2014 в 17:52.
Argontarg вне форума Ответить с цитированием
Старый 03.02.2014, 17:55   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

C GetDir могут быть проблемы - нет гарантии, что текущий каталог есть каталог, из которого запущена прога. Может и отличаться. Следующий код не зависит от текущего каталога
Код:
DirName:=ExtractFilePath(Application.ExeName)+'Презентация.ppt';
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.02.2014, 17:58   #10
Argontarg
Пользователь
 
Регистрация: 21.01.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
C GetDir могут быть проблемы - нет гарантии, что текущий каталог есть каталог, из которого запущена прога. Может и отличаться. Следующий код не зависит от текущего каталога
Код:
DirName:=ExtractFilePath(Application.ExeName)+'Презентация.ppt';
И каким образом тогда можно открыть нужный мне файл сразу? Чтобы он также открывался на всех компах?
Argontarg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать чтобы chm файл открывался на форме kate158 Общие вопросы Delphi 1 02.04.2012 15:12
Как сделать так, чтобы вордовский документ НЕ открывался? Mar25ag33ova Microsoft Office Word 2 02.03.2012 20:25
как сделать, чтобы если открываешь один файл, то автоматически открывался другой? Artem_85 Microsoft Office Excel 10 22.02.2012 14:02
Нужно чтобы Form2 открывался по середине Form1 diznt Помощь студентам 1 31.08.2008 03:37
Как сделать чтобы xml файл открывался в Delphi KlErik Общие вопросы Delphi 2 24.05.2007 11:02