Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Вниз

Ода молодому поколению   Найти похожие ветки 

 
pasha_golub ©   (2011-09-07 15:44) [120]

Вообщем, по результам ветки готов взять Sha © к себе студентом. Не знаю, научу ли программировать, но сало с водкой употреблять возможно :)


 
Anatoly Podgoretsky ©   (2011-09-07 15:58) [121]

> Компромисс  (07.09.2011 10:12:13)  [73]

А зачем вторая переменная, одной что ли не хватает?


 
Компромисс   (2011-09-07 15:59) [122]

pasha_golub ©   (07.09.11 15:43) [119]

Я прямо в браузере ответ писал.


 
Anatoly Podgoretsky ©   (2011-09-07 15:59) [123]

> Kerk  (07.09.2011 10:47:17)  [77]

Уменьшить энтропию вселенной.


 
Sha ©   (2011-09-07 16:34) [124]

> Не знаю, научу ли программировать, но сало с водкой употреблять возможно :)

Заметь, не я это предложил )


 
Romkin ©   (2011-09-07 16:47) [125]

А можно я напачкаю кодом? :)
program RecursiveList;

{$APPTYPE CONSOLE}

uses
 SysUtils;

type
 TList = class
 private
   FKey: Word;
   FTail: TList;
   function TailReverse: TList;
 public
   constructor Create(AKey: Word);
   destructor Destroy; override;
   function Add(AList: TList): TList;
   class procedure Reverse(var AList: TList);
   property Key: Word read FKey;
 public
   type
     TListEnumerator = class
     private
       FList: TList;
       function GetCurrent: TList;
     public
       constructor Create(AList: TList);
       property Current: TList read GetCurrent;
       function MoveNext: Boolean;
     end;
   function GetEnumerator: TListEnumerator;
 end;

{ TList }

function TList.Add(AList: TList): TList;
begin
 if not assigned(FTail) then
   FTail := AList
 else
   FTail.Add(AList);
 Result := Self;
end;

constructor TList.Create(AKey: Word);
begin
 FKey := AKey;
end;

destructor TList.Destroy;
begin
 FTail.Free;
 inherited;
end;

function TList.GetEnumerator: TListEnumerator;
begin
 Result := TListEnumerator.Create(Self);
end;

class procedure TList.Reverse(var AList: TList);
begin
 if not assigned(AList) then
   exit;
 AList := AList.TailReverse;
end;

function TList.TailReverse: TList;
begin
 if not assigned(FTail) then
   Exit(Self);
 Result := FTail.TailReverse;
 FTail := nil;
 Result.Add(Self);
end;

{ TList.TListEnumerator }

constructor TList.TListEnumerator.Create(AList: TList);
begin
 FList := AList;
end;

function TList.TListEnumerator.GetCurrent: TList;
begin
 Result := FList;
 FList := FList.FTail;
end;

function TList.TListEnumerator.MoveNext: Boolean;
begin
 Result := assigned(FList);
end;

procedure PrintList(AList: TList);
var
 Node: TList;
begin
 for Node in AList do
   write(Node.Key, " ");
 writeln;
end;

var
 List: TList;

begin
 ReportMemoryLeaksOnShutdown := True;
 try
   List := TList.Create(1);
   try
     List.Add(TList.Create(2)).Add(TList.Create(3)).Add(TList.Create(4));
     PrintList(List);
     TList.Reverse(List);
     PrintList(List);
   finally
     List.Free;
   end;
 except
   on E: Exception do
     Writeln(E.ClassName, ": ", E.Message);
 end;
 readln;
end.

Вроде не ошибся...


 
Павел Калугин ©   (2011-09-07 17:08) [126]

Ромкин, тож к Пашке собеседуесси на сало с горилкой?


 
Romkin ©   (2011-09-07 17:12) [127]

Дык завсегда! :D
Код, кстати, на троечку :(


 
Игорь Шевченко ©   (2011-09-07 17:21) [128]

Romkin ©   (07.09.11 16:47) [125]


>  except
>    on E: Exception do
>      Writeln(E.ClassName, ": ", E.Message);
>  end;


а это зачем ?
Это уже на двоечку


 
Sha ©   (2011-09-07 17:38) [129]

> Romkin

на мой вкус, class procedure ничуть не лучше процедуры внутрях метода


 
Romkin ©   (2011-09-07 18:02) [130]


> а это зачем ?Это уже на двоечку

А чем тебе не понравился стандартный перехватчик?


 
Romkin ©   (2011-09-07 18:02) [131]


> на мой вкус, class procedure ничуть не лучше процедуры внутрях
> метода

Надо было просто попереставлять ключи :)


 
Игорь Шевченко ©   (2011-09-07 19:28) [132]


> А чем тебе не понравился стандартный перехватчик?


во-первых, тем, что он глушит исключение
во-вторых тем, что он здесь лишний


 
Romkin ©   (2011-09-07 19:42) [133]

Он не глушит исключение, а выдает его на экран с завершением работы. И ничего не лишний, это гораздо приятнее чем без него.


 
Игорь Шевченко ©   (2011-09-07 20:35) [134]

Romkin ©   (07.09.11 19:42) [133]


> Он не глушит исключение, а выдает его на экран с завершением
> работы


Вот скажи пожалуйста, тебе, как пользователю, что будет радости в выданном сообщении на экран ? Ты узнаешь, где ошибка ? Ты узнаешь, почему ошибка ?
Нет, ты увидишь: "Произошла ошибка". И все. Это и есть - глушить исключение.


 
pasha_golub ©   (2011-09-07 20:49) [135]


> Павел Калугин ©   (07.09.11 17:08) [126]
>
> Ромкин, тож к Пашке собеседуесси на сало с горилкой?

Я вас без собеседования возьму! :)


 
Думкин ©   (2011-09-08 07:14) [136]


> Дык это ж всё таки "Минёр", а не "Шахтёр". Порой приходиться
> угадывать. Не угадал - начинай новую жизнь! :)
>

Они разные есть. Есть варианты в которых избегаются ситуации выбора.


 
asail ©   (2011-09-08 07:41) [137]


> Игорь Шевченко ©   (07.09.11 20:35) [134]

> Нет, ты увидишь: "Произошла ошибка". И все.

Неа. Игорь, у него там выводится что именно за ошибка - имя класса ошибки и сообщение... Чего же более?


 
Slym ©   (2011-09-08 08:53) [138]

предлагается задать ему переделать сей проект на сетку 6*6 и ограничить во времени дать пару часов...
не дожидаясь окончания выхода времени "передумать" на сетку 6*5 :)
и дать еще 2 часа

мотивировать что типа бурно текущее время, нужно типа адаптироваться под реалии, и что завтра может понадобиться сетка 100*100


 
Думкин ©   (2011-09-08 09:15) [139]


> Slym ©   (08.09.11 08:53) [138]

А еще лучше и форму ячеек поменять - под соты, например.


 
Inovet ©   (2011-09-08 09:41) [140]

> [139] Думкин ©   (08.09.11 09:15)
> и форму ячеек поменять - под соты, например

А как же батоны кадать, это же сразу разрыв шаблона.


 
pasha_golub ©   (2011-09-08 10:43) [141]

Гексаугольльные баттоны!  Уау, класс! :)


 
Romkin ©   (2011-09-08 10:43) [142]


> Вот скажи пожалуйста, тебе, как пользователю, что будет
> радости в выданном сообщении на экран ? Ты узнаешь, где
> ошибка ? Ты узнаешь, почему ошибка ?Нет, ты увидишь: "Произошла
> ошибка". И все. Это и есть - глушить исключение.

То есть как? Выдается класс исключения и сообщение из этого исключения. Что еще-то надо?! Не будет перехвата - вот тогда и будет чудесное "Программа выполнила операцию... Сообщить?"


 
Romkin ©   (2011-09-08 10:45) [143]


> А еще лучше и форму ячеек поменять - под соты, например.

Не дай бог! Напишет же кривой компонент "шестиугольный баттон" и заставит поставить еще.


 
Игорь Шевченко ©   (2011-09-08 11:12) [144]


> Не будет перехвата - вот тогда и будет чудесное "Программа
> выполнила операцию... Сообщить?"


Вот это и надо оставить - таим полезной информации куда больше, чем в твоем куцем сообщении


 
Anatoly Podgoretsky ©   (2011-09-08 11:32) [145]

> Игорь Шевченко  (08.09.2011 11:12:24)  [144]

Но только не "Сообщить?", а "Послать"


 
pasha_golub ©   (2011-09-08 12:21) [146]


> Игорь Шевченко ©   (08.09.11 11:12) [144]


> Вот это и надо оставить - таим полезной информации куда
> больше, чем в твоем куцем сообщении

А пользователь ее запомнит, чтобы передать? Я лично по этому поводу люблю EurekaLog. Там тебе чего душа пожелает, и стек вызовов, и память, и модули... И сообщение об ошибке пользователя не пугает.


 
Игорь Шевченко ©   (2011-09-08 13:41) [147]

pasha_golub ©   (08.09.11 12:21) [146]

Мы не о любви, а о том, что глушить исключения не надо :)

Передаст тебе пользователь, что была ошибка EHeapError: Out of Memory
радости тебе и пользователю с этой передачи ?


 
Romkin ©   (2011-09-08 14:21) [148]

А от стандартного виндового окна какая радость пользователю и мне?

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


 
Romkin ©   (2011-09-08 14:28) [149]

Да даже больше могу сказать: Out of memory в частности вполне достаточно, и исчерпывающей информации где оно возникло вообще не надо: проблема скорее всего вообще не там.
Было такое, жрется память, сервер приложений выдает OutOfMemory. И что? Выдавал-то он, а утечка в Firebird была.


 
Ega23 ©   (2011-09-08 14:41) [150]


> Выдавал-то он, а утечка в Firebird была.


FierBird - ну ты понел...  :)


 
Игорь Шевченко ©   (2011-09-08 15:18) [151]


> Вообще в простом демонстрационном приложении в десяток строк
> полностью смонтированный контроль ошибок выглядит странно


Поэтому обработку исключений оттуда надо выпилить


 
Jeer ©   (2011-09-08 15:30) [152]

В ночь с 17 на 18 августа "Протон-М" с разгонным блоком "Бриз-М" и новейшим спутником связи "Экспресс-АМ4" стартовал с Байконура. До 325-й секунды полет шел в штатном режиме, однако после четвертого включения разгонного блока связь с объектом была потеряна.

Причина выяснится довольно скоро: виновным признают программиста, формировавшего полетное задание. Он допустил ошибку, в результате которой разгонный блок отработал, как положено, но потерял направление и неверно ориентировался в пространстве. В итоге спутник, страховка которого составила более 7,5 млрд руб., был утерян. А вместе с ним — одно из важнейших звеньев реализации федеральной целевой программы "Развитие цифрового телерадиовещания в РФ на 2009-2015 годы"


 
Kerk ©   (2011-09-08 15:42) [153]


> Jeer ©   (08.09.11 15:30) [152]

В таких местах малоадекватные старперы программистами работают, как ни жаль. На те зарплаты больше никто не идет.


 
Romkin ©   (2011-09-08 15:44) [154]


> Поэтому обработку исключений оттуда надо выпилить

Данная обработка рекомендована производителем и не приводит к показу диалогового окна, бесполезного в данном случае. Не вижу оснований.


 
Игорь Шевченко ©   (2011-09-08 15:46) [155]

Romkin ©   (08.09.11 15:44) [154]

Ссылочку на рекомндацию производителя ?

Kerk ©   (08.09.11 15:42) [153]

Источник достоверной информации ?


 
Romkin ©   (2011-09-08 15:47) [156]


> Ссылочку на рекомндацию производителя ?

Создай консольное приложение и там будет этот обработчик. Я считаю результат работы визарда "от производителя" его рекомендацией.


 
Inovet ©   (2011-09-08 15:51) [157]

> [153] Kerk ©   (08.09.11 15:42)
> На те зарплаты больше никто не идет.

Для регионов там хорошие зарплаты.

"Виновным признали программиста" что признали верится, но что он один виновен не верится. Там ведь проверяют всё это бортовое ПО на испытательных комплексах, насколько я знаю. Или тут речь идёт о чём-то несовсем программистском.


 
Kerk ©   (2011-09-08 15:51) [158]


> Игорь Шевченко ©   (08.09.11 15:46) [155]
>
> Kerk ©   (08.09.11 15:42) [153]
>
> Источник достоверной информации ?

Личный опыт. Видел кто работает в госструктурах и оборонке.
Я даже с ними немного поработал. Это ужасно.


 
Игорь Шевченко ©   (2011-09-08 16:01) [159]

Kerk ©   (08.09.11 15:51) [158]

На твой личный опыт есть чужой личный опыт. А понаблюдав, например, за вопросами, темами и ответами на этом  сайте можно тоже выводов о программистах на Delphi понаделать - мало не покажется.

Romkin ©   (08.09.11 15:47) [156]

Создал. File|New console application

Вот что получилось - никакой обработки исключений

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

begin
 { TODO -oUser -cConsole Main : Insert code here }
end.


Delphi 2006

В 2010 действительно так, как ты пишешь:

program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils;

begin
 try
   { TODO -oUser -cConsole Main : Insert code here }
 except
   on E: Exception do
     Writeln(E.ClassName, ": ", E.Message);
 end;
end.


уроды


 
Romkin ©   (2011-09-08 16:15) [160]

Почему? Простейший глобальный обработчик.
Выдачу диалогового окна из консольного приложения я считаю вообще недопустимым: ошибка должна рапортоваться в stderr (хотя и в stdout тоже допустимо), плюс ExitCode устанавливаться. И для этого есть несколько простых причин.
И тем более меня удивляет твое неприятие этого.



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

Форум: "Прочее";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.81 MB
Время: 0.035 c
1-1278075174
ifmomax
2010-07-02 16:52
2012.01.01
Windows-service.Некорректное чтение бинарного файла.


2-1316667091
JamesQ
2011-09-22 08:51
2012.01.01
Word+Delphi


15-1316092006
Железкин
2011-09-15 17:06
2012.01.01
не включается комп, может кто сталкивался?


2-1316610955
Псарь
2011-09-21 17:15
2012.01.01
Мерцает окно при изменении размеров.


2-1316878318
Gu
2011-09-24 19:31
2012.01.01
перечисляемые типы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский