Участвуйте в конкурсе "Статья месяца" и вы выиграете книгу по Delphi от магазина ОЗОН. В конце каждого месяца Вами будет выбран лучший автор, который и получит книгу. Присылайте ваши статьи на e-mail: autor@cooler.com.ua.
ув. Подписчики. пожалуйста оцените труд данных авторов отдав свой голос за того, кого вы считаете достойным. 31 июля по итогам голосования лучшему автору будет подарену книга от магазина "ОЗОН". Если вы хотите увидить своё имя среди авторов - то прочитайте условия конкурса
Пожалуй не секрет, что
тот, кто только что сел за Дельфи делает
весьма медленные программы...
О некоторых
секретах оптимизации сегодня и пойдет речь
в первой половине моей стати :
Старайтесь выносить
побольше в процедуры, программные циклы
это удел VB программистов
Не пихайте в
программу много картинок, лучше держать
их снаружи: По моим личным наблюдениям,
лимит места в EXE составляет 5 картинок
800x600x32(BMP) , что около 6 MB далее программа
отказывается записываться и
компилироваться...
Если программа
действительно большая , нужно делать длл (см
. в конце)
У программы должен
быть максимально простой интерфейс (и
побольше всплывающих подсказок), т.е ни
каких мигающих лампочек на форме и
прочего изыска, для стилизации, от силы
можно использовать скин (coolform,skinfactory) или
форму нестандартной формы (ух-ты как
смачно сказал!).
Но наиболее важной
частью оптимизации являются переменные,
допустим , вы используете в программе некое
число которое за всю программу принимает
значения от 1 до 255 или 140 , если вы
продекларировали его, как Integer, то влаг вам в
руки, ведь тут более уместно shortint (-127..127) или
byte (0..255), если у вас не туча оперативной
памяти, то так вы ее сэкономите...
Подойдем к этой
проблеме с другой стороны, вы пишете игру (не
важно какую) , где есть счетчик очков, если у
вас за некое действо дают по 10 очков то это
луче сделать Integerом , но если по 100 разумнее
применять Longint или обнулять результат по
переходу на следующий уровень, иначе скоро
наступит переполнение счетчика и он вернет
ошибку с кодом -1(переполнение в области
выделенной памяти)
Dll , как много в этом
слове...
Вы будете приятно (или
не очень?) удивлены, но порывшись в
документациях и в сети, я не нашел(!) ничего
про то как правильно писать DLL...
Сейчас я исправлю эту
оплошность(на сколько смогу).Буквально 3 дня
до рассылки я сам сел за эту работу, и
методом тыка вывел следующую штуку:
Ну это знают все(надеюсь):чтобы
написать библиотеку DLL в начале вместо UNIT
пишется LIBRARY, тем самым мы говорим
компилятору что это уже не EXE.
Если DLL должна
поставлять процедуру , допустим, с
названием dosomething то после процедуры надо
написать:
exports dosomething index n;
где n целое чило, разное для каждой
прцедуры. Если вы пишите функцию, сделайте
то же.
3. Для
подключения DLL из UNITа в unitе , после строки
uses надо написать :
4. Если ваш DLL
использует компоненты формы, то их надо
прописать в описательной части вместе с
формой:
Procedure
dosomething(form:tform; something: tsomething);external 'имя.dll'; при
передаче DLL надо и в UNIT и в DLL
название формы ,при
вызове функции оно должно совпадать
5. в
некоторых случаях вмето Tform надо предавать ,
скажем Tform1(2,3.....), тогда в DLL надо добавить uses
unitN, с номером того узла который содержит
конкретную форму
Для тех кто немного
запутался предлагаю листинг своего DLL: