Форум
Написать нам
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: as-master  
Относительные ссылки
FROSTmogilevДата: Пятница, 19 Октября 2007, 10:11 | Сообщение # 1
Новый участник
Группа: Пользователи
Сообщений: 10
Репутация: 0
Награды: 0
Статус: Offline
У меня есть три проекта MMB, мне надо сделать так чтобы один из проектов запускался по ссылке из другого, т.е. используя команду RUN. Мне надо эти проекты записать на диск, а т.к. у всех пользователей имена приводов разные нужно использовать относительные ссылки. Я попробовал разными способами известными мне делать ссылки, но у меня проект выдает что файл не найден! Хотя все остальные файлы( изображения внешние, видео) с такими ссылками работает нормально. Подскажите что можно сделать???????
 
as-masterДата: Пятница, 19 Октября 2007, 11:29 | Сообщение # 2
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Не важно, какие буквы дисков у пользователя, если ты будешь использовать макрокоманду пути:

<CD>

Прописывай пути к своем проектам через эту макрокоманду, и всё будет o'key smile

<CD>\project.exe





Да пребудет с вами ММВ!
 
FROSTmogilevДата: Пятница, 19 Октября 2007, 12:22 | Сообщение # 3
Новый участник
Группа: Пользователи
Сообщений: 10
Репутация: 0
Награды: 0
Статус: Offline
Спасибо за ответ, а еще встречный вопрос: Если например у меня exe файл лежит в директории e:\проект\project.exe , и мне внутри этого проекта нужно запустить проект который лежит в директории e:\проект\123\project2.exe
В таком случае какой мне относительный путь нужно написать не используя при этом названия диска и общей директории????
 
as-masterДата: Пятница, 19 Октября 2007, 13:41 | Сообщение # 4
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Если ты имеешь в виду, что сначала запущен файл e:\проект\project.exe,
а из него уже запускается файл e:\проект\123\project2.exe, то так и напишешь:

Run("<CD>\проект\123\project2.exe","")

и всё получится. Папку проект при этом нужно указывать, так как весь полный путь
будет отсчитываться от CD-дисковода.





Да пребудет с вами ММВ!
 
FROSTmogilevДата: Пятница, 19 Октября 2007, 14:04 | Сообщение # 5
Новый участник
Группа: Пользователи
Сообщений: 10
Репутация: 0
Награды: 0
Статус: Offline
Во втором вопросе я имел ввиду e:\ диск не CD-дисковод, а на винчестере любой из дисков d , e???
 
as-masterДата: Пятница, 19 Октября 2007, 16:50 | Сообщение # 6
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
А кто на этот диск файл-то положит?

Если ты сам, то будешь знать имя диска, и тогда используй макрокоманду <SrcDrive>,
или вообще просто букву.

Если положит юзер, то как он это сделает?
Зная это, можно ответить и на даный вопрос.

А, блин!... Если оба файла - и project.exe, и project2.exe - лежат на одном и том же диске,
то смело можно использовать макрокоманду пути <SrcDrive>, и запись будет выглядеть так:

Run("<SrcDrive>\проект\123\project2.exe","")


Да пребудет с вами ММВ!
 
FROSTmogilevДата: Пятница, 19 Октября 2007, 17:33 | Сообщение # 7
Новый участник
Группа: Пользователи
Сообщений: 10
Репутация: 0
Награды: 0
Статус: Offline
Все во всем разобрался, огромное спасибо за помощь!!!! biggrin

Добавлено (Сегодня, 17:33)
---------------------------------------------
Чуть не забыл вопрос еще, тогда почему с видео и картинками работают ссылки такого вида например
ViewImage("foto\pict0213.jpg","") получается сам проект лежит в той же директории, что и папка foto
а если делаешь для команды Run, то пишет что файл не найден???
Run("проект\123\project2.exe","")-такая ссылка не работает

Run("<SrcDrive>\проект\123\project2.exe","") а если делать так , то кто-нибудь скопирует себе проект в другую папку(например проект2) и все все ссылки полетят!!!
Что делать??? Как мне лучше записать проект на диск, чтобы любой из пользователей мог открыть его у себя??????
какие ссылки использовать???

 
as-masterДата: Пятница, 19 Октября 2007, 18:14 | Сообщение # 8
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (FROSTmogilev)
ViewImage("foto\pict0213.jpg","")


Когда ты пишешь в таком виде: foto\pict0213.jpg, то программа подразумевает все-таки путь <SrcDir>\foto\pict0213.jpg.

Иногда такия фишка прокатывает (например, у меня получалась так для плейлистов), а иногда - нет. Поэтому не советую пользоваться путями такого вида. Обязательно надо присоединять <SrcDir>\, иначе у какого-то юзера может не работать. Так уже было у меня.


Да пребудет с вами ММВ!
 
FROSTmogilevДата: Пятница, 19 Октября 2007, 19:51 | Сообщение # 9
Новый участник
Группа: Пользователи
Сообщений: 10
Репутация: 0
Награды: 0
Статус: Offline
У меня эта фишка всегда прокатывала. Когда я пишу <SrcDir>\foto\pict0213.jpg выскакивает ошибка типа c:\Program Files\MultimediaBuilder\имя файла не найдено??????
Смысл в том что мне надо за писать мой проект на диск(этот проект ссылается на еще два проекта), так чтобы другой пользователь куда бы не скопировал проект мог его открыть и не полетели ссылки????
 
YURIYДата: Пятница, 19 Октября 2007, 23:03 | Сообщение # 10
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (FROSTmogilev)
У меня эта фишка всегда прокатывала. Когда я пишу <SrcDir>\foto\pict0213.jpg выскакивает ошибка типа c:\Program Files\MultimediaBuilder\имя файла не найдено??????

Сколько можно одно и тоже спрашивать, ребята? Вы читаете хоть ГОТОВЫЕ решения? Вот ваш вопрос: http://mmbuilder.ru/forum/26-309-1



Вечная память Андрею Сергееву!
 
as-masterДата: Суббота, 20 Октября 2007, 00:21 | Сообщение # 11
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
FROSTmogilev, ты просто возьми себе за правило (за строгое правило!!!) делать следующее:

1. Если в проекте есть относительные пути, то писать их СРАЗУ через <SrcDir> или <SrcDrive>.
2. НИКОГДА не проверять проект по клавише F5, а проверять, компилируя его в папку назначения.

И всё у тебя всегда будет ОК :)





Да пребудет с вами ММВ!
 
Alex3AДата: Суббота, 20 Октября 2007, 00:26 | Сообщение # 12
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Все просто абсолютный путь - полный путь, с указанием диска, e:\проект\123\project2.exe
относительный - путь относительно исполняемого файла. \foto\map.jpg
Если что то лежит в папке вышеисполняемого файла e:\проект\foto\map.jpg
используем "..\" - на папку вверх. "..\foto\map.jpg
можно и выше ..\..\foto\map.jpg
 
humanoidДата: Суббота, 20 Октября 2007, 08:07 | Сообщение # 13
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
Есть такое понятие "Workflow", которое подразумевает Организацию рабочего технологического процесса, в оптимальной и удобной для каждого разработчка выстраивания этого самого Workflow.

Для ММВ техпроцесс следующий.

1. Создал - Логический диск размером в 1.5 гб (на случай если придеться работать с несколькими проектами, с максимальным предполагаемым проектным размеров в ~500мб)

2. На этот диск установил MMB с произвольным названием папки (в данном случае /_mmb / )

3. Все внешние проектные файлы храняться в именных папках каждого проекта (например / new_cd /

4. Запускаемый файл, записывается в корень этого диска.

5. Тестирую проект по F5, всегда назначая относительный путь <SrcDrive>

Все само себя находит в этом же диске.


Hi, from Moon!
 
humanoidДата: Суббота, 20 Октября 2007, 08:17 | Сообщение # 14
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
Это подходит только, для тех, кто создает что-то для CD-ROM... если же работа подразумевает установочные программы на диск конечного пользователя - то всегда верным будет этот относительный путь - <SrcDir>.

Для тестирования проекта, также можно переназначать плеер в ваши проектные файлы...

Прикрепления: 1426983.gif (10.9 Kb)


Hi, from Moon!
 
as-masterДата: Суббота, 20 Октября 2007, 10:37 | Сообщение # 15
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
И всё же, чтобы ничего не переназначать, чтобы не плодить отдельные логические диски
с отдельно установленной на них ММВ, лучше использовать вариант, предложенный мной.
Имхо, это самый разумный путь. Нажать клавишу F5 - надо 1 секунду, а скомпилировать
проект и запустить - 3 секунды. Разница небольшая :)








Да пребудет с вами ММВ!
 
Alex3AДата: Суббота, 20 Октября 2007, 23:53 | Сообщение # 16
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote
Для тестирования проекта, также можно переназначать плеер в ваши проектные файлы...

Только так иделаю, с путями ни каких проблем никогда нет.
Главное понять что это такое, это не сложно.

Добавлено (Сегодня, 23:53)
---------------------------------------------
P.S.
Это для начинающих.

 
FROSTmogilevДата: Понедельник, 22 Октября 2007, 10:13 | Сообщение # 17
Новый участник
Группа: Пользователи
Сообщений: 10
Репутация: 0
Награды: 0
Статус: Offline
Что-то я вообще народ запутал.... Короче, у меня есть DVD-диск с одним проектом в корне, в котором размещены ссылки на еще два проекта в поддиректории.Как мне записать ссылки, чтобы у конечного пользователя, куда бы он его не скопировал (он ведь может скопировать его в любую директорию на любом диске) открывался без проблем?????
Дайте кто-нибудь точный ответ???? sad
 
as-masterДата: Понедельник, 22 Октября 2007, 11:12 | Сообщение # 18
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Точный ответ я тебе уже дал.
В этом случае ВСЕ пути надо отсчитывать от исполняемого файла, от места, где он лежит.
И место это задается макрокомандой пути <SrcDir>. Что тут непонятного?

Возьми мою программу "My Cookery Book" и положи ее в любой каталог. Она как раз
пока еще без инсталляции. Программа будет находить свои базы рецептов, где бы она не лежала.

Лучше всего сразу организовывать проект так, чтобы главный исполняемый файл лежал
в корневом каталоге всего проекта, тогда пути к любым его файлам будут начинаться
с макрокоманды пути <SrcDir>, а дальше папки со всеми вложениями вплоть до нужного файла.

Если же сам исполняемый файл ты тоже засунешь в одну из папок, а еще хуже - на пару уровней
ниже - тогда тебе придется использовать конструкции, которые привёл Алекс:

..\foto\map.jpg и ..\foto\map.jpg

Такие конструкции используются при верстке веб-страниц для ссылок на другие страницы,
но в ММВ я такие пути не проверял, будут ли они работать.

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


Да пребудет с вами ММВ!
 
FROSTmogilevДата: Понедельник, 22 Октября 2007, 11:17 | Сообщение # 19
Новый участник
Группа: Пользователи
Сообщений: 10
Репутация: 0
Награды: 0
Статус: Offline
Все наконец-то заработало все, as-master, спасибо за помощь!!!!!!!!! happy
 
as-masterДата: Понедельник, 22 Октября 2007, 11:21 | Сообщение # 20
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
Quote (FROSTmogilev)
Все наконец-то заработало все

Так я тебе сразу говорил! smile

PS. Только что проверил - конструкции вида ..\foto\map.jpg у меня не работают.
Так что ни кому не советую это использовать в ММВ. Лучше делать всё по уму.






Да пребудет с вами ММВ!
 
Sam726Дата: Четверг, 10 Декабря 2009, 14:50 | Сообщение # 21
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Хм! А как насчет каталога активного пользователя?
Это все мы знам: <CD>,<Embedded>,<File>,<List>,<SrcDir>,<SrcDrive>,<System>,<Temp>,<This>,<Windows>.
Вот как бы сюда попасть: C:\Documents and Settings\UserPC\...
Мне в голову пришла только одна идея. Добавить в проэк EditBox в котором пользователь укажет свое имя (UserPS), оно сохранится в текстовом файле и потом будет использоватся для доступа к данному каталогу.


 
DEMBELДата: Четверг, 10 Декабря 2009, 14:57 | Сообщение # 22
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
можно еще пошарить в реестре и оттуда выдернуть, можно поизвращаться над переменной <Temp>, как правило она содержит в пути название папки пользователя (если путь по умолчанию), ну или написать vbs-скрипт который достанет имя и запишет в текстовый файл. Все через задницу, короче...



Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Sam726Дата: Четверг, 10 Декабря 2009, 15:03 | Сообщение # 23
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Дауж... Приятного мало.
А что за vbc-скрипт?


 
Alex3AДата: Четверг, 10 Декабря 2009, 16:22 | Сообщение # 24
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (Mad-Dog)
Вот как бы сюда попасть: C:\Documents and Settings\UserPC\...

Элементарно, Ватсон!
<Temp> содержит в себе C:\Documents and Settings\UserPС\Local Settings\Temp\
убираеш 2 элемента пути и получаеш то что хочеш.
C:\Documents and Settings\UserPС\моязлобнаяпапка\
Не надо никаких vbc-скриптов и EditBoxов, только чуть напрячь мозгу.
 
Alex3AДата: Четверг, 10 Декабря 2009, 16:38 | Сообщение # 25
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Создать в папке текущего юзера файл ss.txt, записать в него чего то, кинуть скрипт
на кнопку
Code
Box$=<Temp>+'..\..\ss.txt'
b$=StrFromFile(Box$,1,1)
Message("Any Message String here ...","b$")

мессага покажет что ты написал в файле ss.txt.
P.C.
Quote (as-master)
PS. Только что проверил - конструкции вида ..\foto\map.jpg у меня не работают.
Так что ни кому не советую это использовать в ММВ. Лучше делать всё по уму.

Андрей просто не разобрался, что относительно чего.
Прикрепления: 222.rar (0.6 Kb)
 
DEMBELДата: Четверг, 10 Декабря 2009, 16:53 | Сообщение # 26
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Alex3A)
Создать в папке текущего юзера файл ss.txt, записать в него чего то, кинуть скрипт на кнопку

если Mad-Dog не в курсе, то .. это переход на 1 уровень вверх, в итоге ты окажешься в нужной папке профиля. Осталось выяснить справедливость этого решения на Vista/Seven, как там с путями и /Temp дела? ну и хорошо бы убедиться что переменная окружения Temp стоит по умолчанию, а то некоторые ее переопределяют...




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
YURIYДата: Четверг, 10 Декабря 2009, 17:21 | Сообщение # 27
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Alex3A)
<Temp> содержит в себе C:\Documents and Settings\UserPС\Local Settings\Temp\

А мне такое решение не нравится, ибо

Quote (DEMBEL)
ну и хорошо бы убедиться что переменная окружения Temp стоит по умолчанию

А у меня она стоит на C:\Windows\Temp. Серьёзно! Что вы будете делать тогда?



Вечная память Андрею Сергееву!
 
Sam726Дата: Четверг, 10 Декабря 2009, 19:05 | Сообщение # 28
Поднаторевший
Группа: Проверенные
Сообщений: 141
Репутация: 0
Награды: 0
Статус: Offline
Alex3A, Спасибо! Пашет!
Code
Box$=<Temp>+'..\..\test.txt'
Run("Box$","")

YURIY,
Quote
А у меня она стоит на C:\Windows\Temp. Серьёзно! Что вы будете делать тогда?

Интересно конешно. Ведь в справке то <Temp> это C:\WINDOWS\Temp
Но меня определило в C:\Documents and Settings\UserPС\Local Settings\Temp\
А как тогда попасть в C:\WINDOWS\Temp (<Windows>\Temp)?
Как то все запутано, или я чегото не понимаю.

Добавлено (10 Декабрь 2009, 19:05)
---------------------------------------------
DEMBEL, Что на счет .. (двух точек) я не знал такого. Видел что так делают, но как досихпор не понимал.




Сообщение отредактировал Mad-Dog - Четверг, 10 Декабря 2009, 19:09
 
DEMBELДата: Четверг, 10 Декабря 2009, 19:20 | Сообщение # 29
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Mad-Dog)
А как тогда попасть в C:\WINDOWS\Temp (<Windows>\Temp)?

да, правильно - <Windows>\Temp. Переменная Temp = c:\windows\temp была в win95-Me, а с xp её запихали в C:\Documents and Settings\...\Local Settings\Temp\




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Alex3AДата: Четверг, 10 Декабря 2009, 21:01 | Сообщение # 30
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (YURIY)
А у меня она стоит на C:\Windows\Temp. Серьёзно! Что вы будете делать тогда?

КАк что буду делать?
Запишу или прочитаю то и туда куда мне надобнос :D
Я вам прсто показал показал забытый, или незнаемый, вами способ относительной адресации.
Просто шевелите мозгой. :D

Добавлено (10 Декабрь 2009, 21:01)
---------------------------------------------
Mad-Dog, и чего это тебя все тянет в докисет, по большому счету там тебе делать нечего, а суперхакера из тебя не получится, мало знать где эта папка,
нужно еще и знать что делать с ее содержимым, а это вовсе не просто.
И кукиши тебе безполезны, надо знать что там, и с чем его едят, в каждом конкретном случае там все свое.

 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: