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

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



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

    Цитата:
    Вобщем-то в модуле F_StatBeat.pas в строчке 126 необходимо координаты правильно выставить для StretchBlt.

    Вот что у меня получилось

    Код:
     
    StretchBlt(pcp.hdcMem, pcp.biHalf-1, 0, -pcp.LeftPos, pcp.biHeight, hdcMem, pcp.biHalf, 0, pcp.LeftPos, pcp.biHeight, SRCCOPY);
     

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



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ShIvADeSt
    Не знаю, как по мне, то неплохо было бы если бы была такая тема, где выкладывались демо-примеры, чтобы каждый желающий смог посмотреть реализации.
    V1s1ter
    Спасибо.

    Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 12:47 05-05-2010
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто нибудь делал парсер для svg формата. Будь добры скиньте.

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:29 07-05-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SIgor33
    В библиотеке AggPas кое что есть: http://www.crossgl.com/aggpas/aggpas-svg.htm

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



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

    Цитата:
    Не знаю, как по мне, то неплохо было бы если бы была такая тема, где выкладывались демо-примеры, чтобы каждый желающий смог посмотреть реализации.

    Организуй такую тему

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:43 08-05-2010
    egerLESHIK



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, уважаемые. Тут возник вопрос такого плана:
    Использую FastReport для вывода на печать таблицы (cxGrid) в Form1. На Form2 есть другая таблица (StringGrid), в нее производится загрузка данных из excel-файл.
    Все отрабатывает за исключением одного момента.  
    Если я загрузку данных в StringGrid не произвожу, то печатная форма (FastReport) выводится отлично. Если же производил загрузку - то при попытке вывести на печать данные с cxGrid на Form1 - получаю диалог печати с отсутствующим листом с данными - который должен выводиться на печать. Приходится перезапускать программу. Может кто сталкивался, в каком направлении искать ошибку? Спасибо.

    Всего записей: 950 | Зарегистр. 24-03-2004 | Отправлено: 21:57 10-05-2010
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 22:24 10-05-2010
    egerLESHIK



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Походу этот баг наблюдается еще до импорта данных в таблицу StringGrid.
    Она возникает когда я уже выбрал файл для импорта:
    Код процедуры выбора файла ниже:
     
    Код
     

    Всего записей: 950 | Зарегистр. 24-03-2004 | Отправлено: 13:32 11-05-2010 | Исправлено: egerLESHIK, 15:26 11-05-2010
    mdid

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    egerLESHIK
     
    попробуте положить TOpenDialog на форму а не создавать динамически...так же попробуйте оставить Button2Click пустым(тело процедуры)...а потом открыть отчет...может вовсе и не в этом куске дело...так же гляньте что в OnShow OnCreate onClose в Form2

    Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 13:51 11-05-2010
    egerLESHIK



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mdid
     
    Событий OnShow OnCreate onClosе нет на Form2 Попробовал просто вбить путь к файлу через процедуру загрузки в StringGrid - данные загрузились, потом закрыл Form2 и попробовал вывести печатную форму на Form1 из cxGrid код отработал - форма создалась без проблем.
     
    Положил компоненту Opendialog на Form2 переписал код чтобы открывало через нее результаты такие:
    - открываю диалог, не выбираю файл, закрываю Form2, формирую печатную форму для cxGrid - все работает;
    - открываю диалог, выбираю файл, закрываю Form2, формирую печатную форму для cxGrid(загрузку в StringGrid не производил) - не работает;
     

    Всего записей: 950 | Зарегистр. 24-03-2004 | Отправлено: 15:18 11-05-2010
    YFred



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Пишу сервер на Delphi, использую компонент   TServerSocket
    приложение клиент мне отправляет данные как мне в обработчике события OnClientRead обработать данные побайтово? в первом байте у меня находится команда к серверу и мне надо этот байт прочитать. И в зависимости от того что в нем читать определенным образом оставшиеся данные.
    Помогите пожалуйста.

    Всего записей: 210 | Зарегистр. 03-03-2005 | Отправлено: 17:04 11-05-2010
    eddoc



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Камрады, помогите разобраться.
     
    Решил при сохранении данных в БД показывать заставку-сплэш в основном потоке, а сами данные сохранять в треде (Thread). Вот беда: "не видятся" из треда датасеты да транзакции
     
    код
    Как быть, чего и куда дописать?
     

    Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 01:24 12-05-2010 | Исправлено: eddoc, 01:27 12-05-2010
    Odysseos



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    eddoc
     
    1. Едва ли TransWrite и DSet - глобальные переменные, скорей всего - это поля класса TForm1 (ну, или еще какого) - и обращаться к ним из потока надо как к Form1.TransWrite и Form1.DSet;
     
    2. Если речь идет о TIBTransaction и TIBDataSet (или о TpFIBTransaction и TpFIBDataSet) - то так работать оно будет только с fbclient.dll версии 2.5 и позже, более ранние версии fbclient.dll не позволяют работать с одним коннектом из разных потоков, на кажый поток надо создавать отдельный коннект (то есть - в терминах Delphi - отдельный TIBDatabase).

    Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 03:43 12-05-2010 | Исправлено: Odysseos, 18:29 12-05-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    eddoc
    Лучше бы вы сплеш в поток запихнули: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1169

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 11:48 12-05-2010
    jonikDk



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

    Цитата:
    Решил при сохранении данных в БД показывать заставку-сплэш в основном потоке, а сами данные сохранять в треде

    мягко говоря странное решение, обычно делают наоборот

    Всего записей: 1604 | Зарегистр. 01-03-2004 | Отправлено: 13:41 12-05-2010
    Varenik



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Odysseos
    Цитата:
    Если речь идет о TIBTransaction и TIBDataSet (или о TpFIBTransaction и TpFIBDataSet) - то так работать оно будет только с fbclient.dll версии 2.5 и позже, более ранние версии fbclient.dll не позволяют работать с одним коннектом из разных протоков, на кажый поток надо создавать отдельный коннект (то есть - в терминах Delphi - отдельный TIBDatabase).
    Вот интересно! А через BDE  - позволяют  

    ----------
    Если нравится, считайте, что получилось…

    Всего записей: 1766 | Зарегистр. 21-07-2001 | Отправлено: 14:30 12-05-2010
    eddoc



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

    Цитата:
    обычно делают наоборот

    пытался, сплэш не рисуется
     
    Вообще-то, я потоки только начал осваивать, поэтому просьба: можно показать (хотя бы схематично), как отрисовать сплэш в дополнительном потоке?
     
    Odysseos

    Цитата:
    на кажый поток надо создавать отдельный коннект

    у меня фибы и клиентская либа от 2.1.3
    Коль вопрос стоИт так, то в отдельный поток, конечно же, совать БД не стОит (простите за каламбур). Спасибо за замечание.
     
    Frodo_Torbins
    за линку спасибо.  
     
    Читал, с автором компоненты общался на скруле. Хочу понять принцип работы треда (в целях самообучения), увы, на все случаи жизни компонент не напасешься.

    Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 17:17 12-05-2010 | Исправлено: eddoc, 17:20 12-05-2010
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    eddoc
    Хм, там в отдельном потоке идет работа с окнами посредством винапи, т к с помощью VCL этого делать нельзя.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 17:42 12-05-2010
    jonikDk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    eddoc
    кстати поищи SplashMsg от softwarera на sql.ru готовая реализция splash окна.

    Всего записей: 1604 | Зарегистр. 01-03-2004 | Отправлено: 20:07 12-05-2010
    eddoc



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins, jonikDk
    камрады, все любезно указанные вами способы я уже пробовал. Кстати, от softwarer'a сплэш тоже просто так не отрисовывается. Потому и просил помочь.  
     
    Суть одна: пока в основном потоке данные сохраняются в базу, хотелось бы в дополнительном потоке (треде) крутить перед носом юзера окошко. Пробовал отрисовывать его в методе TThread.Execute примерно так (пишу по памяти, не обращайте внимание на мелочи - важна суть)
    код
     
    Заметил, что сплэшик рисуется один раз сразу после окончания работы основного VCL-потока (основной поток запускается стандартно, сразу же после запуска доп.потока). Вот я и пытаюсь понять, почему код в треде не работает параллельно основному (в отладчике Дельфей это видно).
     
    Камрады, подмогните. Что-то втупляю.
     

    Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 00:38 13-05-2010 | Исправлено: eddoc, 16:34 13-05-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