Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5

Модерирует : ShIvADeSt

ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 4

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).

Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:09 28-06-2009 | Исправлено: psa1974, 12:00 02-02-2010
    aspis

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Контроль границ массива по умолчанию выключен. Мало того - я ни разу не встречал, чтоб кто-то где-то его включал.

    В отладочной версии обязательно включаю.
     

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

    Присоединяюсь. Выскакивала ошибка доступа к памяти (EAccessViolation), причина которой был как раз выход за пределы массива.

    Всего записей: 87 | Зарегистр. 27-08-2007 | Отправлено: 20:41 16-04-2010
    Man_Without_Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пож, что не так делаю: есть Dll и exe. Вызываю отчеты из Dll (на форме в Dll, кот не показываю лежат компоненты frx). Нужно создать еще одну форму, в кот будут вводиться параметры для одного отчета. Передаю handle как и в той форме, но что то не то. Exe: Подробнее...
    Dll: Подробнее...

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 17:41 19-04-2010
    AviDen



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Так а в чём, собственно, вопрос?

    Всего записей: 316 | Зарегистр. 05-06-2007 | Отправлено: 19:09 19-04-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Man_Without_Face
    Обычно в таких случаях помогает включение рантайм-пакетов.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 19:50 19-04-2010
    AviDen



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins, не сбивайте человека с мысли, мы ему уже и так две страницы объясняли разницу между BPL и DLL, если он теперь захочет от DLL уйти, придётся всё по новой повторять...

    Всего записей: 316 | Зарегистр. 05-06-2007 | Отправлено: 20:16 19-04-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AviDen
    Какая разница BPL или DLL? Пусть и для Dll и для Exe зайдет в "Project" -> "Options" -> "Packages" и поставит галку "Build with runtime packages". И все, его проблема будет решена (при условии что для Dll и Exe используется одна версия делфи/билдера).

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 21:28 19-04-2010
    AlexIntegral



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пожалуйста, можно ли в цикле, скажем for, сделать паузу? И как это можно реализовать. (кроме break и continue)

    Всего записей: 245 | Зарегистр. 31-05-2008 | Отправлено: 22:35 19-04-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlexIntegral
    Либо Sleep(n{секунд}*1000), либо так если приложение должно реагировать на действия пользователя во время паузы. Последний способ требует акуратной блокировки интерфейса, чтобы пользователь не нажал чего лишнего.
     
    Man_Without_Face
    Немного прояснить ситуацию с пакетами пожалуй поможет статейка: http://web.archive.org/web/20080630063219/http://softwarer.ru/packages.html

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:04 19-04-2010 | Исправлено: Frodo_Torbins, 23:37 19-04-2010
    Man_Without_Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    В том то и дело что ехе - Delphi 5 а Dll - Delphi 2009. Вопрос в том почему вторая форма не загружается, может как то не так создаю? (первая невидимая, а вторую нужно показать для внесения значений).
     
    Добавлено:
    Спасибо, вроде сделал...

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 08:58 20-04-2010
    Who_is_you



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Читаю с Сом порта функцией ReadFile по приходу символа (ставлю маску EV_RXFLAG).
    Открываю порт, жду символ, читаю.
    Нужно принять 10 таких строк.
     
    Если запускаю программу *.exe, то все четко работает.
    Если не выходя из программы закрываю порт, а потом открываю заново и читаю, то первую строку не получаю.
    Получается вошел в программу: первый раз прочитал 10 строк, а второй, третий и т.д. - 9строк.
     
    Как с этим бороться?

    Всего записей: 42 | Зарегистр. 13-04-2009 | Отправлено: 11:06 20-04-2010
    Man_Without_Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Может кто подскажет почему в Dll при рантайме не поддерживаются скины (DevExpress v48), в дезайн выставляю и все отлично меняется? В exe и там и там нормально.

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 12:00 20-04-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Man_Without_Face
    Нормальная работа VCL в dll без использования пакетов не гарантируется, об этом написано в справке. Обычно это приводит к возникновению самых странных и непредсказуемых глюков. Собственно поэтому вас тут так агитировали использовать пакеты. Но раз у вас разные версии делфи, и это не возможно, то остается только минимизировать использование VCL в библиотеке.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 12:55 20-04-2010 | Исправлено: Frodo_Torbins, 13:02 20-04-2010
    apnss

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
     
    о каких конкретно глюках идет речь, интересно?  
     
    у меня, к примеру, описан  класс формы - родитель всех МДИчайлдов проекта.  часть  чайлдов  реализована  в виде модулей приложения, а часть  в виде ДЛЛ дабы не прикомпиливать к основной  ЕХЕ-хе  фастреорт  и иеже с ним. Пришлось пострадать с реализацией калбэков для обновления менюх главной формы, но сейчас  - все нормально  крутиться  
     
     
    Добавлено:
     
    а, забыл добавить  
     
    часть методов родительской формы представляет собой абстрактные методы для поддержки универсальности всех наследников с точки зрения главной формы приложения.    

    Всего записей: 708 | Зарегистр. 26-02-2002 | Отправлено: 15:10 20-04-2010
    AlexIntegral



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    для Frodo_Torbins
     

    Цитата:
    AlexIntegral  
    Либо Sleep(n{секунд}*1000), либо так если приложение должно реагировать на действия пользователя во время паузы. Последний способ требует акуратной блокировки интерфейса, чтобы пользователь не нажал чего лишнего.

     
    Можно ли делать так?
     
      for i:=2 to n do
       begin
          Application.ProcessMessages;
          if RadioButton1.Checked=true then Application.HandleMessage;
          ....
          end;
     
    Цикл приостанавливается, но при движении курсора над формой цикл медленно работает (зависит от того как быстро двигать курсором), можно ли этого избежать?

    Всего записей: 245 | Зарегистр. 31-05-2008 | Отправлено: 22:34 20-04-2010 | Исправлено: AlexIntegral, 22:39 20-04-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    apnss
    Глюки были самые разные, от странного поведения контролов до неожиданных AV.
     
    AlexIntegral
    Выделю ка я свой код в отдельную процедуру, чтобы было понятнее:
    Код:
    Procedure Wait;
    begin
      repeat
        Application.HandleMessage;
      until RadioButton1.Checked=true;  
      //ждем пока юзер не нажмет радиобуттон
      //возможно нужно "<>", вам виднее
    end;
     
      for i:=2 to n do
      begin
        //тут что то делали, и решили передохнуть
        Wait;
        //...
      end;
    Или может быть вы хотели делать паузу по желанию пользователя?

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 22:57 20-04-2010 | Исправлено: Frodo_Torbins, 22:58 20-04-2010
    apnss

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    "Левые" компоненты юзались? в одном проекте было что-то похожее, но после того как  искоренили  TMS  все заработало как часы...

    Всего записей: 708 | Зарегистр. 26-02-2002 | Отправлено: 22:59 20-04-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    apnss
    В "левых" компонентах вся суть и была. В конце-концов решено было просто обьединить код библиотеки и приложения. После этого все глюки чудесным образом исчезли.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:18 20-04-2010 | Исправлено: Frodo_Torbins, 23:19 20-04-2010
    AlexIntegral



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
     
    Большое спасибо, я понял

    Всего записей: 245 | Зарегистр. 31-05-2008 | Отправлено: 23:29 20-04-2010 | Исправлено: AlexIntegral, 23:30 20-04-2010
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть поисковая машина Интегра  http://www.solarix.ru/ в ней обертка для delphi кто нибудь ее использовал а то я делаю так  
      var
       new: PInteger;
    begin
      new:=SearchEngineApi.sol_CreateSearchEngine();
        SearchEngineApi.sol_LoadDictionaryA( new, PChar('E:\dictionary.xml'));
      SearchEngineApi.sol_DeleteSearchEngine(new);
     
    end;
    лезет ошибка при загрузке словаря хотя в их файле вызов описан так
     
     
    // Load the dictionary (morphology and syntax analyzer + thesaurus)
    // Return: 2 - already loaded, 1 - ok, 0 - error has occured.
    function sol_LoadDictionaryA( hEngine: PInteger; Filename: PAnsiChar ): integer; stdcall; external 'faind.win32.dll' name 'sol_LoadDictionaryA';
     
     

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:46 21-04-2010
    Odysseos



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SIgor33
     
    Какая версия Delphi? Если 2009+ - то вызов SearchEngineApi.sol_LoadDictionaryA( new, PChar('E:\dictionary.xml')); поправьте вот так - SearchEngineApi.sol_LoadDictionaryA( new, PAnsiChar('E:\dictionary.xml'));

    Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 11:18 21-04-2010
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5
    ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru