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

» Вопросы по Embarcadero RAD Studio XE4

Автор: MGAlex
Дата сообщения: 19.08.2013 17:14

Цитата:
RTTI теперь занимает сильно меньше и файл теперь вместо 69 метров - 67


Серьезное уменьшение.
Я читал и о других способах уменьшения размера, путем отключения чего-то, но все это от лукавого.

Кстати, может, кто не обратил внимания, хотя вряд ли, конечный файл будет меньше, если выставить в Build Configuration Release, а не Debug. Просто я даже не сразу обратил на это внимание.
Если проект начинали писать на более ранних версиях, то там тоже без разницы.
Я вот, например, свой проект начинал еще в BDS 2006 и с переходом на новые версии не обратил на этот вниманс внимание.
Автор: karlss0n
Дата сообщения: 19.08.2013 17:30
MGAlex

Цитата:
Серьезное уменьшение.
Я читал и о других способах уменьшения размера, путем отключения чего-то, но все это от лукавого.
 
Кстати, может, кто не обратил внимания, хотя вряд ли, конечный файл будет меньше, если выставить в Build Configuration Release, а не Debug. Просто я даже не сразу обратил на это внимание.
Если проект начинали писать на более ранних версиях, то там тоже без разницы.
Я вот, например, свой проект начинал еще в BDS 2006 и с переходом на новые версии не обратил на этот вниманс внимание.


Ну так RTTI это и есть "чего-то", что мы выключили =))))

Конфигурация Release, такой размер дают "шкуры" от DevExpress.
Автор: Arioch1
Дата сообщения: 19.08.2013 17:46
ну так убей шкуры

а вообще, вставлять девок, а потом плакаться на большой размер и пытаться отрезать по кусочку... как-то это само себе противоречит
Автор: Mikanoshi
Дата сообщения: 19.08.2013 17:49

Цитата:
Проблема заключалась в том, что при изменении RTL требуется полная перекомпиляция VCL (всё что зависит от RTL).

Использую Vcl.Imaging.jpeg, Vcl.Imaging.pngimage и Vcl.Imaging.GIFImg - всё работает и без перекомпиляции VCL...
Автор: karlss0n
Дата сообщения: 19.08.2013 18:17
Mikanoshi

Цитата:
Использую Vcl.Imaging.jpeg, Vcl.Imaging.pngimage и Vcl.Imaging.GIFImg - всё работает и без перекомпиляции VCL...


У меня ошибку выдаёт при билде, говорит модуль скомпилирован с другой версией system.dcu. Вы уверены что у Вас новый system.dcu подхватывается?

Вы его поверх старого копировали в Lib или как?
Автор: Mikanoshi
Дата сообщения: 19.08.2013 18:40
karlss0n
Не копировал, dcu упали в другую папку, а в библиотеках указал путь к ней, перед оригинальным $(BDSLIB)\$(Platform)\release
Автор: deks
Дата сообщения: 20.08.2013 11:48
MGAlex


Цитата:
Пусть и студии придуают какую-то архивацию, к примеру


"Все придумано до нас" (ц) - UPX или вариации на тему паковщика)) К тому же никто не запрещает делать сильно пакованный SFX (7zip или какие там мощные zip нынче есть) - и его распространять как дистрибутив, который сам при первом запуске в нужное место распаковывается, обновляется и тп.
Автор: MGAlex
Дата сообщения: 20.08.2013 12:02
Ну это понятно. Речь идет о конечном файле, без доаолнительных манипуляций и программ.

Вот я для примера взял файл doc размером 3,35 Мб. Сохранил его в docx. Размер получился 3,30 Мб. Сжал docx rar'ом и размер сжатого файла получился 1,01 Мб.

Т.е., мы видим, что docx можно еще сжать больше чем в 3 раза.
Автор: karlss0n
Дата сообщения: 20.08.2013 12:28
deks

Цитата:
UPX или вариации на тему паковщика))


Не всегда это панацея. У меня задача как можно быстрее запуститься с сетевого диска. Когда файл 60 метров + dll 40 метров, то 100 мегабайт это уже ~10 секунд только на загрузку по сети + AVP.

AVP сильнее задумывается над UPX. Сам UPX не мгновенно распоковывается. Ну и не всё выживает после его упаковки, Некоторые dll после упаковки не работают.
Автор: Arioch1
Дата сообщения: 20.08.2013 12:48

Цитата:
docx можно еще сжать

А если его ещё и распаковать и сжимат ьисходники, да в solid-архив, да с сортировкой по типам (не знаю, делает ли её RAR)...

Кстати, так работает installAware - он MSI и CAB'ы распаковывает и жмёт 7-zip'ом ,а перед установкой создает их заново.


Цитата:
Сам UPX не мгновенно распоковывается

Это вобщем ерунда...
Влияет все же AVP, который не может запомнить "этот файл я уже проверял", потому что он на сетевом диске.
И плюс к тому, непакованная DLL/BPL может вообще не загружаться с диска пока программа реально не вызовет из неё какую-нибудь функцию (может быть вообще никогда).

PS: пара коанов для новичков, из другого форума
http://imgur.com/wb4Uop8 и http://imgur.com/5z3GMQT
Автор: Mikanoshi
Дата сообщения: 20.08.2013 15:15

Цитата:
Сам UPX не мгновенно распоковывается

10 метров в секунду на пне 133 Распаковку вообще не стоит считать, она практически мгновенная. Только АВ и могут тормозить, ложно определять как небезопасный файл могут тоже только самые паршивые АВ, так что я минусов в UPX не вижу, всегда жму с ultra-brute.
Автор: A_V
Дата сообщения: 20.08.2013 16:24
Arioch1
>пара коанов для новичков, из другого форума
багофичи кодогенератора (eax как результат, 1-й параметр и лок. переменная)? на х64 по идее не должно воспроизводиться..
Автор: Arioch1
Дата сообщения: 20.08.2013 19:05
Нет. Дело не в регистрах и думаю на x64 будет то же самое.

http://rghost.ru/48242831
http://rghost.ru/48243341
Автор: SolidSnakeRU
Дата сообщения: 20.08.2013 19:44
А можно как-то вызвать функцию передав только обязательные параметры?
Например, такую функцию: function test(param1:integer = 10; param2:integer);
Так и навязывается синтаксис типа test(,1) где первый параметр пропущен.

ПС: перегруженные функции не вариант.
Автор: Arioch1
Дата сообщения: 20.08.2013 19:48
Можно, но необязательные - в конце!
Автор: A_V
Дата сообщения: 21.08.2013 00:26
Arioch1
а, точно, Result в данном случае - неявный var параметр, в х64 тоже. ну как-бы таки багофича, и через регистр он туда и уходит
Автор: Aqel
Дата сообщения: 21.08.2013 20:34
Как вернуть вид delphi 2007 - без окна проекта?
И как добавить русификацию?
Автор: MGAlex
Дата сообщения: 21.08.2013 20:45
Aqel
Вы имеете в виду классический Delphi 7? Выберите стиль Classic Unlocked

Русификатор посмотрите здесь: http://cwer.ws/node/324696/
Автор: ego666
Дата сообщения: 22.08.2013 10:19

Цитата:
В однопотоке ShowModal завешивает всю программу - интуитивно до жути.
В многопотоке очень опасно в другом потоке создать форму или обратиться к уже созданной. Очень интуитивно.
В неюникодной дельфи при копировании русского текста с контрола в clipboard надо клавиатуру на русский переключать (или патчить VCL) - очень интуитивно.
Форма освобождает непринадлежащие ей контролы (если они на ней лежат) - тоже интуитивно весьма...
Чтобы добавить пункт между двумя TMenuItem нужно у них найти родителя. А для TMAinMenu нужно найти виртуального родителя, которого не существует, но он есть. Ооочень интуитивно.
Про дополнение VCL (например вернуть в TMainMenu HelpBreak или добавить в чей-то TDataSet master-detail) я молчу - там интуитивность так и прёт, но это немного другой уровень.

Clipboard - это кагбы проблема не Delphi, а Винды, которая не определяла кодировку текста в буфере.
Про остальное - ну выдавил каплю дёгтя в бочку? ну и что? ну и ничего.

Добавлено:

Цитата:
Форма освобождает непринадлежащие ей контролы (если они на ней лежат) - тоже интуитивно весьма...

Не понял, имеется ввиду Owner или Parent? И что не интуитивного?
И ещё раз про остальное: VCL это не сферичесий конь в вакууме - просто так захотеть и написать её идеально не выйдет.
Автор: Arioch1
Дата сообщения: 22.08.2013 11:18

Цитата:
Clipboard - это кагбы проблема не Delphi, а Винды

Ах ты блин, то есть VCL гениально интуитивен настолько, что нельзя использовать VCL TClipboard без прочтения десятка талмудов по Win32 ? Но вeдь это - по определению выше - значит, что VCL надо выкидывать на помойку... Вот незадача-то.


Цитата:
которая не определяла кодировку текста в буфере

Определяет, но по весьма странному закону, котоырй нельзя переопределить.
Но это не важно. Речь-то шла пр оVCL, ане про Win32 API


Цитата:
Не понял, имеется ввиду Owner или Parent?

Про оба.

Button1.Parent = Form1;
Button1.Owner <> Form1;

И Button1.Owner.Free (если он не nil) и Button1.Parent.Free удаляют кнопку.
Что означает, что за время жизни кнопки отвечает кто попало и удалитсья она может когда угодно.
Это интуитивно, да...


Цитата:
просто так захотеть и написать её идеально не выйдет

...а выше уверяли, что уже вышло, вот незадача-то!

Автор: ego666
Дата сообщения: 22.08.2013 21:06

Цитата:
Ах ты блин, то есть VCL гениально интуитивен настолько, что нельзя использовать VCL TClipboard без прочтения десятка талмудов по Win32 ?

Да причём тут VCL и вообще Delphi? Кодировка определяется криво с любого не юникодного софта и не важно на каком языке его писали и с какими библиотеки. Ещё раз, это была проблема Винды.


Цитата:
Определяет, но по весьма странному закону, котоырй нельзя переопределить.

Можно, я даже сам как то писал библиотеку с перехватом api функций работающих с буфером обмена (смутно уже помню, но вроде дело ограничивалось конвертацией текста в юникод и выставлением соответствующих флагов или просто правильным выставлением флагов без конвертации, не помню уже).


Цитата:
Что означает, что за время жизни кнопки отвечает кто попало и удалитсья она может когда угодно.
Это интуитивно, да...

Нет, это означает что ничего не хочешь понимать. Что значит кто попало и когда угодно? Всё вполне конкретно и обоснованно: Parent относится к оконной модели Винды, это отношения между дочерним окном и его родителем, где регламентировано одно из таких поведений, как уничтожение всех дочерних окон в случае уничтожения родительского. Owner же относится к компонентной модели Delphi, от TComponent, это такой каркас, который предоставляет методы для работы дизайнера форм в IDE, обеспечивает сериализацию компонентов в dfm и десериализацию обратно, а также берёт на себя управление временем жизни своих подчинённых объектов. Не знаю где ты тут потерял логику, но после уничтожения либо Parent'а либо Owner'а оставлять в живых дочерний объект - это не просто технически невозможно, это логически не имеет смысла.


Цитата:
...а выше уверяли, что уже вышло, вот незадача-то!

Ты упоротый? Открой модули Controls и Forms, и просто посчитай кол-во строк кода, можешь также не спеша поскроллить и поглядеть от какой адовой писанины тебя избавляет VCL. А то к чему ты там придрался - это какой то детский лепет. И если уж в VCL что то действительно является не логичным/не красивым, то это уже нюансы дизайна оконной модели в Винде, именно это вносит коррективы в красоту и логичность, и по другому значит никак, технически никак.
Автор: Arioch1
Дата сообщения: 23.08.2013 08:58

Цитата:
Ты упоротый?



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



Цитата:
Кодировка определяется криво с любого не юникодного софта

Нет.


Цитата:
и с какими библиотеки.

Только если библиотеки написаны с ошибками (игнориованием MSDN и стран, как РФ), подобно VCL


Цитата:
Ещё раз, это была проблема Винды.


Цитата:
Да причём тут VCL и вообще Delphi?


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


Цитата:
писал библиотеку с перехватом api функций работающих

Угу, чтобы можно было воспользоваться TClipboard надо патчить функции операционки. Очень интуитивно и кросплатформно, чо!


Цитата:
Parent относится к оконной модели Винды

Т.е. чтобы пользоваться VCL - колторая настолько по твоему хороша, что документации не требует - надо сначала изучить документацию по Win32. У тебя не шизa часом?


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

Правда невозможно ? Про RecreateWnd не слышал никогда? Жаль. Уж лучше быть упоротым...


Цитата:
если уж в VCL что то действительно является не логичным/не красивым, то это уже нюансы дизайна оконной модели в Винде

Ты определись уже наконец.
То ли VCL настолько гениальна, что не требует документации, то ли требует знания всего GDI, чтобы не удивляться.
Хватит на двух стульях сидеть.

Цитата:
и по другому значит никак, технически никак.

Ого! новая религия родилась незаметно!
Автор: MGAlex
Дата сообщения: 23.08.2013 12:06

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

Документация никогда не помешает.
Вот есть библиотека TRichView. Пожалуй, одна из не многих, если не единственная, библиотека для Delphi, в которой есть компонента, которая способна выравнивать текст по ширине. Ну и многие другие вещи умеет делать, такие как вставка подложки под текст и т.д.

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

Наконец, документация нужна хотя бы для того, чтобы узнать, что может делать эта библиотека и какие у нее есть особенности.
Автор: SolidSnakeRU
Дата сообщения: 24.08.2013 11:45
Документация всегда хорошо.
У каждого разный мозг и способность восприятия.
Причем это относится не только к документации на библиотеки.
Автор: ego666
Дата сообщения: 29.08.2013 09:37

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



Я же прямо говорю, что ты поришь чушь, приводя при этом и факты и аргументы.


Цитата:
Только если библиотеки написаны с ошибками (игнориованием MSDN и стран, как РФ), подобно VCL

Какие ошибки, какое игнорирование? Причина в том, что к перекодировки текста из буфера обмена (из ansi в юникод или обратно) применяется неверная локаль, которая не соответствует языку собственно этого текста, а причина неверной локали в том, что по содержимому текста невозможно определить к какому языку он относится и локаль выбирается тупо по текущей раскладке языка. Этой болезни подвержены все не юникодные приложения, подчёркиваю все не юникодные, без разницы на чём их писали.


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

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


Цитата:
Угу, чтобы можно было воспользоваться TClipboard надо патчить функции операционки. Очень интуитивно и кросплатформно, чо!

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


Цитата:
Т.е. чтобы пользоваться VCL - колторая настолько по твоему хороша, что документации не требует - надо сначала изучить документацию по Win32. У тебя не шизa часом?

Стрелки не переводи ага.
А где в работе с этими свойствами (Parent и Owner) от тебя требуется доскональное знание WinAPI? Если не знаком с платформой - их наличие просто принимай как данность (а есть ещё и свойство Handle и ведь тоже не ясно к чему оно в паблице торчит, да?). VCL с одной стороны представляет собой высокоуровневую объектно-ориентированную обвертку над WinAPI, скрывая от нас в своём черном ящике всю рутинную работу, а с другой стороны она является максимально открытой, предоставляя нам всё таки доступ для работы низкоуровневыми WinAPI, этакий черный ящик, в который, при желании, можно и заглянуть и даже поработать там.


Цитата:
Про RecreateWnd не слышал никогда?

И к чему ты это ляпнул? У меня есть Panel, на ней Button, вопрос: после убийства Panel что делать с Button? Убить его тоже или оставить "висеть в воздухе" над местом где раньше была Panel.
Автор: Eternal_Shield
Дата сообщения: 29.08.2013 11:08
Решил пару проектов скомпилить под ХЕ4 смеху ради и выяснилось, что имеет место регрессия связанная с шаблонами и множествами:


Код:
type
NestedTest<T> = record
strict private type
TestSetType = set of 0..255;
strict private
FTestSet: TestSetType;
public
function TestSetTypeProc: Boolean; inline;
end;

function NestedTest<T>.TestSetTypeProc: Boolean;
var
I: UInt8;
begin
for I := Low(I) to High(I) do
if I in FTestSet then
;
end;
Автор: A_V
Дата сообщения: 29.08.2013 11:28
Eternal_Shield
напиши в qc (если там еще нет) - регрессии он почти всегда фиксят в следующем релизе
Автор: Arioch1
Дата сообщения: 29.08.2013 12:00

Цитата:
Документация никогда не помешает.

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



Добавлено:

Цитата:
Эти тезисы - это бред,

Но ты их пламенно защишаешь.


Цитата:
я вообще о них речи не вёл

Как только ты влез в этот спор на стороне AlekXL - ты взялся защищать его тезис, что написание книги - признак плохой, неинтуитивной библиотеки.

А раз взялся - то не спрыгивай, а защищай.





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


Нет. Причина в том, что программа не сообщает эту локаль, а вот это и есть ошибка библиотеки и нечитание документации, как авторов этих библиотек, так и тобой.


Цитата:
проблема лежит выше, в дизайне Винды


Во-первых это не так. Всё что нужно - у библиотек есть, просто они это игнорируют.

Во-вторых это не важно. Хорошая (по вашему с AlekXL определнию) библиотека исправит косяки Винды или чего там и сделает всё, что нужно, чтобы эта якобы ошибки виндов не проявлялась (тем более, когда всё, что нужно, это просто делать по документации).

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


Цитата:
И к чему ты это ляпнул?

Значит не слышал... и погуглить тоже не смог... Печально.


Цитата:
У меня есть Panel, на ней Button

это где есть? карандашом на бумаге ?

ни в windows ни в vcl таких классов нету.
так что будь любезен в программистком форуме четке перечислить? rfrbt d dfitv ghbvtht^
1) объекты Windows GDI и соответсвующие им классы Windows GDI
2) связь между этими объектами в терминах свойств этих объектов (доступных черезх соотв. вызовы GDI-функций или отправку соотв. message)
3) объекты VCL и соответсвующие им классы VCL
4) связь между этими объектами в терминах свойств этих объектов (Доступными через public или published property и аргументов конструктора)
5) связи между объектами Windows и объектами VCL (желательно тоже в терминах свойств соотв. объектов)

Добавлено:

Цитата:
Если не знаком с платформой - их наличие просто принимай как данность


Цитата:
это уже нюансы дизайна оконной модели в Винде


Выбери что-то одно. Хватит вилять.

Владелец создал объект - а его вдруг удалил кто-то другой, владельцем не являющийся.
Кто за это в ответе, VCL или Windows ?

И не забывай, что VCL по твоему - интуитивная библиотека, документации не требующая.
Автор: ego666
Дата сообщения: 30.08.2013 09:52

Цитата:
Как только ты влез в этот спор на стороне AlekXL - ты взялся защищать его тезис, что написание книги - признак плохой, неинтуитивной библиотеки.

Ты бредишь, не было такого или давай пруф.


Цитата:
Причина в том, что программа не сообщает эту локаль, а вот это и есть ошибка библиотеки

И каким образом библиотека должна выбирать верную локаль, соответствующую языку текста, из их великого множества?


Цитата:
Во-первых это не так. Всё что нужно - у библиотек есть, просто они это игнорируют.

Окей, что у них есть? (как раз к вопросу выше)


Цитата:
это где есть? карандашом на бумаге ?

Ты же всё понял, но косишь под дурачка, т.к. на вопрос ты не ответишь, потому что правильный ответ будет коррелировать с твоим же утверждением.


Цитата:
Выбери что-то одно. Хватит вилять.

Вообще то там одно следует из другого.


Цитата:
Владелец создал объект - а его вдруг удалил кто-то другой, владельцем не являющийся.
Кто за это в ответе, VCL или Windows ?

Сам то понял, что написал?

Добавлено:

Цитата:
Решил пару проектов скомпилить под ХЕ4 смеху ради и выяснилось, что имеет место регрессия связанная с шаблонами и множествами:

Update1 стоит? А то может уже поправили.
Автор: Eternal_Shield
Дата сообщения: 30.08.2013 10:35
ego666

Цитата:
Update1 стоит? А то может уже поправили.

Разумеется

A_V
С if-in создал багрепорт .... а вот про баг со стримингом коллекций ваще хохма ... о нём знают аж с Delphi 6 !!! ... феерично.

Страницы: 1234567891011121314151617181920212223242526

Предыдущая тема: cxDBPivotGrid выгрузка в excel


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