Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему так не любят Delphi? 
:(
    Опции темы
drkot
Дата 27.8.2013, 18:51 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(LSD @  27.8.2013,  15:46 Найти цитируемый пост)
нормально перехватывались все ошибки

не уходите от вопроса сударь. 
Гав и в кусты это как-то мелко для модератора... Говорит разве что о скрытом тролле...


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
kemiisto
Дата 27.8.2013, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(drkot @  27.8.2013,  17:51 Найти цитируемый пост)
Говорит разве что о скрытом тролле...

Вы так говорите "тролль", как будто в этом есть что-то плохое.

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

Да и бог то с ним, собственно. Это всё частности.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
drkot
Дата 27.8.2013, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(kemiisto @  27.8.2013,  21:27 Найти цитируемый пост)
With таки не нужен, да. Я его, помнится, никогда и не использовал. Абсолютно бесполезный синтаксичейский сахар

на чем пишите?

Цитата(kemiisto @  27.8.2013,  21:27 Найти цитируемый пост)
Это всё частности

а мы как раз о них


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
kemiisto
Дата 27.8.2013, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(drkot @  27.8.2013,  20:41 Найти цитируемый пост)
на чем пишите?

Самоделку тут одну крапаю на Java. Java - не предел мечтаний, конечно, зато стабильность тут, я Вам скажу, похлеще путинской будет. smile 
Тут давече прикручивал ray tracer один, дык аж 2007 года выпуска, и всё завелось.
И не надо ничего компилировать, линковать, ... smile 

И, к разговору о сахаре, в Java с этом "туго". Многим не нравится. А мне вот - самый самолёт.

Цитата(drkot @  27.8.2013,  20:41 Найти цитируемый пост)
а мы как раз о них 

Хм... Разве? Неужели Вы думаете, что Delphi не любят за with? smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Akella
  Дата 27.8.2013, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(LSD @ 27.8.2013,  15:46)
Цитата(Akella @  16.8.2013,  14:34 Найти цитируемый пост)
ну обрамляй код в try/finally try/excep 

Ну и толку от от этого вашего with ноль тогда, один вред. Перепеши функцию:
Код

function GetAdPrefix:string;
begin
  with TIniFile.Create(sMyDocAppPath + 'kvx.ini' ) do
    begin
      result := ReadString('AD','Prefix', '');
      free;
    end;
end;

так чтобы там нормально перехватывались все ошибки (открытие/запись/закрытие файла) и увидишь что от with одни проблемы.

Дело в том, что программист, используя try except/finally, может не травмировать психику пользователя страшными и непонятным табличками окнами и текстами, а не дай бог ещё и звуками...
Можно записать ошибку в лог или ещё что-то сделать.
Можно не показывать сообщения, а тихонько и корректно её обработать.
Можно сделать всё вышеуказанное и потом показать страшный текст исключения.

Добавлено через 5 минут и 7 секунд
Вот примерно так:

Код

function GetAdPrefix:string;
begin
  with TIniFile.Create(sMyDocAppPath + 'kvx.ini' ) do
  try
     result := ReadString('AD','Prefix', '');
  except//если произошла ошибка
      on e:excepttion do
      begin//можно отлавливать разные типы и классы исключений и реагировать в зависимости от класса исключения
        free;
        Log('ОШИБКА: ' + e.Message);// у e. есть и другие поля
        raise;// и показываем стандартное окно исключения, т.е. подымаем исключение на уровень выше
     end;//on
  end;// try-except
end;


Добавлено через 8 минут и 15 секунд
Цитата(kemiisto @  27.8.2013,  21:27 Найти цитируемый пост)
With таки не нужен, да. Я его, помнится, никогда и не использовал. Абсолютно бесполезный синтаксичейский сахар.

Иногда уменьшает объем кода и читабельность.
Никто не говорит, что если With есть, то его нужно использовать всегда и везде.
Пользуйся с умом и будет тебе счастье.
Или не пользуйся. Дело твоё. Это же не обязаловка!
PM MAIL   Вверх
drkot
Дата 28.8.2013, 04:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(kemiisto @  27.8.2013,  22:05 Найти цитируемый пост)
И не надо ничего компилировать, линковать

это конечно плюс, возразить нечего

Цитата(kemiisto @  27.8.2013,  22:05 Найти цитируемый пост)
Delphi не любят за with

Delphi не любят по тем же причинам по которым не любят С, Java, ABAP, WEB и все прочее. То есть не любят концептуально, без причин. Как в общем то и во и во всех других предпочтениях человеков. Кому-то нравятся блондинки, а кому-то брюнетки, а кто-то неровно дышит к рыжим. И какие этому причины?

А "with" именно в Delphi использовать надо, так как эта конструкция приносит реальные выгоды (о чем было написано ранее; и что примечательно, ни кто не опровергнул, видать правильно написано). В других языках (компиляторах) подобная конструкция может быть полностью бутафорской и кроме сокращения длинны ничего не давать, и использовать ее можно разве что для личного удовольствия.

Цитата(kemiisto @  27.8.2013,  21:27 Найти цитируемый пост)
Вы так говорите "тролль", как будто в этом есть что-то плохое.

Просто, хотелось бы, больше адекватности от "уважаемых" людей. Все таки не репортеры желтой прессы...
А что касается "тролля", то если пост последнего, даже на мгновение, не зацепил, то это очень плохой "тролль", и ни то что платить, гнать таких надо. К сожалению профи в этом бизнесе не много... хотя может это и к лучшему.

Akella, да нет в твоем коде никаких проблем. В худшем случае прочитается пустая строка, а все ошибки обработаются внутри класса. 
А если LSD великий кодер, то он должен знать что исключения это зло и все надо делать на ифах, как по мне это каждый сишник должен генетически знать. А те которые не знают есть поддельные сишники, и следовательно не имеют права учить юниоров и прочих  smile 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
k0rvin
Дата 28.8.2013, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(Akella @  27.8.2013,  22:53 Найти цитируемый пост)
Вот примерно так:

Кажется, ты забыл еще один free в try после result := ...


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Akella
Дата 28.8.2013, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 1
Всего: 329



Цитата(drkot @  28.8.2013,  04:07 Найти цитируемый пост)
Akella, да нет в твоем коде никаких проблем. В худшем случае прочитается пустая строка, а все ошибки обработаются внутри класса. 

это лишь пример на основе ini-файла, другие примеры с классами приводить лень, не вижу смысла

Добавлено через 26 секунд
кстати, при чтении файла с диска может исключение

Добавлено через 1 минуту и 20 секунд
Цитата(k0rvin @ 28.8.2013,  06:51)
Цитата(Akella @  27.8.2013,  22:53 Найти цитируемый пост)
Вот примерно так:

Кажется, ты забыл еще один free в try после result := ...

да

Добавлено через 1 минуту и 52 секунды
Код

function GetAdPrefix:string;
begin
  with TIniFile.Create(sMyDocAppPath + 'kvx.ini' ) do
  try
     result := ReadString('AD','Prefix', '');
     free;
  except//если произошла ошибка
      on e:excepttion do
      begin//можно отлавливать разные типы и классы исключений и реагировать в зависимости от класса исключения
        free;
        Log('ОШИБКА: ' + e.Message);// у e. есть и другие поля
        raise;// и показываем стандартное окно исключения, т.е. подымаем исключение на уровень выше
     end;//on
  end;// try-except
end;

PM MAIL   Вверх
LSD
Дата 28.8.2013, 13:40 (ссылка)   | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



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


Для примера как это выглядит в языке где есть try with resource:
Код

    public static void foo() {
        try (FileWriter writer = new FileWriter("some_file.txt")) {
            writer.write("Delphi sucks");
        } catch (Exception e) {
            logger.error("Error! Uninstall Delphi and try again", e);
        }
    }



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Alexeis
Дата 28.8.2013, 13:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Да, в делфи при работе с файлами нужен двойной try. Это известно.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
drkot
Дата 29.8.2013, 15:30 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



LSD, тебе сударь привели аргументы на
Цитата(LSD @  8.8.2013,  13:27 Найти цитируемый пост)
Ты пока что аргументов тоже не привел, даже не расписал чем так хорош with. Зато моя персона тебе покоя не дает, каждый пост надо прокоментить.

Какие претензии к аргументам?
Или как обычно? Не читал, но осуждаю? Пока что, сударь, видно что Вы ламер, не способный аргументировать свою точку зрения, но при этом исправно набиваете тему постами по пару слов, не конструктивного содержания.

LSD, учитесь конструктивно спорить, того гляди и к Вам начнут уважительно относиться! Или думаете, что Ваш дискурс не о чем, чего-то стоит? Если не можешь написать ничего нового, не пиши.

Вот варианты кода полностью перехватывающие исключения
Вариант 1
Код

function GetAdPrefix:string;
var
  lIF: TIniFile;
begin
  try
    lIF:= TIniFile.Create(sMyDocAppPath + 'kvx.ini' );
    with lIF do try
     result := ReadString('AD','Prefix', '');
    finally
     free;
    end;
  except on E: Exception do
    Log('ОШИБКА: ' + e.Message);
    FreeAndNil(lIF);
     result := '';
  end;
end;

Вариант 2
Код

function GetAdPrefix:string;
var
  lIF: TIniFile;
begin
  try
    lIF:= TIniFile.Create(sMyDocAppPath + 'kvx.ini' );
    with lIF do try
      try
        result := ReadString('AD','Prefix', '');
      except
        // обработка исключений работы с фалом
      end
    finally
     free;
    end;
  except on E: Exception do
     // обработка исключений создания / уничтожения объекта
  end;
end;

Как и писалось ранее, создание объекта без явного присвоения это не то для чего нужно использовать with.
А примеров кода такого использования валом, только по причине отсутствия мозгов в головах книго и мано писателей, которые сегодня пишут "библию" для Delphi, а завтра "библию" для Java, С++ и т.д.. При этом заготовка под книгу одна, только ключевые слова в примерах меняют. Вот так начитаются таких книг и кичатся что пишут на 10 языках и под 30 технологий, а по факту ни одного не знают даже на среднем уровне, не говоря о тонкостях.



--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
LSD
Дата 29.8.2013, 16:12 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(drkot @  29.8.2013,  16:30 Найти цитируемый пост)
Как и писалось ранее, создание объекта без явного присвоения это не то для чего нужно использовать with.
А примеров кода такого использования валом, только по причине отсутствия мозгов в головах книго и мано писателей, которые сегодня 

Я бы на месте Akella, обиделся и забанил бы тебя smile 


Цитата(drkot @  29.8.2013,  16:30 Найти цитируемый пост)
LSD, тебе сударь привели аргументы на

Уже на ты smile Выпендреж с Вы надоел? smile Про твой ответ, я просто забыл, но раз настаиваешь, то отвечу:

Цитата(drkot @  10.8.2013,  23:09 Найти цитируемый пост)
хорошесть, (ну кроме бурно обсуждаемых уменьшения численности буков, что неизменно улучшает читаемости кода) заключается в ускорении доступа к контексту объектов (или структур) обернутых в with. Если на пальцах, то при обращении элементу объекта идет сначала определение смещения на объект, а потом внутреннее смещение на элемент, при обертке with смещение на объект запоминается, что уменьшает количество "лишних" вызовов.

1. Кто сказал что компилятор должен запоминать смещение на объект? Ссылку на language specification где явно написано что компилятор должен вести себя именно так.
2. Как я уже писал 
Цитата(LSD @  7.8.2013,  15:42 Найти цитируемый пост)
with это костыль для убогих ЯП не позволяющих объявить переменную по месту.

объявление переменно даст тот же самый эффект но при мы точно знаем как себя в этом случае ведет компилятор.
3. Даже без всего этого, современные компиляторы (я не про компилятор дельфей) достаточно интелектуальный, чтобы понять что в этом блоке кода стоит сделать introduce variable.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
k0rvin
Дата 29.8.2013, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(drkot @  29.8.2013,  15:30 Найти цитируемый пост)
Вариант 2

Трай на трае и траем погоняет, мда...


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
drkot
Дата 29.8.2013, 17:23 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Цитата(LSD @  29.8.2013,  16:12 Найти цитируемый пост)
Уже на ты  Выпендреж с Вы надоел? 

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

Цитата(LSD @  29.8.2013,  16:12 Найти цитируемый пост)
1. Кто сказал что компилятор должен запоминать смещение на объект?

а кто ему запрещает? или есть законы LSD для компиляторов, в коих это запрещено?   
Цитата(LSD @  29.8.2013,  16:12 Найти цитируемый пост)
Как я уже писал

как ты уже писал, не умеешь не пользуйся
Цитата(LSD @  29.8.2013,  16:12 Найти цитируемый пост)
3. Даже без всего этого, современные компиляторы

Кому должны? Или это еще один закон LSD? Давай ссыль на собрание "Законов LSD". Думаю всем будет интересно.
Цитата(LSD @  29.8.2013,  16:12 Найти цитируемый пост)
стоит сделать introduce variable

даже не знаю... наверное глупо объяснять что либо тому кто не хочет (может) понять.
Собственно ни чего не поменялось, аргументов 0, пафоса вагон.

LSD, вообще мну тебя либить, искренне и беззаветно. Ибо чем больше таких как ты тем лучше мне живется. Можно сказать что ты наделяешь мою жизнь смыслом. А то мне, время от времени, становится жаль убогих сотрудников... угрызения совести и т.д. ... Единственное, хочу предложить аудит персонала для фирмы в которой ты работаешь, подскажи название и адресок, а?

Добавлено через 1 минуту и 41 секунду
Цитата(k0rvin @  29.8.2013,  16:35 Найти цитируемый пост)
Трай на трае и траем погоняет, мда...

возражения по существу есть?
или так... ИМХО в слух?


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Zloxa
Дата 29.8.2013, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(drkot @  29.8.2013,  18:23 Найти цитируемый пост)
наверное глупо объяснять что либо тому кто не хочет (может) понять.

Это в точку!

Объяснять очевидную глупость тому, кто эту глупость не может/не хочет воспринимать дейсвтительно глупо. Ибо LSD три страницы назад был абсолютно прав, и with это действительно  кастыль для ЯП, не позволяющих объявить переменную по месту.  Оспаривать в его сентенции можно было только слово "убогий". Но ни один из представленных оппонирующей стороной примеров, с моей точки зрения, красотой и изяществом не был наделен.

Это сообщение отредактировал(а) Zloxa - 29.8.2013, 17:36


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1205 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.