Программа-эксплорер

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Сообщение от Somewhere

Ну вы блин даете :-) ParamStr(1) с неба не свалиться, вот в Run\Parameters он и вводится
Извиняюсь, - раньше никогда не приходилось сталкиваться с ParamStr. А что там прописывать надо? И почему у меня раньше всё работало, без Run\Parameters?
Если я не прав, то скажи, как правильно создать программу (эксплорер). И почему у меня почему у меня функция ParamStr(1) бросила показывать путь к коталогу (папке)? Буду очень признателен.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&quot писал(а):И почему у меня раньше всё работало, без Run\Parameters?
Возможно папка указывалась вручную.
Например твоя прога называется crdir.exe, при запуске мы ей передаем параметр, допустим:
crdir.exe D:\temp
Тогда Paramstr(1) = 'D:\Temp', и будет создаваться файл D:\temp.cop

Если мы запускаем программу из среды Turbo Pascal то передать параметры можно через Run\Parameters - вводим 'D:\Temp' и жмем потом Ctrl+F9 - прога идет с нужным параметром.

Если параметров нет, то можно использовать GetDir чтобы узать текущий каталог:
GetDir(2, Path);
Первый параметр - это диск, 1-А, 2-B, 3-С и т.д.
Второй - переменная, принимающая текущую папку
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Сообщение от Somewhere

Возможно папка указывалась вручную.
Нет, ты наверное неправильно меня понял. - Сначала, через реестр, папке я добавил команду "вскрыть". (Допустим, программа называется hide.exe)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\folder\shell\Вскрыть]

[HKEY_CLASSES_ROOT\folder\shell\Вскрыть\command]
@="\"C:\\Program Files\\Turbo Pascal\\hide.EXE\" %1"

Теперь при нажатии правой кнопки мыши на папку появилась команда "вскрыть". Программа, выполняющая эту команду - моя программа. Напомню её

Код: Выделить всё

uses dos;
var f: file;
begin
assign(f, paramstr(1));
setFattr(f, hidden);
end.
При нажатии на папку "вскрыть", paramStr(1) через командную строку должна получить имя выбранного файла, то есть если нажать на папку, расположенную на диске "C" - "games", то paramStr(1) будет равно (ParamStr(1))='C:\games. По плану, папка Games должна быть вскрыта, но paramstr не принимает имя файла через командную строку. Вернее бросила принимать т.к. раньше всё работало без проблем.
Если же эту процедуру применить не к папке, а к файлу, тогда файл вскроется. А почему это так - незнаю.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Ты знаком с реестром?
ParamStr(1) по плану должна получать имя выбранного файла... Это как-то подозрительно. Проверь, работает ли этот процесс у тебя.
Скопируй курсивный текст (см выше) в текстовый документ, затем смени его расширение на *.reg, далее запусти его. @="\"C:\\Program Files\\Turbo Pascal\\hide.EXE\" %1" - это путь к твоей программе, при желании, измени его. Просто я думаю, что в реестре что-то наделал, теперь и бросило работать...
О результатах сообщи пожалуйста мне, буду очень благодарен.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Колядин Максим, для отладки добавь первой строкой вывод на экран Paramstr(1) вот если там действительно ничего - тогда придётся разбираться почему
Изображение
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Спасибо за вариант, но он уже был мною просчитан. И, как не странно, там ничего нет. В чём дело, - понятия не имею.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Кидай тогда уж прогу. Попробуем завязать. Вообще через реестр не обязательно вручную править. В свойствах папки можно свободно настроить типы файлов и программы их открывающие
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Сообщение от Somewhere
Кидай тогда уж прогу
Вот файл, но, на всякий случай, скопируй файл RTM.exe из папки BP паскаля. Лично у меня возникает ошибка "File RTM.exe not found если этого файла небудет вместе с программой. Спасибо..
Вложения
somwhere_i_belong.zip
(6.18 КБ) 21 скачивание
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Объясняю на пальцах:
1. Заходим в "Свойства папки\Типы файлов"
2. Находим в списке "Папка с файлами"
3. Нажимаем "Дополнительно\Создать..."
4. Название действия "Hide" к примеру, и прописываем путь к проге
5. Жмакаем везде ОК
Теперь есть в Popup меню на папке пункт Hide. И все работает...
Тока вот с RTM могут быть проблемы. Кажется он делает режим DPMI для программ на BP дабы они могли использовать оперативную память за пределами мегабайта, однако всем этим управляет текущий DOS эмулятор, по умолчанию процесс NTVDM. Если ты ставил себе какой нить HASP эмулятор или дебагер для DOS они могут поставить свои эмуляторы 16 разрядного режима. Возможно проблема твоя именно здесь, а у меня все работает...
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Колядин Максим
Сообщения: 297
Зарегистрирован: 16 ноя 2006, 19:09
Откуда: Seattle, WA
Контактная информация:

Сообщение от Somewhere

Объясняю на пальцах:
1. Заходим в "Свойства папки\Типы файлов"
2. Находим в списке "Папка с файлами"
3. Нажимаем "Дополнительно\Создать..."
4. Название действия "Hide" к примеру, и прописываем путь к проге
5. Жмакаем везде ОК
Я хотел, чтобы от пользователя ничего не требовалось, кроме как нажать на .reg файл.. Ну ладно, мы отклонились от первоначальной темы - "прога-эксплорер"Напомню её условие - нужно создать программу, которая откроет ввёдный с клавиатуры каталог. После выполнения прога закрывается, а директория открывается - как решить, помоги.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Ответить