Главная страница
    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.74 MB
Время: 0.052 c
2-1164697460
Krab12345
2006-11-28 10:04
2006.12.17
Передача файлов


15-1164448485
Сергей Г
2006-11-25 12:54
2006.12.17
Та ли специальность выбрана?


15-1164729539
З@йк@!
2006-11-28 18:58
2006.12.17
Приветик!


11-1141387000
laune
2006-03-03 14:56
2006.12.17
А KOL с DELPHI 8 дружит?


2-1164798671
nali
2006-11-29 14:11
2006.12.17
Как спрятать форму при запуске программы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский