![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#21 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#22 | |||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Цитата:
1. Я привёл конкретный пример, почему не нужно использовать в программах относительные пути. Потому что они не работают в современном мире ("работают часто" это равно "работают, благодаря случайности" - т.е. "не работают"). 2. Сам MSDN говорит: ребята, не надо это использовать. Мне в ответ вы говорите: ну их же удобно использовать. И на всякий случай добавляете: "в некоторых случаях". Как будто эти "некоторые случаи" вас волшебным образом защитят от фундаментальных недостатков относительных путей. Это замечательная аргументация. Мне удобно забивать гвозди отвёрткой, но это не делает это правильным. Я рекомендовал бы прочитать вот эти две статьи: http://www.gunsmoker.ru/2011/10/pascal.html http://www.gunsmoker.ru/2011/09/blog-post_10.html Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|||
![]() |
![]() |
![]() |
#23 |
Форумчанин
Регистрация: 05.12.2011
Сообщений: 102
|
![]() Код:
Код:
Код:
Хотя из делфи все работает просто идеально и создается там где нужно Бред... |
![]() |
![]() |
![]() |
#24 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
прога не имеет админских прав, вот и не позволяют менять файлы там, кстати правильно делают.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#25 | ||||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() Цитата:
Цитата:
При старте программы это всегда рабочая папка программы. Никакой неоднозначности здесь нет. Соответственно, программа может не работать исключительно из-за содержащихся в ней ошибок, но не потому, что использует относительные пути. Цитата:
Я бы прочитал, но, увы, они недоступны. Цитата:
exe-шник находится в другом месте, и использовать путь к нему недопустимо.. |
||||
![]() |
![]() |
![]() |
#26 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]() Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
![]() |
![]() |
![]() |
#27 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() Цитата:
Никаких ошибок кроме тех, что допустил сам программист/пользователь. Для примера: создаем ярлык и делаем пустой рабочую папку. Теперь программа у нас лежит где-то в укромном месте (возможно, с кучей dll и прочей требухой), а config читается из папки с ярлыком. Очень удобно, когда одной программой нужно регулярно обрабатывать разнообразные данные. В частности, когда требуется одновременный запуск одной и той же программы для обработки различных данных. Две или более копии работают, читают каждая свои данные, пишут каждая свои результаты, и не мешают друг другу. |
|
![]() |
![]() |
![]() |
#28 | ||||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
Цитата:
- текущая папка - рабочая папка - истинная рабочая папка В моей трактовке это ровно одно и то же. А именно - результат вызова GetCurrentDirectory. А у вас? Цитата:
А вот объяснения, как вы собираетесь бороться с многопоточными проблемами относительных путей (да и даже просто вызовов в сторонний код), я так и не услышал. Заметьте, что контроля над кодом, выполняемым вашей программой, у вас нет. Помимо системного кода в вашей программе работает 5-10 глобальных ловушек или аналогичного стороннего кода. Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||||
![]() |
![]() |
![]() |
#29 | ||||||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]() Цитата:
- рабочая папка - она же была текущей на момент старта программы, - текущая папка - может меняться в процессе работы. А "истинная" - просто для акцента. Добавлю, что есть еще папка, в которой расположен exe-шник. В общем случае она может не совпадать ни с той, ни с другой. Цитата:
Вместо того, чтобы: 1. Открыть файл по относительному пути. Вы предлагаете: 1. Запомнить текущий каталог. 2. Склеить из текущего каталога и относительного пути абсолютный путь. 3. Открыть файл по абсолютному пути. То есть: - программист пишет дополнительный код, - процессор делает дополнительные операции (не много, но все-таки...), - программа расходует дополнительную паямть (опять же, немного, но главное - сам факт). И ради чего все это? Самое смешное, что результат работы такой программы будет в точности (!) таким же, как и в первом случае. То есть: - если по каким-то таинственным причинам (например, прокрался злоумышленник и сделал предложенное Аватаром) программа получила при запуске неверную рабчую папку, то предпринятые нами дополнительные действия никак от этого не спасают, - если же я получаю при запуске правильный путь к рабочей папке, то ве дальнейшее уже зависит только от меня, и нужно или не нужно сохранять рабочую папку, я могу решить в зависимости от конкретных условий, а не следуя кем-то принудительно назначенному явно неоптимальному сценарию. Цитата:
Объясните для начала, почему это у меня нет контроля над кодом? Какие у меня работают глобальные ловушки и какой сторонний код? Цитата:
Да если бы даже и указывалось, боюсь, такое требование просто невыплолнимо. Откуда я знаю, может Вам не известно никаких других стандартных программ кроме "Hello, World!". Цитата:
Цитата:
Как известно, в Паскале три типа циклов: for, while и repeat. По сути дела Вы предлагаете объявить "правильным" только один из них, а два других считать неправильными, еретическими, некошерными и отрывать за их использование руки. Нет, теоретически это, конечно, возможно. И даже выполнимо. Только вопрос - удобно ли? Так и с путями: коль скоро есть два различных варианта задания путей, наиболее разумным мне представляется их умелое сочетание: в каких-то случаях удобнее пользоваться одним, а в каких-то другим. В принципе, они (с точностью до избыточного кода, ресурсов процессора и памяти) эквивалентны. Так что обойтись только одним из них в принципе можно - точно так же, как и с циклами. |
||||||
![]() |
![]() |
![]() |
#30 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
s-andriano, вы лично можете сколь угодно долго писать код, который работает "почти всегда", но не надо указывать другим на их "ошибки", если вы даже не можете понять о чём они говорят.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание папки | warkk | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 25.01.2011 18:28 |
Создание временной папки | Яр|/||< (^_^) | Qt и кроссплатформенное программирование С/С++ | 1 | 18.03.2010 13:47 |
Создание папки в C | Александр Елис | Помощь студентам | 3 | 07.11.2009 11:28 |
Создание папки | sergiksergik | Microsoft Office Excel | 6 | 26.06.2009 00:07 |
Создание папки | Яр|/||< (^_^) | Общие вопросы Delphi | 2 | 23.06.2009 19:18 |