Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Embarcadero RAD Studio XE5-XE8,10.x(Seattle, Berl

Автор: mudrii
Дата сообщения: 02.01.2015 09:13
Привет!

Как и с помощью чего можно реализовать такую фичу аля 1С8 лукап список выбора

http://uploads.ru/A2Sia.png

При наборе символов в поле ввода, подключенному к справочнику по первым нескольким символам отображается лукап список с совпадающими элементами, при выборе из которого в поле копируется нужный элемент.
Спасибо.
Автор: ZloyBrawler
Дата сообщения: 02.01.2015 09:26

Цитата:
Как и с помощью чего можно реализовать такую фичу аля 1С8 лукап список выбора

ну может быть похожими путями
http://stackoverflow.com/questions/9466547/how-to-make-a-combo-box-with-fulltext-search-autocomplete-support
http://stackoverflow.com/questions/7696075/need-a-combobox-with-filtering
http://www.delphisources.ru/pages/faq/base/combo_autofill.html
Автор: regkz
Дата сообщения: 02.01.2015 14:15
mudrii
в ТМС'ах у едита есть такое свойство
Автор: landy
Дата сообщения: 02.01.2015 15:23

Цитата:
Я когда-то работал с dbExpress, и там был какой-то ген метаданных из структур в скрипт DDL, но во-первых, мне более интересна обратная задача,
и во-вторых, мне желательно не связываться с dbExpress.

Взгляни на SQL parser for VCL
Автор: Alexey_Gawrilow
Дата сообщения: 02.01.2015 17:29
mudrii
В соседней ветке
Пару страниц ранее.
http://forum.ru-board.com/topic.cgi?forum=33&topic=13825&start=2020#12
Автор: mudrii
Дата сообщения: 02.01.2015 17:58
Спасибо, очень интересный материал
Автор: landy
Дата сообщения: 02.01.2015 21:59

Цитата:
Взгляни на SQL parser for VCL

Вдогонку - вот еще один парсер структуры БД: Database Comparer VCL v 6.1 for Delphi, C++Builder
Автор: mrUlugbek
Дата сообщения: 03.01.2015 10:00

Цитата:
Привет!

Как и с помощью чего можно реализовать такую фичу аля 1С8 лукап список выбора

http://uploads.ru/A2Sia.png

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



Посмотри у Ehlib есть такой функционал не эта случайно

Ссылка


Автор: SolidSnakeRU
Дата сообщения: 03.01.2015 12:01
http://www.3dnews.ru/907498/?feed
Судя по всему, сделано на ФМ.
Автор: landy
Дата сообщения: 03.01.2015 13:17

Цитата:
Судя по всему, сделано на ФМ.

Эм, а что именно наводит тебя на такую мысль?
Автор: SolidSnakeRU
Дата сообщения: 03.01.2015 15:12
Название, вид контролов и отзывы.
"Жрет память", "вылетает", "не работает".
Автор: kaz_av
Дата сообщения: 03.01.2015 16:21
SolidSnakeRU
Не на обезьяне оно. В ресурсы загляни. При таком количестве закачек оценка обезьяньего софта находилась бы на уровне одного балла.
Автор: AlekXL
Дата сообщения: 04.01.2015 20:31

Цитата:
Судя по всему, сделано на ФМ.

А мы всё надеемся и ждем чуда: что на FMX все же можно писать элегантный софт..
А может, ну его? Весь мир движется к "жрущему" и тормозному софту под флагами .NET и прочих скриптовых GC поделий. Давайте и мы будем говнокодить, только на Delphi/FMX. Ведь сложное приложение на далвике, и такое же приложение на FMX -- тормозить будет одинаково жестко, не так ли?
Это только на простых у жабы преимущество.

---

а кто пользовался "препроцессором" http://sourceforge.net/projects/dpp32/?source=typ_redirect Delphi?
И есть ли подобные фишки еще?
Автор: kaz_av
Дата сообщения: 04.01.2015 21:15
AlekXL

Цитата:
Весь мир движется к "жрущему" и тормозному софту под флагами .NET и прочих скриптовых GC поделий.

Все как раз наоборот У ведроида ART уже в новых версиях активирован по дефолту, у МС его аналог (или, если угодно, аналог ngen, в общем тот самый AOT вместо JIT) работает на стороне магазина приложений. Теперь байт-код служит лишь временным представлением программного кода от момента сборки до момента установки приложения, а дальше работает натив (индустрия таки вернулась к изначальной идее ). Теперь ведроидный SDK-софт мало чем будет отличаться в плане производительности от NDK-софта, и, возможно, необходимость в последнем со временем вообще отпадет.


Цитата:
Давайте и мы будем говнокодить, только на Delphi/FMX

Ждем саксесс стори от тебя.
Автор: AlekXL
Дата сообщения: 04.01.2015 21:56
kaz_av

Цитата:
, а дальше работает натив (индустрия таки вернулась к изначальной идее ).


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

Ты не знаешь, когда будет освобожден неиспользуемый буфер. Но когда это произойдет, то будет тормоз на весь пул потоков, без изъятий , то есть либо заикание интерфейса, либо что похуже.

Я видел сложный и объемный проект на шарпе, предназначенный для автотрейдинга на форекс-подобных биржах. Девелоперы(по уровню знаний программирования - любители, неспецы) жаловались на микрозадержки порядка 30мс, которые были для них критичны. Так вот, они не торговались, когда нужно было что-то с этим сделать... А сделать что-то весьма нелегко -- либо рефакторить всё, все явные и неявные выделения памяти, боксинг и т.д в цикле обработки и соседних нитях . Либо писать демона в отдельном контексте, и желательно, не на GC-платформе.
--
..Если бы в доднете была бы хотя бы возможность вручную аллоцировать память под структурный тип, или буфер, тогда еще ладно, но такой возможности нет. Да и сама идея достижимости, в отличие, скажем, от подсчета ссылок, порочна.

Добавлено:
Добавь сюда практически горизонтально-асимптотический тренд развития железа, по сравнению с как минимум линейным прогрессом алгоритмических решений, и увидишь не упадок парадигмы NDK, а "Возвращение Короля".
Может вернуться то время, когда нас удивляли одиночки, умещавшие шедевры в 48/128 килобайт "Cпекки" или "Коммодора", только вместо одиночек будут корпорации.
Автор: Alexey_Gawrilow
Дата сообщения: 04.01.2015 22:14
kaz_av

Цитата:
Теперь байт-код служит лишь временным представлением программного кода от момента сборки до момента установки приложения, а дальше работает натив (индустрия таки вернулась к изначальной идее ).


Ну как вот не вспомнить Михаеля Франца с его Juice.
Шикарная вещь.
Единственный недостаток - "фатальный недостаток"
Ну или так


Добавлено:
AlekXL

Цитата:
препроцессором


Цитата:
И есть ли подобные фишки еще?

DLangExtensions от Andreas Hausladen была крута. Имеется ввиду именно инженерное решение - Andreas безусловно крут.

http://www.devsuperpage.com/search/Articles.asp?ArtID=1143196

мертвое сейчас.
Автор: AlekXL
Дата сообщения: 04.01.2015 22:29
друзья, а здесь есть кто-нибудь, кто бескорыстно коммиттит в развитие Delphi/FPC?
Автор: kaz_av
Дата сообщения: 04.01.2015 22:43
AlekXL

Цитата:
нет, не вернулась.

В плане работы с байт-кодом - 100% вернулась.


Цитата:
Отсюда все растет, я считаю

Об этом нужно говорить с цифрами в руках, т.е. делать многократное профилирование и выяснение действительно узких мест. Может статься, что GC окажется не при делах. Ну и ART несет некоторые изменения для GC.


Цитата:
Если бы в доднете была бы хотя бы возможность вручную аллоцировать память под структурный тип, или буфер, тогда еще ладно, но такой возможности нет

У самой платформы скорее всего есть, на уровне шарпа возможно нет. Например FPC умеет компилировать под JVM - платформу с управляемой памятью и GC - и при этом работают низкоуровневые трюки с указателями и управлением памятью.


Цитата:
Да и сама идея достижимости, в отличие, скажем, от подсчета ссылок, порочна.

Идея как раз красивая. Подсчет ссылок более проблематичен, а в реализации дельфей для объектов вообще убог - слабые ссылки в глобальном списке это - рукалицо.

Добавлено:
AlekXL

Цитата:
друзья, а здесь есть кто-нибудь, кто бескорыстно коммиттит в развитие Delphi/FPC?

А в Delphi можно коммитить?
Автор: AlekXL
Дата сообщения: 04.01.2015 23:11

Цитата:
Об этом нужно говорить с цифрами в руках, т.е. делать многократное профилирование и выяснение действительно узких мест. Может статься, что GC окажется не при делах. Ну и ART несет некоторые изменения для GC.

Не надо ляля. Ручное управление памятью бесспорно быстрее и эффективнее GC, вопрос только - насколько? Чем сложнее приложение, чем больше оно требует ресурсов, тем менее приемлем GC.
Знаете ли вы хотя бы один подобный проект, на платформе GC, у которого бы не было проблем с отзывчивостью или скоростью? Я - не знаю.
Доходит до абсурда, тот же FF - у него вроде GC, но не только медленный и заикается, так еще и память у него течет пропадая.


Цитата:
Идея как раз красивая. Подсчет ссылок более проблематичен
Чем?

Тем, чтобы необходимо следить за циркулярными референсами?


Цитата:
слабые ссылки в глобальном списке это - рукалицо.

С использованием слабых ссылок, мы уходим от проблемы утечки, но приходим к нуль-референс угрозе, когда слабая ссылка ненароком не обнулилась.
Лекарство хуже болезни.

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

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




Добавлено:

Цитата:
У самой платформы скорее всего есть, на уровне шарпа возможно нет. Например FPC умеет компилировать под JVM - платформу с управляемой памятью и GC - и при этом работают низкоуровневые трюки с указателями и управлением памятью.

разумеется. Память - это ведь просто массив, только индексируется он не с нуля, как привыкли скобкокропатели. В рамках этого массива можно организовать менеджер кучи - задача популярная у нас, паскалистов.
Проблема в том, что Шарп и Ява не дают возможности хранить нетривиальные типы в произвольных областях. Это вам не кресты, в которых можно как угодно переопределить оператор new.

Добавлено:

Цитата:

А в Delphi можно коммитить?

Конечно! Не в компилятор, конечно, но на самом деле туча возможностей, от препроцессинга кода до написания хороших базовых библиотек на замену FMX.
А можно просто написать хороший учебник по Delphi
вот например
в статье викиверситета мой вклад больше половины. Мелочь, но если бы нас было 20-100 человек, учебник был бы быстро написан.
Автор: kaz_av
Дата сообщения: 04.01.2015 23:38
AlekXL

Цитата:
Не надо ляля.

Действительно - не надо. Будут цифры - можно продолжить разговор. Без цифр это ковыряние в носу.


Цитата:
Ручное управление памятью бесспорно быстрее и эффективнее GC

Погугли кому свойственна категоричность суждений.


Цитата:
Знаете ли вы хотя бы один подобный проект, на платформе GC, у которого бы не было проблем с отзывчивостью или скоростью? Я - не знаю.

Я тебе и кучу нативных с такими проблемами назову. А вообще, я пользуюсь одним приложением под mono (Tomboy) и жалоб на него не имею, кроме, разве что, не самого быстрого страта и подъема из фона. Но тот же нативный GoldenDict из фона выбирается тоже не быстро. А уж если говорить о мобильных прилагах, то проблемы у меня лично были только c обезьяньим софтом, весь прочий летает. При всем при этом, я всегда был и остаюсь сторонником нативного софта и прямого управления памятью.


Цитата:
Чем?

Непосредственно идеей и механизмом разрешения. Просто и красиво.


Цитата:
Лекарство хуже болезни.

Вот и подумай, так ли порочна идея... В общем, с такой реализацией рассуждать о тормозах GC, это, мягко говоря, очень смело.
Автор: AlekXL
Дата сообщения: 05.01.2015 00:08

Цитата:
Непосредственно идеей и механизмом разрешения. Просто и красиво

Пузырьковая сортировка тоже проста и красива.


Цитата:
Погугли кому свойственна категоричность суждений.

при чем тут гугл? Мы говорим о потенциале. Грамотное ручное управление лучше любого автомата, потому что человек умнее любого автомата, когда дело доходит до сложных проблем. Это аксиома.

Цитата:
я пользуюсь одним приложением под mono (Tomboy)


Цитата:
нативный GoldenDict
ну это черрипикинг. Ты берешь хороший/лучший пример GC против плохого/худшего примера натива.
А ты возьми лучший пример GC и лучший пример ручного управления. Догадываешься, каким будет результат? Вот об этом то я и говорю.


Цитата:
В общем, с такой реализацией рассуждать о тормозах GC, это, мягко говоря, очень смело.
мы говорим о концепциях и потенциале этих концепций, а не об особенностях реализации.
Причем, думается, даже в такой реализации, зануление конкретной ссылки остановит процесс на меньшее время, чем поиск недостижимых областей. Ибо в обоих случаях мы имеем блокировку, но первая задача строго детерминирована по времени, тогда как вторая -- далеко не детерминирована.



Добавлено:

Цитата:
Вот и подумай, так ли порочна идея...

мало того, что GC снижает порог вхождения, разрешая небрежный код, так еще хороший код GC замедляет. Скрывает разницу. Кропателям это на руку, а гикам?

Добавлено:
А еще GC порочен потому, что понимание его ущербности приходит слишком поздно, когда в проект уже вложено тысячи человеко-часов.
Автор: kaz_av
Дата сообщения: 05.01.2015 10:01
AlekXL

Цитата:
при чем тут гугл?

Ладно, не хочешь гуглить... Категоричность суждений свойственна невеждам (с).

Цитата:
Это аксиома.

Только в твоей теории. Но по красоте теорий, теория GC не оставит камня на камне от твоей теории Операция выделения памяти для GC это изменение указателя и только, а это очень дешевая операция даже по сравнению с менеджерами памяти основанными на пулах. GC доступна статистика работы приложения, и он может подстраивать собственные эвристики для более качественного выполнения работы. У GC нет проблемы с циклическими ссылками и фрагментацией памяти. GC более cache friendly, чем подсчет ссылок. Это если говорить о теории. А на практике ты можешь запустить ProcessExplorer и посмотреть сколько времени в работе дотнет-приложения занимает работа GC - смешные цифры.


Цитата:
Ты берешь хороший/лучший пример GC против плохого/худшего примера натива.

Я взял два самых обычных приложения из моего рабочего окружения.


Цитата:
Догадываешься, каким будет результат?

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


Цитата:
Причем, думается, даже в такой реализации, зануление конкретной ссылки остановит процесс на меньшее время, чем поиск недостижимых областей. Ибо в обоих случаях мы имеем блокировку, но первая задача строго детерминирована по времени, тогда как вторая -- далеко не детерминирована.

Так ты не думай, ты проверь! Неверные предпосылки, они, как известно, ведут к неверным выводам. Ты в курсе, что GC может работать параллельно основным кодовым потокам и практически исключить появление пауз? А в курсе, что подсчет ссылок в дельфях, сделанный на основе вызова виртуальных (двойнойрукалица) методов адово замедляет работу приложения?


Цитата:

мало того, что GC снижает порог вхождения, разрешая небрежный код, так еще хороший код GC замедляет

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


Цитата:
А еще GC порочен потому, что понимание его ущербности приходит слишком поздно, когда в проект уже вложено тысячи человеко-часов.

У двоечников считающих GC серебряной пулей.
Автор: SuPriTo
Дата сообщения: 05.01.2015 11:06

Цитата:
Ручное управление памятью бесспорно быстрее и эффективнее GC, вопрос только - насколько? Чем сложнее приложение, чем больше оно требует ресурсов, тем менее приемлем GC.

Сейчас делаю проект на C#. Пишу робота для торговли на бирже. И вот я уже задолбался с этим сборщиком мусора. Когда идет большой массив данных, постоянные тормоза. Плюс я использую внешнюю библиотеку и постоянно думаю, почистилась память или не почистилась. Но по ходу видимо не почистилась, а может еще какие-то ссылки есть. И это постоянно в каких-то терзаниях по поводу автоматической сборки мусора.

Цитата:
Проблема в том, что Шарп и Ява не дают возможности хранить нетривиальные типы в произвольных областях.

Шарп дает возможность хранить данные в произвольных областях памяти. Но это не решает проблемы очистки памяти, а еще больше усложняет программирование.
Если в делфи автоматически очищается память при обнулении ссылок. И этим вопросом можно управлять. То в GC это один большой вопрос и сделать это не так-то просто. В итоге для эффективной работы переписывать сборщик мусора для работы с большими данными. И в целом это тот еще геморрой.

Цитата:
Только в твоей теории.

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

Цитата:
А на практике ты можешь запустить ProcessExplorer и посмотреть сколько времени в работе дотнет-приложения занимает работа GC - смешные цифры.

Эти смешные цифры в неподходящее время могут быть совсем не смешными.

Цитата:
Ты в курсе, что GC может работать параллельно основным кодовым потокам и практически исключить появление пауз?

Конечно он может, но от пауз не избавляет (особенно, когда данных на несколько сот мегабайт), видимо пока его самого не перепишешь (это мои предположения). GC помогает в только, когда много памяти.

Цитата:
А сделать что-то весьма нелегко -- либо рефакторить всё, все явные и неявные выделения памяти, боксинг и т.д в цикле обработки и соседних нитях . Либо писать демона в отдельном контексте, и желательно, не на GC-платформе.

Вот это как раз на практике так и получается.

Автор: kaz_av
Дата сообщения: 05.01.2015 11:29
SuPriTo

Цитата:
И приходится транить большое кол-во часов на то, чтобы все это дело оптимизировать

А эффективный код за минуту не пишется. Нигде и никогда.


Цитата:
А когда используешь сторонние библиотеки это превращается в целый кошмар, т.к. в сторонней библиотеке мало кто об этом задумывается.

Для натива тут вообще смерть - сторонний код есть потенциальный источник самых невероятных граблей.


Цитата:
Эти смешные цифры в неподходящее время могут быть совсем не смешными.

Так у GC есть несколько стратей работы, тот же конкурентный GC избавляет от пауз ценой некоторого замедления процесса сборки.


Цитата:
Конечно он может, но от пауз не избавляет, видимо пока его самого не перепишешь (это мои предположения).

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


Цитата:
Вот это как раз на практике так и получается.

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

Добавлено:

Цитата:
Сейчас делаю проект на C#. Пишу робота для торговли на бирже. И вот я уже задолбался с этим сборщиком мусора.

А чего, кстати, не на дельфях пишешь?
Автор: SuPriTo
Дата сообщения: 05.01.2015 11:54

Цитата:
Для натива тут вообще смерть - сторонний код есть потенциальный источник самых невероятных граблей.

Ой, ли. Для натива много всяких возможностей обойти грабли.

Цитата:
А чего, кстати, не на дельфях пишешь?

На делфях пишу. Данный проект делаю по причине наличия подходящей библиотеки на C#, которая позволяет быстрее реализовать задуманное. Сейчас собираюсь переписать данную библиотеку под делфи со своей собственной спецификой.

Цитата:
Ну вот как раз такие разочарования в GC и случаются у людей считающих его серебряной пулей.

Я не считаю его серебряной пулей, я его считаю некоторой проблемой, с которой приходится сталкиваться.
Если в делфи или на си я просто выделил память, то я знаю, что эту память нужно очистить. Когда и где это мои личные проблемы от меня зависящие. В GC у меня вечный вопрос, а почистилась ли память или нет? А почистилась ли память во внутренних структурах библиотеки, т. к. она сложна и т. д. Ответ в делфи на этот вопрос решается одной строкой, а в GC это сбор и исследование статистики. И походу придумывание различных граблей для анализа статистики. Для простых приложений GC подходящая может очень подходящая штука. Но я привык работать так - выделил, почистил и забыл. А GC в этом смысле предлагает массу различных вариантов.

Цитата:
Так у GC есть несколько стратей работы, тот же конкурентный GC избавляет от пауз ценой некоторого замедления процесса сборки.

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

Автор: kaz_av
Дата сообщения: 05.01.2015 12:36
SuPriTo

Цитата:
Ой, ли. Для натива много всяких возможностей обойти грабли.

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


Цитата:
Я не считаю его серебряной пулей, я его считаю некоторой проблемой, с которой приходится сталкиваться.

А он не проблема, он инструмент требующий изучения для эффективного использования, как и любой другой.


Цитата:
В GC у меня вечный вопрос, а почистилась ли память или нет? А почистилась ли память во внутренних структурах библиотеки, т. к. она сложна и т. д. Ответ в делфи на этот вопрос решается одной строкой, а в GC это сбор и исследование статистики.

Это просто твой иррациональный страх. Для дотнета есть куча performance counters которые покажут тебе всю статистику и одномоментные значения.


Цитата:
Так вот это уже приходится в этом вопросе разбираться и тратить кучу времени на это. Как и что у него работает.

Любой инструмент требует изучения для эффективного использования. Delphi тоже не исключение. Сходу ни одну более-менее сложную задачу на незнакомом инструменте эффективно решить не получится. Вот ты воюешь с GC, а воевать не нужно, нужно узнать побольше.
Автор: SuPriTo
Дата сообщения: 05.01.2015 12:55

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

С такими граблями GC тебе и подавно не поможет и не его функция данную проблему решать.
На шарпе можно такие грабли тоже огрести не хило. Тут проблема библиотеки и не важно на чем она написана. Кривая библиотека она и в африке кривая. И мы не о так граблях рассуждаем.

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

Эта паскудная грабля находится мин. за 15. возможностью отключения соответствующей библиотеки. Для меня такие проблемы решаемы.

Цитата:
Это просто твой иррациональный страх. Для дотнета есть куча performance counters которые покажут тебе всю статистику и одномоментные значения.

Прогнал тест в программе. Выделилось 300 мб памяти. Запускаю принудительную очистку памяти. Висим пару секунд и это только 300 мб. Чем больше, тем хреновей. Я не видел ни одного приложения со сборщиком мусора, которое было бы эффективно работало с памятью.

Цитата:
Вот ты воюешь с GC, а воевать не нужно, нужно узнать побольше.

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

Автор: ZloyBrawler
Дата сообщения: 05.01.2015 13:08

Цитата:
в ручную у меня всяко лучше получится управлять памятью.

неисповедимы пути господни.... "access violation at address in module. Read of address"...
Автор: SuPriTo
Дата сообщения: 05.01.2015 13:24

Цитата:
неисповедимы пути господни.... "access violation at address in module. Read of address"...

Такие сообщения и на шарпе есть (точнее там нет, там приложение уходит тихо, чисто по английски). Я писал обмен данными между 2-мя приложениями через FileMapping. Насмотрелся на такие сообщения и просто на вылеты. Только при этом на Delphi не нужно было гадать остались ли ресурсы или нет, а вот на шарпе для таких задач пришлось выделять и чистить память в ручную. Сначала выделить кусок памяти, туда скопировать данный из автоматически очищаемой области памяти, а потом перенести в нужный мне буфер. И при этом пришлось глазеть на спокойные тихие вылеты приложения.
К слову сказать менеджер памяти в Delphi очень даже замечательный.
Автор: antonpv
Дата сообщения: 05.01.2015 13:41
Чуть-чуть поучаствую в вашей священной войне ;)


Цитата:
И при этом пришлось глазеть на спокойные тихие вылеты приложения.

Не умеете пользоваться исключениями в С#? НИКОГДА .net приложение не закрывается тихо, ТОЛЬКО если обернуть в try-except и не произвести обработку ошибок.
По рассуждениям товарищей, ругающих GC (и C#+.NET) в этой теме, думается мне, что они просто не имеют опыта и/или достаточных умений и навыков, а также познаний в предмете обсуждения. Да, есть недостатки, но они есть у любых технологий и методов решения задач, и delphi, и c#, etc.

P.S.: А вот просветите меня, пожалуйста, если не лень, как дела сейчас обстоят с памятью в delphi? Мое развитие остановилось на XE2 :)
P.P.S: Реально делают миграцию C# -> C++ только в случаях, когда требуется очень критичное ко времени работы и затрат ЦП приложение, когда каждую миллисекунду берегут. Такое бывает не часто. В остальных случаях все отлично работает. И кстати, для любителей Паскаля, Н. Вирт в своих трудах начиная с Оберона ввел в язык автоматическую централизованную сборку мусора!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129

Предыдущая тема: Отмена встречи в Outlook из Excel VBA


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.