Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открытие файла в своей программе по ассоциации. 
:(
    Опции темы
Vendigo
Дата 26.9.2005, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 25.9.2005
Где: Челябинская обл. г. Миасс

Репутация: нет
Всего: нет



Многие приложения запускаются открытием файлов с которыми они ассоциированы. Как это делается?

Например при открытии файла с расширением МР3 загружается Winamp и в нем проигрывается данный файл, и т.д.


PM MAIL   Вверх
FRAGNATIC
Дата 26.9.2005, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



в реестре настроить чтобы твоё прложени было по умолчанию для этого типа файлов!
просто через меню кликаешь открываешь свойства вайла и выбираешь прогу какую использовать для этого типа!

в самой проге надо при запуске загружать этот файл в неё путь к файлу хранится в ParamStr !
PM MAIL   Вверх
Voyager
Дата 26.9.2005, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 2
Всего: 18



Вот здесь написано как ассоциировать файл со своим приложением - http://www.drkb.ru/
PM   Вверх
Alex
Дата 26.9.2005, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Vendigo
Дата 26.9.2005, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 25.9.2005
Где: Челябинская обл. г. Миасс

Репутация: нет
Всего: нет



Ассоциировать файл с программой это не сложно, а вот как открыть потом его в своем приложении?

"в самой проге надо при запуске загружать этот файл в неё путь к файлу хранится в ParamStr !"

Вот описание функции:
function ParamStr(Index: Integer): string; Что за индекс в нее нужно подставлять?

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

Если я понимаю правильно поясните подробнее как это нужно сделать, что то у меня не выходит.
PM MAIL   Вверх
Alex
Дата 26.9.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



ParamStr(0) - путь до файла программы
ParamStr(1) - первый входной параметр


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Albinos_x
Дата 26.9.2005, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата
Насколько я понимаю (а в Дельфи я понимаю мало) мне нужно в обработчике события OnCreate проверить

правильно...
с помощью ParamStr(1) получиш адрес файла


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
FRAGNATIC
Дата 26.9.2005, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



Код

procedure Tform1.LoadFile;
var
 i: integer;
begin
 FFileName := '';
 for i := 1 to ParamCount() do
   FFileName := FFileName + ParamStr(i);
 if not FileExists(FFileName) then begin
  FileNew1.Execute;
  exit;
 end
 else Edit.Lines.LoadFromFile(FFileName);
end;

PM MAIL   Вверх
Albinos_x
Дата 26.9.2005, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата
FFileName := '';
for i := 1 to ParamCount() do
  FFileName := FFileName + ParamStr(i);

или я чего-то недогоняю, или..... Это-то зачем?... может просто:
Код

FFileName := ParamStr(1);
if not FileExists(FFileName) then begin    
  OpenDialog1.Execute;    
  exit;    
 end    
 else Memo1.Lines.LoadFromFile(FFileName);



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Voyager
Дата 26.9.2005, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 532
Регистрация: 8.2.2005

Репутация: 2
Всего: 18



Открываешь файл по ассоциации (как это сделать - описано выше), а в проге можешь обрабатывать файл например так (выдрано из одной моей программы):
Код

procedure TForm1.FormCreate(Sender: TObject);
var
  GlobalFileName:string;
begin
  GlobalFileName:='';
  If ParamCount>0 then
    begin
      If fileexists(ParamStr(1)) and (ExtractFileExt(ParamStr(1))='.pbo') then
        begin
          If Length(ExtractFileDrive(ParamStr(1)))<>0 then
            begin
              GlobalFileName:=ParamStr(1);
            end
          else
            begin
              GlobalFileName:=ExtractFilePath(ParamStr(0))+ParamStr(1);
            end;
          Edit1.Text:=GlobalFileName;
        end
      else
        begin
          MessageDlg('Некорректный файл: '+ParamStr(1), mtError, [mbOk], 0);
          Application.Terminate;
        end;
    end;  
end;


В Edit1 и будет переданный приложению файл smile
PM   Вверх
Vendigo
Дата 29.9.2005, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 25.9.2005
Где: Челябинская обл. г. Миасс

Репутация: нет
Всего: нет



Всем спасибо!
Разобрался, сделал.
Только действительно непонятно зачем нужен этот цикл: for i := 1 to ParamCount() do ?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.