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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



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

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


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


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MoLnuS
    http://www.delphikingdom.com/asp/answer.asp?IDAnswer=40427

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 21:37 31-05-2013
    MoLnuS



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

    Цитата:
    MoLnuS
    for i := ComponentCount - 1 downto 0
    удалил первый элемент, ComponentCount уменьшилось на 1 единицу, а паскале границы цикла вычисляются один раз. Усек идею?

    Вообще не усек. И какая разница, если оно таки вычитается единожды?
    Допустим, есть 5 элементов - цикл прошагает от 4 до 0 раз или же от 0 до 4-ых раз и там и там выйдет 5 шагов. Разница-то в чем в итоге?)))
     
    В любом случае от того, в какую сторону шагать - ничего не сменилось. Абстракт Ерроры так и летят.
     
     
    Добавлено:
    Frodo_Torbins

    Цитата:
    MoLnuS
    http://www.delphikingdom.com/asp/answer.asp?IDAnswer=40427

    Спасибо большое, полезно и подробно.
    Но вот даже в таком случае у меня ошибка доступа к памяти=((( Ну как там написано, в некоторых случаях может все же не работать и останется только прятать..
     
    Думаю, вариантов больше нет или же их просто бессмысленно искать. Решил, спрячу злополучную кнопку, а потом буду ловить и удалять каждые n-секунд\минут -  как предлагалось выше.
     
    Спасибо всем, кто поучаствовал в решении данной проблемы=)

    Всего записей: 191 | Зарегистр. 21-05-2009 | Отправлено: 10:21 01-06-2013
    miwa

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

    Цитата:
    Вообще не усек. И какая разница, если оно таки вычитается единожды?  

    В том, что единожды вычислилось что у тебя ЧЕТЫРЕ объекта. Потом ты один удалил. У тебя осталось ТРИ. А цикл-то до ЧЕТЫРЕХ. Соотвественно, при обращении к четвертому элементу, который перестал существовать, у тебя вылезает ошибка доступа к памяти.
     

    Цитата:
    В любом случае от того, в какую сторону шагать - ничего не сменилось. Абстракт Ерроры так и летят.  

    Значит, у тебя есть еще одна ошибка в коде. Надо смотреть код дальше.

    Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 12:34 01-06-2013
    Frodo_Torbins

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

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 15:30 01-06-2013
    LadyOfWood

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

    Цитата:
    Абстракт Ерроры так и летят.  

    Он возникает при обращение к абстрактному методу, смотри call stack.

    Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 20:06 02-06-2013
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые знатоки, возникла необходимость написания сетевой проги. Все бы ничего, но заспорили мы вот о чем:
    что лучше использовать - асинхронный режим, основанный на событиях или асинхронный режим, основанный на сообщениях.
    Не поделится ли кто опытом?
    Спасибо.

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 14:16 06-06-2013
    miwa

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grande
    Как всегда, зависит от реализации. «Дьявол в мелочах» © Плюс нам отсюда не видно, что лучше для вас в ваших условиях.

    Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 14:49 06-06-2013
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Думаю
    Цитата:
    Как всегда, зависит от реализации.

    Думаю, на событиях лучше подходит для безоконных программ, а с окнами лучше использовать сообщения.

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 15:06 06-06-2013
    miwa

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grande
    Ну вот и говорю - отсюда не видно, что у вас там и как: является ли слушатель сервисом, или оконным приложением; в трее висит или отдельным потоком в основной программе крутится.
     
    Так что - на общие вопросы получите общие ответы

    Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 16:09 06-06-2013
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    miwa
    Вы правы
    Спасибо.

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 07:31 07-06-2013
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Имеется прцедура для приема инфы из сокета:

    Код:
     
      case WSAGetSelectEvent(Msg.LParam) of
        FD_Read:
        begin
          ioctlsocket(FrameSocket, FIONREAD, LenOfBuf);
          SetLength(Local, LenOfBuf);
          Recv(FrameSocket, PChar(Local)^, LenOfBuf, 0);
          ReceiveBuffer := ReceiveBuffer + Local;
          SendMessage...
          ...

    Прочитал на королевстве, что лучше делать так:

    Код:
     
      case WSAGetSelectEvent(Msg.LParam) of
        FD_Read:
        begin
          ioctlsocket(FrameSocket, FIONREAD, LenOfBuf);
          SetLength(Local, LenOfBuf);
          Recv(FrameSocket, PChar(Local)^, LenOfBuf, 0);
          ReceiveBuffer := ReceiveBuffer + Local;
          WSAAsyncSelect(FrameSocket, hFrame, 0, 0);
          SendMessage...
          WSAAsyncSelect(FrameSocket, hFrame, WM_Connect, FD_Read);
          ...

     
    А не будет ли теряться информация в сокете после WSAAsyncSelect(FrameSocket, hFrame, 0, 0);?
    Спасибо.

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 09:07 24-07-2013 | Исправлено: Grande, 09:08 24-07-2013
    vavavol



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ребята, помогите! Delphi5, обычная SpeedButton. Свойство Glyph загружена картинка. У соседа форма открывается нормально. У меня с теми же исходниками формы пишет: "SpeedButton.Glyph: Stream read error". Винда одинакова - Win7(64)

    Всего записей: 181 | Зарегистр. 25-01-2006 | Отправлено: 18:08 28-08-2013
    MGAlex



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vavavol
    У соседа тоже Delphi5?
    Попробуйте заново загрузить картинку в Glyph.

    Всего записей: 1885 | Зарегистр. 12-10-2007 | Отправлено: 18:25 28-08-2013
    vavavol



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

    Цитата:
    У соседа тоже Delphi5?  
    Попробуйте заново загрузить картинку в Glyph.
     

     
    В том то и дело, что такая же Delphi5. Он берёт форму с VSS, как и я. Оба убиваем у себя - и берём с сервера. Менять что-то на форме не имею право. Нужно просто собрать проект

    Всего записей: 181 | Зарегистр. 25-01-2006 | Отправлено: 18:35 28-08-2013
    MGAlex



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Так менять ничего и не нужно. Просто загрузите по новой ту же самую картинку.
    Если Вы заходите в Glyph, картинка видна?

    Всего записей: 1885 | Зарегистр. 12-10-2007 | Отправлено: 19:19 28-08-2013
    A_V

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vavavol
    dfm в текстовом виде сохранена? выложите ее сюда что-ли, что гадать )

    Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 00:09 29-08-2013 | Исправлено: A_V, 00:09 29-08-2013
    vavavol



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

    Цитата:
    dfm в текстовом виде сохранена? выложите ее сюда что-ли, что гадать )

     
              object ExecuteSpeedButton: TSpeedButton
                Left = 1
                Top = 1
                Width = 21
                Height = 21
                Hint = 'Выполнить действие'
                Flat = True
                Glyph.Data = {
                  26010000424D2601000000000000000000002800000010000000100000000100
                  040002000000B000000000000000000000000000000000000000000000000000
                  8000008000000080800080000000800080008080000080808000C0C0C0000000
                  FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0006DD023008DD
                  000006DD0004D30D06DD000006DD0004D3B006DD000004DD0008D3000F0D04DD
                  000004DD02D304FB02F004DD000006DD000A3FB0333DDD00000006DD00063BFB
                  0D0004DD00000004DDD304000004BFB004DD00000004DDD308FB00040DDD0000
                  04DD000C3FBFB0333DDD000004DD023B04FB020D04DD000004DD02D304BF02B0
                  04DD000004DD02D306FB00040DDD000006DD023F04BF0004B0DD000006DD0833
                  023D000010DD00000001}
                ParentShowHint = False
                ShowHint = True
                OnClick = ExecuteSpeedButtonClick
              end
     
    Добавлено:
    MGAlex

    Цитата:
    Если Вы заходите в Glyph, картинка видна?

     
    Нет, ругается вышесказанным матом, при "Игноре" убивает значение выше Glyph.Data
     

    Цитата:
    Так менять ничего и не нужно. Просто загрузите по новой ту же самую картинку.  

     
    Выйти из ситуации, конечно, можно. Но, дело принципа - почему?

    Всего записей: 181 | Зарегистр. 25-01-2006 | Отправлено: 10:05 29-08-2013
    MGAlex



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

    Цитата:
    Выйти из ситуации, конечно, можно. Но, дело принципа - почему?

    Знаете, иногда проще что-то поменять, чем убить много времени и не факт, что при этом поймешь, в чем же была проблема.
     
    Рискну предположить, хотя вряд ли в этом причина. Возможно, Delphi 5 ищет путь к этой картинке на ПК, не находит ее и ругается. Возможно, в D5 это реализовано именно так, то есть, картинка не загружается в проект, а считывается с того места, откуда она была загружена. Если товарищ у себя ее вставлял, то, естественно, у него все в порядке. Именно поэтому я и предложил загрузить эту картинку заново.
    С Delphi 5 я уже очень давно имел дело, больше 10 лет назад, поэтому сложно однозначно сказать.

    Всего записей: 1885 | Зарегистр. 12-10-2007 | Отправлено: 11:54 29-08-2013
    A_V

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vavavol
    мой хрустальный шар подсказывает, что у тебя, в отличии от коллеги, не установлен update pack 1 для дельфи
     
    MGAlex
    пути к файлам тут точно не причем. думаю дело в глубине цвета или методе компрессии у битмапа, с которым дельфя без апдейта может не дружить

    Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 12:13 29-08-2013 | Исправлено: A_V, 12:22 29-08-2013
    MGAlex



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    A_V
    Я сначала даже хотел пометку к своему сообщению сделать (версия в качестве бреда ), но решил убрать.
    Понимаю, что такого не должно быть. А вот версия с апдейтом вполне вероятно.

    Всего записей: 1885 | Зарегистр. 12-10-2007 | Отправлено: 13:39 29-08-2013
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru