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

» Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)

Автор: andrewtishkin
Дата сообщения: 28.11.2009 18:53

Цитата:
должен быть другой способ.

Если флаги выброса "лишнего" из шапки (я не про RTTI, я про PEFlags) не устраивают, а на WinAPI переходить неохота, то остаётся ещё один вариант - упаковщики. В частности, UPX

Однако прежде чем бежать скачивать его, надо понять, что минусов от этого возникнет куча, а плюсов максимум два, если вообще не один Поэтому рекомендую ознакомиться:
http://delphimaster.info/3-1252166005.htm
http://delphimaster.ru/cgi-bin/forum.pl?id=1258373073&n=3

Цитата:
Мне кажется этот разговор о экономии беспредметным.

Если речь о фанатической максимальной экономии - в 95% случаев я соглашусь
Автор: data man
Дата сообщения: 28.11.2009 18:54
moverast

Цитата:
становится 739 кб. и что? мир спасен?

И что ? На дискету 5.25" не влезает ?

Цитата:
должен быть другой способ.

1. Нажать "Версия для печати" - о том, как можно уменьшить размер exe средствами компилятора (любого, а не только D2010) - уже было написано.
2. Не использовать D2010.
Автор: psa1974
Дата сообщения: 28.11.2009 19:47
andrewtishkin

Цитата:
Если речь о фанатической максимальной экономии - в 95% случаев я соглашусь

Именно об этом . Именно эти возгласы "о боже, пустой проект весит аж целых 800 кб, какой ужос"... А иначе как назвать попытку сэкономить 500 кб в пустом проекте? Когда это будет готовый продукт, размер его будет в общем случае, как минимум несколько мегабайт, и чем больше он будет тем меньше эти 500 кб будут выделяться на общем фоне. Безусловно, здоровая экономия полезна. Безусловно, бывают случаи, когда каждый байт на счету, но это действительно редкие случаи. Для этих целей есть просто API, как было уже сказано. И есть Дельфи 7...
Было бы гораздо лучше, если бы в первую очередь внимание обращалось на функционал и безглючность создаваемого продукта, а уже потом на его размер и наличие "бантиков". Имхо
Прошу прощения за оффтоп...
Автор: Frodo_Torbins
Дата сообщения: 28.11.2009 20:10
moverast
О боже! Я не могу запустить мое 50 килобайтное .NET приложение без 20 МЕГАбайтного рантайма %) И что же мне теперь делать?
P.S. В делфи тоже можно создавать 50Кб приложения требующие наличия рантайма на машине пользователя.
Автор: moverast
Дата сообщения: 28.11.2009 20:49
заметил странную вещь...в edit записываю в цикле по одному 5930 символов. они в edit не отображаются. чуть меньше (например 5900) отображаются. если засунуть 5930 символов в edit и поудалять чуток (backspace) - символы начнут отображаться.
кто-нибудь сталкивался? знает как вылечить?
Автор: psa1974
Дата сообщения: 28.11.2009 21:12
moverast
Проверил таким кодом:

Код:
for I := 1 to 5930 do
Edit1.Text:= Edit1.Text+ 'v';
Автор: moverast
Дата сообщения: 28.11.2009 21:36
psa1974

реализовано так:

Код: for I := 1 to SpinEdit1.Value do
edit1.Text:=edit1.Text+x[Random(Length(x))+1];
Автор: psa1974
Дата сообщения: 28.11.2009 22:14
moverast
Проверил, буква в букву... Работает твой код, все вставляет и видно. Пробовал и 70000 символов, все равно все видно!
У меня Windows XP SP3. Очень интересно, почему так у тебя происходит... А если в Мемо записывать? Мемо - это тот же Едит, только многострочный (один и тот же оконный класс)...
Кинь свой экзешник, я посмотрю, как на Windows XP SP3 будет, выясним хоть виновата ли ОС или нет.
Автор: moverast
Дата сообщения: 28.11.2009 22:57
psa1974
http://dump.ru/file/3845497

Добавлено:
писец. на Win XP SP3 у меня тоже нормально 10000 символов добавили. это семерка виновата
Автор: psa1974
Дата сообщения: 28.11.2009 23:17
moverast
Ну я на всякий случай у себя тоже твою программу проверил - все работает.

Цитата:
это семерка виновата

Вот к этому я и клонил Дельфи тут опять не причем. Очередной косяк системы. Вообще полезно при таких вот непонятках проверять эти самые непонятки на разных системах.
Автор: spasius
Дата сообщения: 28.11.2009 23:33
попробовал на XP SP3 и на Висте все нормально. На обеих стоит RAD Studio 2010 + Update 2/3.
moverast
возможно это лаги на Win7. какая у вас версия студии, с какими обновлениями, какое издание, какой "метод"?
Автор: psa1974
Дата сообщения: 29.11.2009 00:56
moverast
spasius
Запустил у себя на виртуалке Windows XP SP3, Windows Vista и Windows 7. Ни на одной из этих систем не стоит вообще никакой Дельфи. Включил программу, результат:

Windows Vista и Windows 7 - эффект подтверждаю - при значении 7000 весь текст в Едите пропадает, при 3000 - не пропадает. В обеих системах. Стабильно. При этом когда текст не отрисовывается, курсор все равно можно перемещать по невидимым символам... Системы без каких либо обнов и сервиспаков...
Windows XP SP3 - эффекта нет. Все красиво, аж обидно

Возникает другой вопрос, почему в Висте у меня не видно, а у spasius видно... Считаю, что версия студии не причем, поскольку на виртуальной Windows XP у меня студия не стоит, однако все работает правильно.
Пробовал и программу moverast и быстро наваянную самим собой в Дельфи 2010 СП2...
Автор: spasius
Дата сообщения: 29.11.2009 01:42
psa1974
на тестовой машине с Вистой стоят все обновления (ставятся автоматом через wsus), и куча всяких девелоперских программ. подозреваю что Microsoft Visual Studio 2008+SP1 закрывает сей лаг заменой какой нить системной либы. если есть возможность поставить данный пакет на тестовые виртуалки интересно было бы посмотреть результат.
Автор: moverast
Дата сообщения: 29.11.2009 07:02

Цитата:
попробовал на XP SP3 и на Висте все нормально. На обеих стоит RAD Studio 2010 + Update 2/3.
moverast
возможно это лаги на Win7. какая у вас версия студии, с какими обновлениями, какое издание, какой "метод"?

такая проблема на win7 и с установленной студией и без нее. так что дело не в студии
Автор: JAPWork
Дата сообщения: 29.11.2009 10:16
Win7 - 64...
Ясно, что все дело - в отображении.
Мемо-поле - отображается без проблем. А вот с TEdit - все зависит еще и от шрифта, например для Ариала курсива аж 72 размеру и очень жирного - помещается всего пять сотен символов, точнее - 511... Что теперь делать будем - и не представляю...
Автор: psa1974
Дата сообщения: 29.11.2009 10:38
spasius
Поставил я на Windows 7 Microsoft Visual Studio 2008 (на Висту не судьба - на виртуалке места не хватает). Ничего не изменилось. Да и после инсалляции библиотека comctl32.dll не изменилась - а именно в ней зашиты стандартные оконные элементы...
Мыслей больше нет. На самом дела врядли есть реальная необходимость писать программу таким образом, чтобы заставлять юзера вводить более 4000 символов в Едит, на его месте проще будет повеситься ... Но баг есть, и было бы интересно прояснить ситуевину... Но мне кажется, этот баг выходит за рамки топа, поскольку к Дельфи отношения не имеет...

Добавлено:
JAPWork

Цитата:
А вот с TEdit - все зависит еще и от шрифта

Ну блин... Даже не догадывался, что еще и сам шрифт влияет... Такого еще не было... Ну я знаю, что в Win XP есть ограничение для Едита/Мемо в 64 кб на размер текста, но именно на размер данных, а никак не на размер шрифта. Прикольно... Мелкософт жжет.

Добавлено:
Не поленился, проверил: Windows 7, масштаб шрифта в системе - 100%
Имеем:
Tahoma, 6 - предел видимости находится ~8750 символов
Tahoma, 8 - предел видимости находится ~5960 символов
Tahoma, 20 - предел видимости находится ~2480 символов
Думаю, вопрос закрыт. Дельфи тут не причем. Кто сомневается, можно сделать аналогичную программу в другой среде, скажем в том же Microsoft Visual Studio 2008 и проверить на Висте или семерке.

Добавлено:
Сам сделал проект в Microsoft Visual Studio 2008 на Visual Basic. Результаты в целом повторяются, только границы чуть другие:
Tahoma, 6 - ~8190 символов
Tahoma, 8 - ~5460 символов
Tahoma, 20 - ~2519 символов

Вопрос окончательно закрыт !
Автор: spasius
Дата сообщения: 29.11.2009 14:09
psa1974
появляются ли изменения порогов лага при изменении PixelsPerInch c включенным Scale в Висте или 7 на тестовых вариантах?
Автор: snike555
Дата сообщения: 29.11.2009 14:17
Я дико извиняюсь но повторю совй вопрос:

У мну такая беда в делфи 2010 уже достала:
Когда пишешь имя фиелда в FieldName колонки грида например он ругается что такого фиелда нет в датасете (его там на самом деле нет, потому что я не определяю фиелды заранее по некоторым причинам), как сделать так чтобы не ругался? (чтобы не выполнял эту проверку)
Автор: psa1974
Дата сообщения: 29.11.2009 14:50
spasius

Цитата:
появляются ли изменения порогов лага при изменении PixelsPerInch c включенным Scale в Висте или 7 на тестовых вариантах?

Да. В семерке изменил системный масштаб на 125% (PixelsPerInch=120), в итоге в дельфийской программе для шрифта Tahoma, 8 - предел видимости уменьшился до ~5270 символов. Остальные тесты не стал проверять. Тенденция понятна и к Дельфи отношения не имеет. Однако знать ее полезно


Добавлено:
snike555
Думаю, если бы кто-то знал ответ, то обязательно тебе б ответил На мой взгляд, если фиелда нет, зачем тогда его писать в дизайнере? Смысл? Пиши динамически во время выполнения. Или я чего-то не понимаю.
Кстати, а что, в других версиях студии было по другому?
Имхо, ты хочешь не возможного - это сродни тому, что попытаться скажем, в инспекторе объектов форме или кнопке прописать в свойстве PopupMenu какое-то имя, при условии что реально на форме нету компонента ТPopupMenu с этим именем.
Автор: spasius
Дата сообщения: 29.11.2009 15:15
snike555
из тех примеров что видел или сам использовал скажу что всегда это делается динамически, кроме некоторых случаев (в основном случае справедливы для сторонних аналогов).
psa1974
согласен. тему с буферизацией можно закрыть. в случае теста на стандартной теме либо с Scale=False наблюдаем неправильную работу отрисовки в TEdit. на ум приходит только кривая реализация буферизации, хотя ввести в TEdit больше тысячи символов может потребоваться в очень редких случаях.
Автор: snike555
Дата сообщения: 29.11.2009 15:21
psa1974

Цитата:
На мой взгляд, если фиелда нет, зачем тогда его писать в дизайнере?


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

Автор: psa1974
Дата сообщения: 29.11.2009 15:45
snike555

Цитата:
а во время выполнения они появятся

Ну вот и пиши фиелды в гриде тогда, когда они появятся. На мой взгляд это логично. Так же, как и логично со стороны дизайнера студии требовать описывать связи в дизайнайме только между существующими объектами. Снова возвращаюсь к попупменю (можно ряд других примеров привести): ты не сможешь объекту написать в инспекторе объектов в дизайнтайме имя несуществующего меню ни в Дельфи 2010 нм в Дельфи 7. Чем фиелды лучше попупменю? Ничем.
А вообще все эти дела реазизуются в редакторах свойств. Ты можешь сам написать редактор свойства для свойства типа TField и реализовать там любое поведение, какое тебе заблагорассудится, зарегистрировать в студии этот редактор свойства - и наблюдать результат своей фантазии
Видимо в Дельфи 2010 чуток изменили штатный редактор свойства, и на мой взгляд, в лучшую сторону, потому как может ты и отдаешь себе отчет в своих действиях по обману студии (допуская наличие потенциальных ошибок), но не вся программистская братия такая, и польза от этой свободы, в общем случае сомнительная.

Добавлено:
spasius

Цитата:
в случае теста на стандартной теме либо с Scale=False наблюдаем неправильную работу отрисовки в TEdit

Добавлю только что тесты не зависят от используемой темы - я пробовал и на классической теме и на самой кучерявой - в обоих случаях баг присутствует .
Я подозреваю, что в ранних версиях систем (98, ХР) буфиризировались только символы (ну не объектные были системы - если взглянуть на API - нету ни одного класса - только функции и мессаги) и ограничение было 64 кб по-любому и только на кол-во символов. А в последних версиях (Виста, семерка), построенных уже на по-настоящему объектному API (.Net FrameWork) вероятно буфферизируется все вкупе, как элементы некоей сущности (объекта) - и символы и шрифт и масштаб, и может еще что-то. Имхо. И если это так, то все логично.
Автор: Frodo_Torbins
Дата сообщения: 29.11.2009 17:19
psa1974
.Net FrameWork используется в системных либах?
Автор: snike555
Дата сообщения: 29.11.2009 17:55
psa1974


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


пусть требует, но опционально

Может кто знает отключается ли эта фича?

Автор: psa1974
Дата сообщения: 29.11.2009 18:14
Frodo_Torbins
Точно не могу утверждать - я ж написал, что это мое мнение. Просто в таком случае все бы объяснялось. Все, тема окончательно ушла в оффтоп, я больше об этом ни слова...
Автор: V1s1ter
Дата сообщения: 29.11.2009 18:39
snike555

Цитата:
пусть требует, но опционально

Поскольку никто прямо не ответил, то посмею предложить посмотреть в модуле DSDefine объект TDefineField и модуль DBGrids объект TColumn.
Хоть это относится к D2007, я думаю Вы найдете все что Вам нужно и в D2010.
Автор: psa1974
Дата сообщения: 29.11.2009 18:53
snike555
Тааак. Собственно, решил таки воспроизвести ситуацию. Взял в руки Дельфи 2010, кинул на форму TDBGrid, TDataSource, TTable. Связал между собой, для TTable прописал DatabaseName = 'DBDEMOS', TableName = 'customer.db'. Никаких полей в TTable не добавлял. Иду в грид, вызываю его редактор, добавляю поля, приписываю в свойстве FieldName все, на что фантазия способна - все пучком, никаких ругательств. Вообще никаких. Пробовал и при активном и при неактивном TTable.
Что я не так сделал?
Автор: snike555
Дата сообщения: 29.11.2009 19:18
psa1974


Цитата:
Тааак. Собственно, решил таки воспроизвести ситуацию. Взял в руки Дельфи 2010, кинул на форму TDBGrid, TDataSource, TTable. Связал между собой, для TTable прописал DatabaseName = 'DBDEMOS',  TableName = 'customer.db'. Никаких полей в TTable не добавлял. Иду в грид, вызываю его редактор, добавляю поля, приписываю в свойстве FieldName все, на что фантазия способна - все пучком, никаких ругательств. Вообще никаких.  Пробовал и при активном и при неактивном TTable.
Что я не так сделал?


Хм, неужто это DOA делает, трудно в это поверить.

Добавлено:
ушел проверять
Автор: spasius
Дата сообщения: 29.11.2009 19:29
snike555
psa1974
на тестовой машине даже без обновлений студии 2010 все прошло на ура. единственное после указаний tablename & databasename сделал active:=true;
скомпилировалось. менял. игрался. все гуд.
Автор: psa1974
Дата сообщения: 29.11.2009 19:42
snike555
Не знаю кто такой этот DOA, но вполне возможно, что он подменил стандартные редакторы свойств на свои собственные, или просто у него для фиелдов используется свой тип, скажем TDOAField, в этом случае DOA может пользоваться своими редакторами свойств, не мешая другим компаноидам. В первом случае у тебя тогда везде будет проявляться этот эффект, с любыми компаноидами. Во втором - только с этим DOA.

ЗЫ: А я тут распинаюсь о высоких материях пол-дня...

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: Установка копоненты ZipTV


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