Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  05:10[Войти] | [Зарегистрироваться]
Обсуждение темы:
Можно, но не нужно.


Последнее время я не программирую, а рaзгpебаю зaвалы которые оставили до меня покoления программистов. Чтобы внести минимальное декоративное изменение требуется исправить несколько модулей и потратить несопоставимую по сложности работу по выискиванию всех мест, в которые надо внести изменения.
Дело в том, что тем методы, которые допустимы в примерах, олимпиадах и лабах по программированию, совершенно неприемлемы при создании крупных и долгоживущих прикладных программ.
Предлагаю в этой теме публиковать примеры, как не надо программировать на Delphi, что бы потом не было мучительно больно от встречи с теми, кто исправлял твой код.

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 421 сообщение

Добавить свое сообщение

Отслеживать это обсуждение
<<<... | 231—222 | 221—212 | 211—202 | ...>>>
Всего сообщений в теме: 421; страниц: 43; текущая страница: 21


№ 221   19-05-2008 08:45 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 220« (DRON)
___________________________
Да бог его знает. Тут придется очень аккуратно все прорабатывать и тестировать, так как этими вещами я не особо плотно не занимался. А в случае передачи информации через возвращаемое значение функции все выглядит проще и понятнее.
 Geo


№ 220   19-05-2008 08:33 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 219« (Geo)
___________________________
То есть одна команда может начать прочесывакть кучу файлов, а в этих файлах содержитмся информация о других файлах. И я не хочу брать на себя решение о прерывании всей работы из-за того, что один файл не читается.
Может тогда какое нибудь событие типа OnError(E:Exception;var Handled:Boolean) сделать.
 DRON


№ 219   19-05-2008 06:49 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 218« (Ins)
___________________________
В моем случае прсото идет обработка взаимосвязанных файлов. То есть одна команда может начать прочесывакть кучу файлов, а в этих файлах содержитмся информация о других файлах. Ну, это так... примерно. И я не хочу брать на себя решение о прерывании всей работы из-за того, что один файл не читается. Пусть пользователь сам решает, так ли уж необходим этот  или забить на него и продолжить дальше. Поэтому и решил в первом приближении сделать функцию, кототорая возвращает true или false в зависимости от того, была ошибка или нет. А содержательный результат возвращает через параметр OUT.

Впрочем, это пока только первое приближение. Возможно, еще все несколько раз поменяется.
 Geo


№ 218   19-05-2008 06:07 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 217« (Geo)
___________________________

Возможно, вынести чтение из файла в отдельную функцию, заключив в TRY-EXCEPT, дабы погасить исключение.

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


№ 217   19-05-2008 04:44 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 215« (panda)
___________________________
>>> Если произойдет исключение, результат функции все равно не будет обработан в вызывающем коде.
Хех! А вот об этом я не подумал (или не знал). Надо будет покумекать. Я то надеялся на возврат false в случае ошибки чтения. Надо будет поглубже поковыряться. Возможно, вынести чтение из файла в отдельную функцию, заключив в TRY-EXCEPT, дабы погасить исключение.
 Geo


№ 216   19-05-2008 04:18 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 215« (panda)
___________________________

Так даже логичнее
>>> Чем?

Тем, что ближе к источнику возможных проблем и поэтому нагляднее... О том, что исключение вылетает наружу, и в этом случае ни о каком Result речи быть не может, сразу что-то не подумал. Но потом поправился... Хотел ещё пару слов добавить, но вы меня опередили...


№ 215   19-05-2008 03:45 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 212« (Geo)
___________________________

в Delphi 7 является источником хинта, что присвоенное в первой строчке значение false нигде не используется.
Правильно. А зачем это присваивание нужно? Если произойдет исключение, результат функции все равно не будет обработан в вызывающем коде.


Ответ на »сообщение 213« (Бел Амор)
___________________________

Так даже логичнее
Чем?


№ 214   19-05-2008 03:38 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 213« (Бел Амор)
___________________________

>>>А почему бы и нет? Так даже логичнее:

Хотя на самом деле, поскольку мне не нужны вылетающие наружу исключения, я скорее всего написал бы примерно так:

function SomeFunc(const FileName : String) : Boolean;
var
  List : TStringList;
begin
  List:=TStringList.Create;
  try
    List.LoadFromFile(FileName);
    // proceed List
    Result:=true;
  except
    Result:=false;
  end;
  List.Free;
end;

P.S. (to Geo) И вы тоже сразу так написали бы, если бы обратили внимание на предупреждение... :)


№ 213   19-05-2008 03:26 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 212« (Geo)
___________________________


Долго медитировал, бороться с данным хинтом или нет :D

А почему бы и нет? Так даже логичнее:

function SomeFuncSRC(const FileName : String) : Boolean;
var
  List : TStringList;
begin
  List:=TStringList.Create;
  try
    Result:=false;
    List.LoadFromFile(FileName);
    // proceed List
    Result:=true;
  finally
    List.Free;
  end;
end;



№ 212   19-05-2008 03:04 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 211« (Cepгей Poщин)
___________________________
Во-первых, про "крупнсоть" и "долгоживучесть" ничего не говорилось. Варнингов быть не должно и точка. Во-вторых, это все же альфа-версия (пусть и мелкой утилиты). И не исключено, что конечный вариант также будет включать TShellTreeView (удобная штука).

Еще пример для борцов с варнингами и хинтами.

Вот такой примерно код:

function SomeFunc(const FileName : String) : Boolean;
var
  List : TStringList;
begin
  Result:=false;
  List:=TStringList.Create;
  try
    List.LoadFromFile(FileName);
    // proceed List
    Result:=true;
  finally
    List.Free;
  end;
end;


в Delphi 7 является источником хинта, что присвоенное в первой строчке значение false нигде не используется. Долго медитировал, бороться с данным хинтом или нет :D
 Geo


<<<... | 231—222 | 221—212 | 211—202 | ...>>>
Всего сообщений в теме: 421; страниц: 43; текущая страница: 21


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования