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

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток!
     
    Уважаемые, просьба помочь разобраться, у меня прога опрашивает контроллеры(в принципе данные однотипные) и вот во время работы почему то IdTCPClient иногда(от раза в 10 циклов(1-2с) до раза в сутки (это оч дох циклов)) выдает ошибку по тайм ауту, хотя данные приходят, у меня Delphi7. Что данные приходят видел снифером, ещё один момент который смог выявить, если от контроллера идет один пакет с данными, тогда работает нормально(Это один тип контроллеров), а если 2, причём первый пустой(зачем он там мне производители контроллера объяснить не смогли) тогда косяк (Это второй тип контроллера) в первом пакете стоит только Флаг А, второй уже АР, по идее пока не придет флаг Р программа не должна нечего получить. Уже две недели бьюсь с этой проблемой и никакого толку((( Помогите плиз!

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 09:10 13-11-2012 | Исправлено: sammozg, 09:20 13-11-2012
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sammozg
    какая версия Indy? это важно
    попробуйте поставить самую последнюю 10ю (качать с ихнего сайта)

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 17:27 14-11-2012
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ant0ni02004
    Спасибо за свет, я пока ен пробывал ставить Indy10.
    Я переконвертировал проект в Embarcadero RAD Studio XE3 вроде бы работает, но пришлось немного перелопатить проект, до этого пытался поработать в Embarcadero RAD Studio 2010 выходила ошибка с переполнением float в Kernel32.dll, сейчас пока тестирую, надеясь на лучшее.

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 08:28 16-11-2012
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sammozg
    можна и так. в ХЕ3 уже 10-я версия стоит. но вот последняя ли...
    а так обновлять её легко - переписать старые файлы новыми и перекомпилировать

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 19:47 16-11-2012
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ant0ni02004
    Попробую в понедельник, я там изменения вводил в обработчике сервера, да и в клиентской части тоже не хило потрудился, посмотрим что получится...

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 20:34 16-11-2012
    Termis



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

    Всего записей: 423 | Зарегистр. 17-11-2012 | Отправлено: 21:08 17-11-2012
    ant0ni02004

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

    Цитата:
    при попытке вызова выдает ошибку

    если выдает ошибку при попытке вызова - значит вызывается
    видать вы ее вызываете с неправильными/неопределёнными параметрами  
    вот если бы ошибка при компиляции - тогда другое дело, не вызывается.
     

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 21:26 17-11-2012
    Termis



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ant0ni02004
    беру тупо копирую функцию из Unit2 в Unit1 - вызывается на ура...
    перемещаю в Unit2 - ошибка...
    причем ошибка - незадекларированная переменная: имя функции...

    Всего записей: 423 | Зарегистр. 17-11-2012 | Отправлено: 22:12 17-11-2012
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Termis
    хммм.... а вы в unit1.pas написали uses Unit2 ?
     

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 23:39 17-11-2012 | Исправлено: ant0ni02004, 23:40 17-11-2012
    Termis



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

    Цитата:
    хммм.... а вы в unit1.pas написали uses Unit2 ?

    да, даже через File - Use unit подключал чтобы правильнее было...
    И проект заново создавал ...

    Всего записей: 423 | Зарегистр. 17-11-2012 | Отправлено: 00:40 18-11-2012
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Termis
    тогда остаётся только предположить, что функция не объявлена в interface секции unit2

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 02:01 18-11-2012
    akaGM

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

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 02:41 18-11-2012
    Termis



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

    Цитата:
    тогда остаётся только предположить, что функция не объявлена в interface секции unit2

    спасибо! описал прототип функции - все заработало! спасибо.

    Всего записей: 423 | Зарегистр. 17-11-2012 | Отправлено: 12:40 18-11-2012
    Termis



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Снова проблема...
    Все тех же два Unit-а... В Unit2 имеется функция... тип возвращаемого значения - массив
    т.к. явно функция не может возвращать массив в type в unit2 добавлен новый тип

    Цитата:
    IntArray = array[0..15] of integer;  

    сама функция:

    Цитата:
    function strpr(str1: string): IntArray;  

    В Unit1 в type добавлен точно такой же тип, как выше..
    по событию onClick для кнопки выполняет событие, в котором объявляется новая переменная типа IntArray
    далее - ab := strpr('aaa');
    т.е. в ab должен быть результат выполнения функции strpr.
    на стадии компиляции выбивает ошибку -  
    Несовместимость типов данных Uni1.IntArray и Unit2.IntArray
    хотя описание типа в Unit1 и Unit2 абсолютно одинаковое. 200 раз проверял...
    Как исправить?

    Всего записей: 423 | Зарегистр. 17-11-2012 | Отправлено: 22:20 18-11-2012
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Termis
    Создать 3-ий модуль DataTypes и там объявить ваш массив и использовать его по всей программе.
     
    Не смотря на то, что у вас один в один объявлено для компилятора это разные типы ( и это правильно)

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 23:12 18-11-2012 | Исправлено: salexn1, 23:13 18-11-2012
    Termis



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

    Цитата:
    Создать 3-ий модуль DataTypes и там объявить ваш массив и использовать его по всей программе

    И объявлять переменные в Unit-ах как DataTypes.IntArray?

    Всего записей: 423 | Зарегистр. 17-11-2012 | Отправлено: 23:14 18-11-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Termis
    Удалите дубль типа IntArray из первого юнита. Он ведь все равно объявлен в интерфейсной секции второго юнита, значит вы спокойно можете использовать его в первом.
    А вообще есть подозрение, что вам не помешает пробежаться взглядом по какому-нибудь справочнику об основах делфи.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:27 18-11-2012 | Исправлено: Frodo_Torbins, 23:31 18-11-2012
    alex1334

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Termis
       Вроде так и должно быть. Повторное определение типа перекроется со своей областью видимости.  
    Попробуйте объявить Type  IntArray = array[0..15] of integer;  только в модуле Unit1
    обязательно в секции interface а в остальных модулях в секции implementation добавить  
    строку uses Unit1; Если в секции implementation уже есть строка USES то просто добавьте в конец свой модуль Unit1 через запятую. ( но только при условии что в секции интерфейса модуль не был подключен оператором uses) В качестве Unit1 можете использовать любой модуль вашего проекта а не только тот у которого меньше номер, если так можно сказать
      Хочу вас предупредить об одной типичной ошибки. Событие onClick обрабатывается процедурой. Если ваша переменная объявлена внутри этой процедуры то как только процедура завершиться данные на которые указывает переменная ab будут утеряны. И вы уже никогда не сможете к ним обратиться. Даже если где то у вас еще объявлена переменная с именем ab    

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 23:32 18-11-2012
    Termis



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В Unit1 просто написал a: Unit2.IntArray;
    и все заработало.  
    Frodo_Torbins, alex1334, salexn1 спасибо  

    Всего записей: 423 | Зарегистр. 17-11-2012 | Отправлено: 23:36 18-11-2012
    salexn1



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

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 09:26 19-11-2012 | Исправлено: salexn1, 09:26 19-11-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