Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.17;
Скачать: CL | DM;

Вниз

Методики разработки в условиях нехватки ресурсов.   Найти похожие ветки 

 
Alex_p   (2006-11-23 07:34) [160]

Жалко что тему начатую Sergey Masloff испортили


 
SlymRO   (2006-11-23 08:00) [161]

KSergey ©   (23.11.06 7:28) [159]
Вранье. В COM - нет исключений. Поверьте уж. Только коды ошибок.

Вранье. E_FAIL - тоже исключительная ситуация только отформатированая под COM. Среда выполнения .Net сама конвертнет напогашенное исключение, в понятное COM менеджеру, и COM "вызывателю" сообщение-код. На COM уровне все что не S_OK - подобно Exception"у.


 
SlymRO   (2006-11-23 08:08) [162]

Удалено модератором


 
KSergey ©   (2006-11-23 08:14) [163]

Не разеляю ржачного настроения по данному вопросу, но дальше эту тему развивать не буду. Неочем.

А вот изначальная тема действительно весьма интересна (ведь ресурсов всехда не хватает. по определению), хотя и хороших постов по ней - крайне мало. Может кто-то еще выскажется.


 
SlymRO   (2006-11-23 08:25) [164]

KSergey ©   (23.11.06 8:14) [163]
хороших постов по ней - крайне мало

Согласен. И книг по теме мало. Я сейчас читаю книгу "Путь камикадзе" - про обреченные софтовые проекты и управление в них.


 
SlymRO   (2006-11-23 08:39) [165]

Удалено модератором


 
Anatoly Podgoretsky ©   (2006-11-23 09:18) [166]

> SlymRO  (23.11.2006 04:41:30)  [150]

> 3. Не стоит оставлять пустой except (НО ТОЛЬКО ПРИ ОСТРОЙ НЕОБХОДИМОСТИ, КОТОРУЮ НУЖНО ИСКОРЕНЯТЬ В ЗАЧАТКЕ).

Это никогда не нужно делать, поскольку всегда можно написать

except
  on E:Exception do begin
     ErrorMsg := E.Message;
//   Log(ErrorMsg);
     Exit;
  end;
end;

Что позволит поставить точку останова и проанализировать в отладчике. И ловить не надо, просто поставить точку и ждать.


 
Piter ©   (2006-11-23 17:54) [167]

SlymRO   (23.11.06 4:41) [150]
Не стоит терять ссылку на созданный объект, без 100% гарантии что другой объект контейнер взял над ним Ownership - TaskManager.AddTask(TTask.Create(cFormateDisk, s))


в целом да. Но пример показывал не те аспекты, к которым вы придираетесь. Пример показывал прототип ситуации, когда except пустой. В частности, ситуация, когда в except должен быть задан код ошибки, который уже задан по дефолту, надо его просто оставить.

Что касается терять ссылку - то это может быть вполне самодостаточный класс, например потомок от TThread, который полностью себя сам уничтожит в конце работы.
Хотя идеологически верней контролировать, конечно.

Соответственно, пункт 2 тоже не совсем в кассу.

SlymRO   (23.11.06 4:41) [150]
Result := -1; в начале процедуры, может не гарантировать сохранение результата после Исключения!


ну ты просто бредишь. И твои примеры полностью идентичны по функционалу, ничего переписывать не надо.

Result - это просто ПЕРЕМЕННАЯ. Ты хочешь сказать, что в таком коде:

a := 5;
try
 TSomeObject.create(...);
except
end;
ShowMessage(IntToStr(i));


переменная "a" может изменить свое значение с пятерки?


 
Piter ©   (2006-11-23 18:02) [168]

Удалено модератором
Примечание: Выражения выбираем


 
Romkin ©   (2006-11-23 18:28) [169]

SlymRO   (23.11.06 08:00) [161]

> Вранье. В COM - нет исключений. Поверьте уж. Только коды
> ошибок.

Как объяснить наличие IErrorInfo? Там есть исключения. Механизм передачи информации в данном случае не имеет значения. Более того, в .NET COM генерирует именно исключения.


 
Kerk ©   (2006-11-23 19:02) [170]

[159] KSergey ©   (23.11.06 07:28)
> WinAPI предоставляет средства для работы с исключениями?
> Может я чего не знаю?

SEH


 
SlymRO   (2006-11-24 07:48) [171]

Piter ©   (23.11.06 17:54) [167]
Result - это просто ПЕРЕМЕННАЯ. Ты хочешь сказать, что в таком коде:
a := 5;
try
TSomeObject.create(...);
except
end;
ShowMessage(IntToStr(i));
переменная "a" может изменить свое значение с пятерки?

Влегкую... Переменная это память, а память можно write: Стоит в TSomeObject.create(...) некорректно поработать с памятью/стеком или регистрами, и вуаля - в "a" мусор...

program Project2;

{$APPTYPE CONSOLE}

uses
 SysUtils;
var a:integer;

type
 TSomeObject=class
 public
   constructor Create;
 end;

constructor TSomeObject.Create;
var p:pinteger;
begin
 p:=pointer($40300C);
 p^:=25;
 abort;
 inherited;
end;

begin
 a:=5;
 try
   TSomeObject.create();
 except
 end;
 writeln(IntToStr(a));
 readln;
end.


 
Piter ©   (2006-11-24 18:52) [172]

SlymRO   (24.11.06 7:48) [171]
p:=pointer($40300C);


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

SlymRO   (24.11.06 7:48) [171]
Влегкую... Переменная это память, а память можно write: Стоит в TSomeObject.create(...) некорректно поработать с памятью


нет, ну понятно, что целенаправленно можно и значения КОНСТАНТ изменять. Но что теперь, говорить о том, что константы - на самом деле не константы? :)))



Страницы: 1 2 3 4 5 вся ветка

Текущий архив: 2006.12.17;
Скачать: CL | DM;

Наверх




Память: 0.75 MB
Время: 0.071 c
2-1164540453
doncova1
2006-11-26 14:27
2006.12.17
как изменить заглавие столбцов таблицы


15-1164474872
Kolan
2006-11-25 20:14
2006.12.17
Где взять иконку чипа?


2-1164884098
KyRo
2006-11-30 13:54
2006.12.17
Как узнать размер файла


15-1164392721
antonn
2006-11-24 21:25
2006.12.17
Протестируйте, пожалуйста, скрипт


2-1164618841
alex810
2006-11-27 12:14
2006.12.17
DBVhart