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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2013, 22:09   #31
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

И ни одного аргумента...

Не говоря уже об ответах на конкретные вопросы.

Грустно это.
s-andriano вне форума Ответить с цитированием
Старый 04.04.2013, 22:12   #32
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Без обид, но я просто понял, что разговор с вами не имеет смысла.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 05.04.2013, 00:23   #33
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ну, если единственный смысл - посвятить оппонента в свою веру, не приводя никаких аргументов, то - да, не имеет смысла.

PS. Кстати, нашел время, когда сервер доступен, и прочитал две Ваши статьи. Написано хорошо. И, думаю, для многих начинающих это окажется полезным. Хотя на мой вкус - слишком много внимания уделяется тому, как надо, и несколько в стороне остается - почему надо именно так.
В общем, складывается впечатление, что Вы привыкли к тому, что все Ваши утверждения должны приниматься на веру, без обоснования и доказательств. И хотя большинство из этих утверждений, действительно, соответствует истине, уверенности, что таковы они все, - нет. А равно нет критерия (в связи с недостаточностью аргументации), по которому безусловно верные тезисы можно было бы отличить от Вашего личного мнения.
s-andriano вне форума Ответить с цитированием
Старый 05.04.2013, 00:46   #34
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

s-andriano, ты ничего не напутал? Я аргументы приводил. Железные, между прочим. Программирование - оно как математика. Здесь два плюс два всегда равно четыре и не зависит от чьего-бы то ни было мнения. И что я получил в ответ? "проблемы в воспалённом воображении" + "аргументов нет". Супер, пять баллов.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 05.04.2013, 17:28   #35
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

GunSmoker, Вы ничего не перепутали?
Приводить аргументы и утверждать, что аргументы были приведены ранее - не одно и то же.
В данной теме Вами были написаны сообщения: №11, №13, №16, №22, №28, №30, №32 и №34, причем, в №13, №30-34 аргументы полностью отсутствуют, вместо них вопросы (№13) либо утверждения, что, якобы, аргументы были приведены ранее.

Разберемся, какие же аргументы были приведены.

#11 31.03
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Текущая папка может быть какой угодно. Да, по умолчанию она равна папке программы, но это далеко не всегда так. Её может менять вызывающий, твой код и код функций, которые ты вызываешь.
То есть программист все-таки контролирует положение текущей папки (например, никогда ее не меняя и не вызывая функций, которые ее меняют). Т.е. аргументов в пользу того, что папка может быть какой угодно, - нет.

#16 31.03
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Код:
ChangeDir('MyDir_NN');
TFileStream.Create('x.txt', ...);
Наводящий вопрос: что произойдёт, если запустить этот код в два потока одновременно?
'MyDir_NN' введено мною в предположении, что они для разных потоков различные.
Вы видите проблему, но не понимаете, из-за чего она возникает.
Проблема не в использовании относительного пути, а в изменении текущей папки из вторичного потока.
Не меняйте папки, пользуйтесь относительными путями и все будет OK!
Код:
TFileStream.Create('MyDir_NN\x.txt', ...);
С точно таким же успехом Вы могли предложить писать из двух разных потоков в один файл. Разницы нет. Есть процедуры, которые недопустимо вызывать из вторичных потоков: изменение текущей папки, запись в один и тот же файл и пр. Использование относительного пути к таковым не относится, т.к. ничего в тайне от других потоков не изменяет. И именно за изменение текущей папки в неосновном потоке и нужно отрывать руки.

Фактически, если Вы используете только абсолютные пути, у Вас в принципе исчезает потребность как-либо менять текущую папку. Но это лишь следствие. И именно ради достижения этого следствия Вы рекомендуете никогда не употреблять относительные пути, тогда как намного логичнее было бы запретить менять текущую папку в неосновном потоке.

Я понимаю, что гильотина - радикальное средство от перхоти, но не слишком ли оно сильнодействующее? Особенно если есть гораздо более мягкие средства, не имеющие столь значительных побочных эффектов.
Цитата:
Коду программы нет никакой необходимости оперировать относительными путями. Единственное, что он может с ними сделать: прочитать со входа и преобразовать в абсолютные.
Коду программы нет никакой необходимости оперировать абсолютными путями. Именно "оперировать", т.е. производить лишние и ненужные действия в виде "прочитать" и "преобразовать".
Цитата:
Ребят, вспомните историю. Что такое относительные пути и откуда они взялись.
И это аргумент?

Если Вы хотите напомнить какую-либо историю, приведите ее.
Если Вы помните историю, в CP/M-80 никаких путей не было (были несколько пользователей на одной дискете - но это другое). Не было их и в первых версиях MS DOS, т.к. не было такого понятия как "каталог" - все размещалось в том месте, которое сейчас именуется "корневым каталогом".
Или Вы имели в виду какую-то другую историю?
Ну так расскажите!

#22 01.04
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Подсказка: код может не находится под твоим контролем. Это может быть сторонний код.
Это как "не может"?
1. Применение стороннего кода - это уже частный случай (см. примечание *), а потому утверждение не может претендовать на всеобщность.
2. Сторонний код в "правильном" случае должен быть с исходниками. А потому всегда можно простым текстовым поиском проверить его на смену текущей папки. Обратите внимание: опять ограничение не на относительные пути, а на изменение текущей папки! Но - опять не всеобщность, а лишь частный случай.
3. Если даже сторонний код поставляется без исходников, можно выяснить список вызываемых функций ОС хотя бы в той же dll.
4. Обычно можно по смыслу вызываемой процедуры догадаться, может ли она в принципе менять текущую папку. Лично мне кажется, что функция вычисления логарифма текущую папку менять не должна.
5. Даже если ни один из п.п. 2-4 не привел к требуемому результату, можно принудительно восстановить (на всякий случай) исходную текущую папку, после чего продолжать спокойно пользоваться относительными путями.

Т.е. аргументы, касающиеся именно запрета относительных путей, по прежнему отсутствуют.

*Примечание: Мы ведь находимся в разделе Delphi, а потому вспоминается утверждение, что программист Delphi любую программу пишет в два этапа:
1. Ищет компонент, который решает его задачу.
2. Кидает найденный компонент на форму.
s-andriano вне форума Ответить с цитированием
Старый 05.04.2013, 17:29   #36
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
1. Я привёл конкретный пример, почему не нужно использовать в программах относительные пути. Потому что они не работают в современном мире...
Ну вот, что и требовалось доказать: аргументов по-прежнему нет, зато уже начались утверждения "я привел".
Правильно написанная программа прекрасно работает и с относительными путями.
И никаких особенностей "современного мира", которые бы могли этому помешать, озвучено не было.
Цитата:
2. Сам MSDN говорит: ребята, не надо это использовать.
Опять "пойдите туда, не знаю куда".
MSDN слишком большой, чтобы такая ссылка могла восприниматься всерьез.
В "Войне и мире" что-то найти намного проще в силу гораздо меньшего объема.

Я даже верю Вам, что такое утверждение в MSDN есть (он настолько большой, что в нем можно найти ВСЕ!), но не верю, что это утверждение не обусловлено какими-либо дополнительными условиями, которые сильно сужают общность его применения.
Цитата:
Как будто эти "некоторые случаи" вас волшебным образом защитят от фундаментальных недостатков относительных путей.
Говорить, что у относительных путей есть фундаментальные недостатки - примерно то же самое, что говорить, что у цикла for есть фундаментальные недостатки.
Есть конструкция, которой удобно пользоваться в одних случаях, неудобно - в других, и категорически противопоказано - в третьих.
И ничего больше!
Неумелое использование любого инструмента - совсем не повод полностью от него отказаться.
Цитата:
Это замечательная аргументация. Мне удобно забивать гвозди отвёрткой, но это не делает это правильным.
Ваша аргументация: "Использование отвертки следует исключить, т.к. ею неудобно забивать гвозди".
Я лишь утверждаю, что не следует искусственно ограничивать количество используемых инструментов.
Цитата:
Я рекомендовал бы прочитать вот эти две статьи:
Прочитал.
Общее мнение высказал.
Если это Вас действительно интересует, могу высказать конкретные замечания - где что следует подправить, но это уже, естественно, только посредством личной переписки.

#28 04.04
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
По-моему тут у кого-то путаница в терминах.
Собственно, конструктивное обсуждение закончилось, произошел переход на личности.
В любом случае, я уже подробно разобрал все Ваши высказывания в своем сообщении №29.
Причем, были заданы конкретные вопросы, ни на один из которых ответа не последовало.
Цитата:
А вот объяснения, как вы собираетесь бороться с многопоточными проблемами относительных путей (да и даже просто вызовов в сторонний код), я так и не услышал.
А я не услышал формулировки имеющихся, по Вашему мнению, проблем, вызванных именно относительными путями. Без них невозможно привести объяснения.

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

Это правильные утверждения, которые с одной стороны ничуть не ограничивает количество допустимых способов адресовать файл, и с другой - обуславливает неверность Вашего утверждения, т.к. при соблюдении этих (более мягких!) правил работа с относительными путями к ошибкам не приводит.

#30 04.04
Цитата:
Сообщение от GunSmoker Посмотреть сообщение
...но не надо указывать другим на их "ошибки", если вы даже не можете понять о чём они говорят.
Не совсем так: я не могу узнать, о чем Вы думаете, т.к. не обладаю даром телепатии. О чем Вы говорите, я могу прочесть, но ввиду отсутствия аргументов не могу с этим согласиться, что отнюдь не свидетельствует об отсутствии с моей стороны возможности понимать.
Понимать и соглашаться - далеко не одно и то же!

Если у Вас есть что сказать, говорите аргументировано. Если аргументы кончились (еще не начавшись), честно признайте, что Ваше утверждение о недопустимости использования относительных путей было ошибкой.

Последний раз редактировалось s-andriano; 05.04.2013 в 17:32.
s-andriano вне форума Ответить с цитированием
Старый 23.04.2013, 16:15   #37
Devolarium
Форумчанин
 
Регистрация: 05.12.2011
Сообщений: 102
По умолчанию

Мда.. отличный холивар получился, все же со слов Пепла феникса, понял что что-то с правами, если кто знает где это можно изменить отпишитесь
Devolarium вне форума Ответить с цитированием
Старый 23.04.2013, 17:01   #38
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Только дать пользователю эти права на нужную папку, либо настройки (данные) хранить в пользовательском каталоге типа AppData. Ведь они специально для этого сделаны. А ещё лучше, если это настройки, хранить их в реестре в ветке HKCU.
FaTaL вне форума Ответить с цитированием
Старый 29.04.2013, 14:57   #39
Devolarium
Форумчанин
 
Регистрация: 05.12.2011
Сообщений: 102
По умолчанию

FaTaL, не знаю почему, но страшно в реестр лезть :D
Devolarium вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание папки 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