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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2010, 20:15   #1
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию Тип файла

Всем Добрый вечер! Решил создать эту тему потому что в инете много статей как «Согласовать» расширение со своей программой но все приводят расширения такие как mp3 , bmp. А как зарегистрировать новый формат? Так как если формат уже зарегистрирован, то после перезагрузки винды он меняет значок и направление запуска программы, а если новый формат то после перезагрузки не чего не меняется, может, кто знает, как решить данную закавыку?
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 24.09.2010, 20:24   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Знает.

Найти официальную документацию и следовать ей.

Ну или, как вариант, сравнить то, что вы делаете, с тем что написано в официальной документации.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 24.09.2010, 21:06   #3
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Оно в реестре... Я вот создавал батник по примеру...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 24.09.2010, 23:17   #4
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

GunSmoker
Цитата:
Найти официальную документацию и следовать ей.
Это вы имеете веду стандартную справку делфи или что?
DomiNick это конечно вам спасибо но не то
Кстати я заметел что под разделом например ".ext/openwithprogids" туда Windows не записывает он записывает ".ext" как имя а параметр будет уже то что в "openwithprogids"
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 25.09.2010, 08:56   #5
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Код:
uses ..., Registry, ...;
....

procedure TMainForm.FormCreate(Sender: TObject);
begin
RegFile:=TRegIniFile.Create;
RegFile.RootKey:=HKEY_CLASSES_ROOT;
if  (RegFile.ReadString('J-Bot.Document\Shell\Open\Command','','')<>(Application.ExeName+' "%1" ')) or // проверка на уже имеющееся в реестре объявление...
    (RegFile.ReadString('J-Bot.Document\DefaultIcon','','')<>(ExtractFilePath(Application.ExeName)+'J-Bot.ico,0')) or
    (RegFile.ReadString('.jbot','','')<>'J-Bot.Document')
    then begin // если нет в реестре - заносим
  RegFile.WriteString('.jbot','','J-Bot.Document');
  RegFile.WriteString('J-Bot.Document','','Файл настроек Lineage II J-Bot');
  RegFile.WriteString('J-Bot.Document\DefaultIcon','',ExtractFilePath(Application.ExeName)+'J-Bot.ico,0');
  RegFile.WriteString('J-Bot.Document\Shell\Open\Command','',Application.ExeName+' "%1" ');
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, NiL, NiL); // оповещаем систему о том, что одно из сопоставлений файлов смнилось
end;
RegFile.CloseKey;
RegFile.Free;
end;
я делаю так...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 25.09.2010, 17:01   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от dmitriegorovih Посмотреть сообщение
GunSmoker
Это вы имеете веду стандартную справку делфи или что?
Я имею в виду MSDN - Microsoft Developers Network.

Вас интересует раздел Implementing a Custom File Format вместе с подразделами.

Читайте. Пользы будет в сто крат больше, чем от бездумного копирования говно-кода. Особенно если вы не понимаете, как это будет/должно работать.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 25.09.2010, 21:24   #7
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

GunSmoker Я свами от части согласен и отчасти не согласен по поводу говно кода как бы то не было смешно но я проверяю код потому что новичку могут потсунуть утку ну например что лучше setpixels или pixels[x,y] с первого взгляда особо не отличается но setpixels работает в 10 раз быстрее pixels[x,y] и я не чего не преувеличиваю у меня график отрисовывался с pixels[x,y] 10 секунд, а с setpixels 1 секунду теперь почему я не согласен потому что на форуме могут подсказать то что не написано не в одном пособии, решение задачи совсем альтернативными путями
Да кстати почетал я статью с переводом чёто вообще не понятно
Johnson Проверил ваш способ не работает
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 26.09.2010, 08:58   #8
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
Johnson Проверил ваш способ не работает
значит не правильно поняли как он работает и неправильно изменили. этот код стоит в моей программе и работает без ошибок.
смотрите для чего проверки и как заношу в реестр.

изменять нужно лишь отмеченые денные:


if (RegFile.ReadString('J-Bot.Document\Shell\Open\Command','','' )<>(Application.ExeName+' "%1" ')) or // проверка на уже имеющееся в реестре объявление...
(RegFile.ReadString('J-Bot.Document\DefaultIcon','','')<>(Ext ractFilePath(Application.ExeName)+'J-Bot.ico,0')) or
(RegFile.ReadString('.jbot','','')<>'J-Bot.Document')
then begin // если нет в реестре - заносим
RegFile.WriteString('.jbot','','J-Bot.Document');
RegFile.WriteString('J-Bot.Document','','Файл настроек Lineage II J-Bot');
RegFile.WriteString('J-Bot.Document\DefaultIcon','',ExtractFi lePath(Application.ExeName)+'J-Bot.ico,0');
RegFile.WriteString('J-Bot.Document\Shell\Open\Command','',Ap plication.ExeName+' "%1" ');
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, NiL, NiL); // оповещаем систему о том, что одно из сопоставлений файлов смнилось
end;


соответственно нужно чтоб был файл иконки рядом с вашей программой, или указать другой путь к иконке
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Stilet; 02.10.2010 в 12:50.
Johnson вне форума Ответить с цитированием
Старый 26.09.2010, 11:56   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от dmitriegorovih Посмотреть сообщение
Да кстати почетал я статью с переводом чёто вообще не понятно
Хорошее начало. Теперь можно изложить здесь, чего непонятно, и начать разбираться.

Это, если вы хотите нормально сделать.

Или же вы можете искать решения, собранные на коленке:

Цитата:
Сообщение от dmitriegorovih Посмотреть сообщение
Johnson Проверил ваш способ не работает
Которые в своё время создавались ровно так же - бездумным копированием ответов с форумов.

(а самое первое решение было выбрано экспериментированием)
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.

Последний раз редактировалось GunSmoker; 26.09.2010 в 12:05.
GunSmoker вне форума Ответить с цитированием
Старый 26.09.2010, 12:14   #10
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
бездумным копированием ответов с форумов
прошу оставить голословные обвинения при себе. это копия из моего исходника. и бездумно я не копирую, в худшем случае привожу ссылку на пост.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать тип файла VAsiliyMvv Общие вопросы Delphi 61 07.07.2010 10:27
Первести тип real в тип strings sokla Помощь студентам 5 07.01.2010 18:04
В Access есть тип данных "Счетчик".Есть ли подобный тип данных в MS Sql Server 2000? An_ton SQL, базы данных 5 16.01.2009 17:55
Перевести тип String в тип PChar (Delphi 7) ScorpioN_T Помощь студентам 2 28.10.2008 22:13
данные о видеосистеме: тип видеоадаптера, тип монитора, режим монитора: разрешение, частота обновления WaxeP Win Api 9 15.04.2007 18:12