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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    greenpc

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

    Цитата:
    А это способы вызова

    у меня там идет объявление класса Exception
    а после до 354 строки как раз то что вы искали

    Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 11:50 30-01-2010
    InSe0F



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    сделал через сокеты вроде разобрался.. хочу в поток засунуть как правильней сделать - чтобы потоки не дублировались?
    - у меня таймер - когда срабатывает создается поток обработки через класс TThread.Create() - что будет когда таймер сработает второй раз? для безоспасности надо делать Free или дестрой?

    Всего записей: 533 | Зарегистр. 13-03-2006 | Отправлено: 22:37 30-01-2010 | Исправлено: InSe0F, 00:30 31-01-2010
    EugeneBoss3



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VadimLou
    Фиксу применил, теперь ошибка при открытии не вылетает.
    Вопрос по созданию (использованию индекса в VkDbf), компонент создает или поддерживает какие-либо индексы (но умолчанию должен поддерживать Clipper'овские)? Попытки подключить имеющиеся или создать новые безуспешны! В чем может быть причина?

    Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 05:03 01-02-2010
    mistie

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Что-то невероятное творится. Создаем новый проект VCL Forms в дельфях:
     

    Код:
     
    unit Unit2;
     
    interface
    Подробнее...
     

     
    После нажатия на кнопку формы приложение либо тихо завершается без всяких ошибок, либо при переключении между окном приложения и другими окнами вылезает AV at address 00000000 read of address 0000000. Пишу в Delphi 2007. Пытался трейсить, выяснил, что исключение вылетает на деструкторе таймера при обращении к win32 функции KillTimer, хотя может быть из-за трейса, ибо в обычном выполнении в except управление не передается. Причем если FreeOnTerminate:=false и завершать по кнопке testThread.WaitFor; testThread.Free - то все работает как часы. Помогите разобраться, в чем может быть дело?

    Всего записей: 2 | Зарегистр. 20-11-2009 | Отправлено: 09:34 01-02-2010 | Исправлено: mistie, 10:59 01-02-2010
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mistie
    Почему каждого надо тыкать носом в шапку???  Приведи свой пост в соответствие. Это во-первых.
     
    Во-вторых - кто тебе сказал, что во вторичных потоках можно использовать компоненты VCL? VCL - принципиально однопоточная библиотека, компоненты VCL допустимо использовать ТОЛЬКО в основном потоке. И TTimer - не исключение, поскольку он использует для своей работы невидимое окно для получения сообщений WM_TIMER и если в создавшем потоке отсутствует петля сообщений (а в TThread она отсутствует в принципе), то TTimer оказывается в лучшем случае неработоспособен. В худшем - как у тебя.

    ----------
    У программёра есть два состояния: "Втупляю" и "Попёрло"...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 10:16 01-02-2010 | Исправлено: psa1974, 10:41 01-02-2010
    mistie

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

    Цитата:
    Почему каждого надо тыкать носом в шапку???  Приведи свой пост в соответствие. Это во-первых.  

     
    Спасибо, привел.
     

    Цитата:
     
    Во-вторых - кто тебе сказал, что во вторичных потоках можно использовать компоненты VCL? VCL - принципиально однопоточная библиотека, компоненты VCL допустимо использовать ТОЛЬКО в основном потоке. И TTimer - не исключение, поскольку он использует для своей работы невидимое окно для получения сообщений WM_TIMER и если в создавшем потоке отсутствует петля сообщений (а в TThread она отсутствует в принципе), то TTimer оказывается в лучшем случае неработоспособен. В худшем - как у тебя.

     
    Во-первых, таймер создается в конструкторе вторичного потока, который вызывается в контексте основного. По правилу "Дома, который построил Джек", таймер так же будет создан в контексте основного - я же не пихаю это в Execute. Пожалуйста, будьте внимательны. Во-вторых, он вполне работоспособен, вне зависимости от способа завершения потока - вручную или через FreeOnTerminate. Единственная разница в том, что если завершать через FreeOnTerminate, то наблюдается вот такая фигня. Причем, вновь замечу, в деструкторе исключений не вылетает, вылетает AV ТОЛЬКО при переключении между окном приложения и другими.  
     
    И так, на всякий случай: вопрос мой звучит как "почему так происходит?" а не "как сделать по-другому?".

    Всего записей: 2 | Зарегистр. 20-11-2009 | Отправлено: 11:12 01-02-2010
    Man Without Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Нужно перевести число из 16-ной в десятичную, например: 0xF (255 вроде как, в десятичной). Использую функцию strtoint:
    cxCurrencyEdit1.value := strtoint('0xF');
    Получаю 15 а не 255. Может как то можно по другому это реализовать?
    BDS 2006 + DevExpress v48.
    Заранее благодарен.
     
    Добавлено:
    Сори, затупил: 0xF это 15, в датасете поле макс 3 знака, поэтому 4й символ обрезает.

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 15:46 01-02-2010
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Man Without Face
     
    cxCurrencyEdit1.value := strtoint('$FF');

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 16:38 01-02-2010
    Man Without Face



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите пож как скрыть программу, чтобы не видно было по alt-tab?
    Этот код в XP не работает:
    var
     ExtendedStyle : integer;
    begin
      Application.Initialize;
      ExtendedStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE);
      SetWindowLong(Application.Handle, GWL_EXSTYLE,
        ExtendedStyle or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW);
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
     
    Заранее благодарен.

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 16:58 01-02-2010
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Man Without Face
    Раньше работало, может  
    Application.Title := '';  
    ?
     
    Добавлено:
    Man Without Face
    Да и забыл спосить
    ShowMainForm = True
    ?

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 22:23 01-02-2010
    Man Without Face



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

    Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 09:34 02-02-2010
    psa1974



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

    Цитата:
    Подскажите пож как скрыть программу, чтобы не видно было по alt-tab?

    Попробуй файл проекта *.dpr переписать так: ПРИМЕР

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 10:52 02-02-2010 | Исправлено: psa1974, 11:53 02-02-2010
    Vo1T



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа хорошие, объясните почему программа считает неверно
    Код
     
    Добавлено:
    Перезапустил Delphi - считает верно ... без той строки

    Всего записей: 312 | Зарегистр. 20-08-2008 | Отправлено: 22:02 02-02-2010 | Исправлено: Vo1T, 23:37 02-02-2010
    erdeuz

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть программа которая использует БД paradox через BDE, с недавних пор начала тормозить при работе нескольких пользователей, причем у первого кто запустил программа работает нормально, у второго тормозит, у следуещего еще сильнее томозит и т.д, у первого же пользователя продолжает работать нормально %-|
    База данных находится на сетевом диске. Заметил, что когда ничего не запущено, файлы с БД быстро копируются, стоит запустить программу, при копировании начинаются задержки. С того же сервера "консультант" работает без задержек.
     
    Есть идеи, что могло послужить причиной???

    Всего записей: 6 | Зарегистр. 15-05-2009 | Отправлено: 14:36 03-02-2010
    snike555



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    erdeuz
    А не было мысли мол если базой пользуются несколько человек одновременно, то перейти на СУБД посеръезднее?

    Всего записей: 380 | Зарегистр. 02-10-2009 | Отправлено: 16:55 03-02-2010
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    erdeuz
    Саму программу менял, в смысле компилил и т.п. или "ничего не трогал, а оно..."
    snike555
    Я думаю, если бы об этом были мысли, то человек и спросиб бы по другому.
    Я переводил проект однажды и не смотря на наличие исходников и либеральность AbsolutDatabase не могу сказать, что это были мои лучшие дни...

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 17:05 03-02-2010
    akaGM

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

    Код:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ...
      Randomize;
      G := Random;
    ...
    end;

    вообще говоря это неверное использование генератора случ. чисел -- ГСЧ у тебя инициализируется всякий раз по Button1Click
    правильно надо делать так:

    Код:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    ...
      Randomize;
      G := Random;
    ...
    end;

    а Randomize вызывать один только раз при старте программы, например наверху в самом .dpr или в FormCreate()

    Всего записей: 24112 | Зарегистр. 06-12-2002 | Отправлено: 17:29 03-02-2010
    Umbrall



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    возникла небольшая проблема при использование объекта Char. Мне нужно построить график который замкнутой линии, проблема возникает при нарисовки его вся фигура закрашивается. как можно сделать что бы график строился по точкам с той последовательностью что я и задавал?

    Всего записей: 168 | Зарегистр. 18-03-2006 | Отправлено: 02:24 05-02-2010
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Umbrall
    Приведи свой способ решения, при котором возникает проблема, потому что не совсем понятно что имеется ввиду, когда ты сказал "при использовании объекта Char" и как это связано с рисованием графика...

    ----------
    У программёра есть два состояния: "Втупляю" и "Попёрло"...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 04:14 05-02-2010
    data man



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

    Цитата:
    что имеется ввиду

    Скорее всего TChart.
     
    Umbrall
    И да, лучше привести свой код или вопрос сформулировать как-то почётче.

    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 04:31 05-02-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