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

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



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

    Цитата:
    описаного кода

    нет ни a ни b ни IPHLPAPI какая инфа? какой счетчик циклов?  

    Цитата:
    больше 4000000000
    ну тип данных бигинт нужно использовать 64 разряда

    Всего записей: 516 | Зарегистр. 07-06-2007 | Отправлено: 02:10 07-01-2012
    vivasem



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Использовал глобальные переменные и изменил код, но вопрос остался открытым. Как организовать следующее?:
    if trafbitin<iii (но разница между trafbitin и iii больше 2000000000) then begin  
    Думаю сам не разберусь.

    Всего записей: 6 | Зарегистр. 23-08-2010 | Отправлено: 03:00 07-01-2012 | Исправлено: vivasem, 03:33 07-01-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vivasem
    Меня вот приколола эта строчка кода:
    iii:=cardinal(Edit13.Text);
    Что она должна делать? Вы вообще проверяли как она работает?
    По теме: if a < (b - 4000000000) then begin
     
    sammozg
    Юзайте BytesReceived и ReceiveBuf.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 12:43 07-01-2012
    vivasem



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

    Цитата:
    Меня вот приколола эта строчка кода:  
    iii:=cardinal(Edit13.Text);  
    Что она должна делать? Вы вообще проверяли как она работает?

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

    Всего записей: 6 | Зарегистр. 23-08-2010 | Отправлено: 15:05 07-01-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vivasem
    Цитата:
    Я вообщето пишу методом научного тыка, это так неудобно Постоянно чегото напутаю.

    Ну так сверяйтесь с учебниками. Благо их полно в интернете: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1182 Или можно сразу с первоисточниками (если знаете английский): http://docwiki.embarcadero.com/RADStudio/XE2/en/Type_conversion_routines

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 16:03 07-01-2012 | Исправлено: Frodo_Torbins, 16:04 07-01-2012
    Maks150988



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vivasem
    В разделе сетевых вопросов на http://delphimaster.ru/ решили проблему 4 гб поищите там.

    Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 23:43 08-01-2012
    vivasem



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Да, спасибо. Я уже решил вопрос, заюзал int64. google рулит:)
    И ещё одну ошибку совершал - вместо переменных использовал Edit.  
    Если кому скушно, можете тестонуть мою программу (показывает погоду с гисметео, есть пинг и счетчик трафика) Gismeteotray++

    Всего записей: 6 | Зарегистр. 23-08-2010 | Отправлено: 01:01 09-01-2012
    YuriyRR



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

    Цитата:
    Я уже решил вопрос, заюзал int64. google рулит

    Все учебники начинаются с типов данных так-то.

    Всего записей: 516 | Зарегистр. 07-06-2007 | Отправлено: 03:10 09-01-2012
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    Спасибо за ответ, У меня теперь другая проблема, никак не могу разобраться с BytesReceived, TcpClient.BytesReceived всегда выдает 0..., нормального примера использования BytesReceived что-то не нашел, может подскажешь, Плиз....

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 11:50 09-01-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sammozg
    BytesReceived можно использовать в обработчике события OnReceive.
    Что касается ReceiveBuf, то мой вариант такой: Получение данных через TTcpClient. Конечно нужно было еще оформить код получения данных в отдельную функцию, но это вы уж как-нибудь сами.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 19:33 09-01-2012 | Исправлено: Frodo_Torbins, 19:39 09-01-2012
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    Спасибо! Завтро с утра ещё разок код перелапачу, надеюь всё заработает

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 20:56 09-01-2012
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    Ещё раз спасибо за пример, я его немного расширил строчкой  
    len := Tcpclient.PeekBuf(buf, sizeof(buf) - 1);
    здесь определили размер принимаемых данных и дальше всё как по накатанной из твоего примера, правда в отдельную функцию не выносил, компилятор ругаться начинал...

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 12:56 10-01-2012 | Исправлено: sammozg, 12:58 10-01-2012
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 16:19 10-01-2012
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    дело в том что в качестве сервера у меня выступает контроллер КР-500(Волмаг) поэтому приходится подстраиваться под него.

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 20:56 10-01-2012
    RuPurple



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Имеется ли возможность в Delphi 7 разукрасить (изменить цвет и/или стиль) кнопки TButton и TBitBtn?
    И еще, я хотел бы заменить всплывающие подсказки к этим кнопкам на Balloon Tip, т.е. чтобы при наведении указателя мышки на кнопку вместо Hint появлялся Balloon Tip. Как это можно осуществить?

    Всего записей: 724 | Зарегистр. 21-02-2010 | Отправлено: 16:11 13-01-2012 | Исправлено: RuPurple, 16:12 13-01-2012
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 17:09 13-01-2012
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, ALL!
     
    У меня вопрос на удачу, может мне повезёт если кто ответит. В одной программе замечено странное поведение (Delphi7). Я написал программу которая использует драйвер сделанный OLE объектом. Программа не использует нестандартных компонентов и библиотек, по этому она работает корректно. Но когда мы подключаем драйвер в основном приложении то оно (приложение) остаётся "зависшим". То есть остаётся в списке процессов, приходится убивать. Это происходит только тогда когда был вызов CreateOleObject. Если вызова не было программа нормально сваливает. Сам объект я выключаю даже принудительно кнопкой перед выходом, о чём свидетельствует список процессов - драйвер уничтожается корректно и OLE объект исчезает корректно. Какие будут соображения? Может кто уже сталкивался с подобными эффектами? При этом даже

    Код:
     
      ..
      Application.Run;
      Halt(0);
    end.
     

    Не помогает.
     
    Добавлено:
    В голову приходит только одна мысль - делать Killtask собственного процесса, а этого бы не хотелось.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 14:13 17-01-2012 | Исправлено: delover, 14:14 17-01-2012
    rrromano



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    obj := UnAssigned; - это делаете? Немного бы кода посмотреть...

    Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 18:03 17-01-2012
    wasilissk

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    delover
    CoUnInitialize вызывается не в области видимости ole переменной?
    Если нет, то вижу решение только в юз дебаг дцу и перетирание всех потоков.

    Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 18:11 17-01-2012
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Да и унасигнед присваивается. После этого из систрея убирается иконка драйвера и исчезает драйвер из списка процессов. И CoUninitialize под отладчиком происходит. Но потом гдето попадает в цикл. Под отладчиком CPU после паузы не могу найти место где приложение циклится.  
     
    Вот немного кода

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 10:11 19-01-2012
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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