Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

СообЧА. Программирование на Delphi


Служба Рассылок Subscribe.Ru проекта Citycat.Ru


  "базы данных"  Подписчиков: 788 
   
.::::: СообЧа - Программирование на Delphi :::::.
  © 2000 - 2001COOLer  Дизайн: Yoghurt 
   

 

Оглавление
  В выпуске  Рассылка СообЧА 
    
  • Что "глюк" грядущий нам готовит?

  • Выбор лучшего

  • Конкурс

  • Книги
  •  
    Рассылки Subscribe.Ru
    СообЧа (СООБщество ЧАйников). Обмен опытом, вопросы, ответы.

     Назад к оглавлению  
      
      Конкурс 
     
      
    Участвуйте в конкурсе "Статья месяца" и вы выиграете книгу по Delphi от магазина ОЗОН. В конце каждого месяца Вами будет выбран лучший автор, который и получит книгу. Присылайте ваши статьи на e-mail: autor@cooler.com.ua.
     Назад к оглавлению  
      
      Выбор лучшего 
     
      
    ув. Подписчики. пожалуйста оцените труд данных авторов отдав свой голос за того, кого вы считаете достойным. 31 июля по итогам голосования лучшему автору будет подарену книга от магазина "ОЗОН". Если вы хотите увидить своё имя среди авторов - то прочитайте условия конкурса
    Pixel
    PILOT
     Назад к оглавлению  
      
      Что "глюк" грядущий нам готовит? 
     
      

    Пожалуй не секрет, что тот, кто только что сел за Дельфи делает весьма медленные программы...

     О некоторых секретах оптимизации сегодня и пойдет речь в первой половине моей стати : 

    1. Старайтесь выносить побольше в процедуры, программные циклы это удел VB программистов

    2. Не пихайте  в программу много картинок, лучше держать их снаружи: По моим личным наблюдениям, лимит места в EXE составляет 5 картинок 800x600x32(BMP) , что около 6 MB далее программа отказывается записываться и компилироваться...

    3. Если программа действительно большая , нужно делать длл (см . в конце)

    4. У программы должен быть максимально простой интерфейс (и побольше всплывающих подсказок), т.е ни каких мигающих лампочек на форме и прочего изыска, для стилизации, от силы можно использовать скин (coolform,skinfactory) или форму нестандартной формы (ух-ты как смачно сказал!).

    Но наиболее важной частью оптимизации являются переменные, допустим , вы используете в программе некое число которое за всю программу принимает значения от 1 до 255 или 140 , если вы продекларировали его, как Integer, то влаг вам в руки, ведь тут более уместно shortint (-127..127) или byte (0..255), если у вас не туча оперативной памяти, то так вы ее сэкономите...

    Подойдем к этой проблеме с другой стороны, вы пишете игру (не важно какую) , где есть счетчик очков, если у вас за некое действо дают по 10 очков то это луче сделать Integerом , но если по 100 разумнее применять Longint или обнулять результат по переходу на следующий уровень, иначе скоро наступит переполнение счетчика и он вернет ошибку с кодом -1(переполнение в области выделенной памяти)  

    Dll , как много в этом слове...

    Вы будете приятно (или не очень?) удивлены, но порывшись в документациях и в сети, я не нашел(!) ничего про то как правильно писать DLL... 

    Сейчас я исправлю эту оплошность(на сколько смогу).Буквально 3 дня до рассылки я сам сел за эту работу, и методом тыка вывел следующую штуку:

    1. Ну это знают все(надеюсь):чтобы написать библиотеку DLL в начале вместо UNIT пишется LIBRARY, тем самым мы говорим компилятору что это уже  не EXE.

    2. Если DLL должна поставлять процедуру , допустим, с названием dosomething то после процедуры надо написать:

       exports dosomething index n; где n целое чило, разное для каждой прцедуры. Если вы пишите функцию, сделайте то же.

       3.    Для подключения DLL из UNITа в unitе , после строки uses надо написать : 

       Procedure dosomething (описательная часть);external 'имя.dll';

       4. Если ваш DLL использует компоненты формы, то их надо прописать  в описательной части вместе с формой: 

        Procedure dosomething(form:tform; something: tsomething);external 'имя.dll'; при передаче DLL надо и в UNIT и в DLL

       название формы ,при вызове функции оно должно совпадать

       5. в некоторых случаях вмето Tform надо предавать , скажем Tform1(2,3.....), тогда в DLL надо добавить uses unitN, с номером того узла который содержит конкретную форму

    Для тех кто немного запутался предлагаю листинг своего DLL: 

     

     

    library Project2;


    uses

    unit1,
    SysUtils,
    Classes,
    Windows, Messages,mmsystem, Graphics, Controls, Forms, Dialogs,
    StdCtrls,ExtCtrls;

    {$R *.RES}




    procedure getconsole(form:tform1;);safecall;

    begin
    application.messagebox('test','test',1);

    form2.label1.caption:='Оно работает!!'
    end;


    exports getconsole index 1;
    begin
    end.скомпилируйте его и вызоите из приложения коммандой getconsole(form1);

    Потом можете на базе этого кода сделать свой DLL

     

    Автор статьи :Pixel (pixel@novgorod.net http://pixelsoft.narod.ru )


    © COOLer


    Zaluskiy Anton(COOLer)    - ведущий проекта    "Мир Delphi"



    о3он TopList

    http://subscribe.ru/
    E-mail: ask@subscribe.ru
    Отписаться Рейтингуется SpyLog

    В избранное