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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jr13ster
    Все дело в типе шрифта. Установите какой-нибудь из моноширинных.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 20:47 15-02-2012
    vetal71



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

    Цитата:
    ТвояФорма.ComponentCount
    self.ComponentCount
    Item := ТвояФорма.Components[I];
    Item := self.Components[I];
    однофигственное...

     
    пробовал. я думаю, что тут где-то глюк закрался...

    Всего записей: 299 | Зарегистр. 08-09-2008 | Отправлено: 22:07 15-02-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vetal71
    ну чудес не бывает...
    мы же не знаем, что и где у тебя происходит _до_
     
    item := Components[i]
    вызывает getcomponent(i), в котором если FComponents = nil, возникает ошибка списка...
     
    ну проверь для порядка
     
    assigned(Components)
    length(Components)

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 23:20 15-02-2012
    wasilissk

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    vetal71
    Item это свойство c сеттером?
    Components это свойство с геттером?
    Просто встаньте на проблеммную строчку и нажмите F7...

    Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 06:56 16-02-2012
    vetal71



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    Вопрос решен. Дело в том, что этот кусок кода был частью процедуры в процедуре, т.е.  
    procedure TForm1.ffff;
      procedure gggg;
      begin
      // Мой код
      end;
    begin
    ....
    end;
     
    вынес в отдельную процедуру и заработало

    Всего записей: 299 | Зарегистр. 08-09-2008 | Отправлено: 10:05 16-02-2012
    salexn1



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

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 10:37 16-02-2012
    akaGM

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

    Цитата:
    akaGM
    ну чудес не бывает...
    мы же не знаем, что и где у тебя происходит _до_

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 13:35 16-02-2012
    sammozg



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Люди добрые помогите плиз, уже 2 недели ищу косяк в проге, дело в TCPClient? Сначало тупо бесконечный цикл с ошибкой ломала(выставляло true в  False), теперь вообще непонятно что делает, при запуске потока всё работает как надо, работает тока не долго(когда 100 циклов, когда 10000) потом притормаживает(как-будто клиент не отвечает) затем срывается и тупо нечего не отсылает и не принимает(а циклы крутит как будто ответ уже пришол, т.е. за секунду несколько тысяч пробигает....Исходник на делфи7 тут.
     Может кто сталкивался с подобным, или хотя-бы где-нить читал, направте на путь истенный

    Всего записей: 90 | Зарегистр. 30-06-2011 | Отправлено: 13:43 16-02-2012
    jr13ster

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

    Цитата:
    вариант Frodo_Torbins с изменённым методом компилируется/собирается/запускается, а замена в коде комментария требует переустановки Дельфей?  

    Ну так Frodo_Torbins сам правил код и компилировал, а я только тупо скопипастил да и всё.

    Цитата:
    используй "Courier New"...

    Frodo_Torbins

    Цитата:
    Все дело в типе шрифта. Установите какой-нибудь из моноширинных.

    А вот это реально помагло! Вот скрин. Любо-дорого смотреть!!!
     
    Спасибо вам огромное за участие и помощь! Отдельная благодарность - Frodo_Torbins !!!
     

    Всего записей: 68 | Зарегистр. 12-01-2007 | Отправлено: 22:25 16-02-2012
    akaGM

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

    Цитата:
    а я только тупо скопипастил да и всё
    ну да, ну да...
    главное, что памагло...

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 00:01 17-02-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    jr13ster
    Рад был помочь
     
    sammozg
    У вас довольно много кода, к тому же он весь зависит от обмена данными с неизвестным внешним клиентом. Так что только общие рекомендации: проверить BlockMode, с формой работать через Synchronize, понаставить всюду вызовов OutputDebugString.

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    Привет. Я скоммитил vdbi на тот SVN. Теперь нормально можно в свнке поработать. Подготовил проектик для конвертации базы на случай изменения формата файла. Выложил базу worldcitiespop (2797245 населённых пунктов с координатами). Там open в потоке, по этому проект запускается быстро, пока смотришь на гридину с первыми 1000 данных он докачивается. Есть формулы расчёта расстояний думаю доделать и привинтить.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 16:22 17-02-2012 | Исправлено: delover, 16:23 17-02-2012
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    Базу городов выкладываю отдельно она 200мб и по SVN качать не реально.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 10:32 18-02-2012
    Simkara

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В программе нужно сделать окошко, в котором рандомится и выводится пользователю - число в диапазоне [11..25].
    В Form1 вставил Edit1, в его свойствах, через редактор прописал следующее:
     

    Цитата:
     
    procedure TForm1.Edit1Change(Sender: TObject);
    var b:integer;
    begin
    randomize;
    b:=random(15)+11;
    Edit1.Text:=FloatToStr(b);
    end;
     

     
    Но число не выводится при запуске программы. Приходится сначала тыкнуть на окошко, и нажать на любую кнопку, только тогда срабатывает рандом и в окне появляется случайное число в заданном диапазоне.
     
    Собственно вопрос, как сделать, что бы число выводилось сразу же, после запуска программы?

    Всего записей: 43 | Зарегистр. 26-11-2011 | Отправлено: 17:05 18-02-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Simkara
    1) randomize
    надо вызывать в _самом начале_ программы, хоть в самом .dpr
     
    2) попробуй
    b:=random(15)+11;
    Edit1.Text:=FloatToStr(b);  
     
    вызвать в методе формы FormCreate(), ну или в самом конструкторе Edit1'a

    Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 18:10 18-02-2012 | Исправлено: akaGM, 19:03 19-02-2012
    Mantikor123

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть задание сымитировать роботу очереди процессов, изначально планировалось в ассемблере но потом сказали в делфи...  
    Теперь собственно вопрос как можно сделать процесс со временем роботы в делфи?  
    На ум приходят только таймеры, которые будут рандомно запускаться... ну а потом алгоритм из ifов чтоб реализовать LIFO (Last Come First Serve) - первым обслуживается последний...
     

    Всего записей: 38 | Зарегистр. 19-12-2009 | Отправлено: 12:51 19-02-2012 | Исправлено: Mantikor123, 13:02 19-02-2012
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    delover
    Ок, гляну.
     
    Mantikor123
    Возможно тут подойдут Fibers (нити), пример. Нити это почти те же потоки со своими стеками, но переключение между ними производится вручную, позволяя полностью управлять временем выполнения каждого из них.

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

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    про Волокна мало что понял(( второй пример, насколько я понял просто реализует как э-то паузу, с прогресбаром. который можно использовать как процесс....
    если все верно, то дело за малым, написать что в принципе не особо сложно....  
    Правильно ли я понял?
    Благодарю за помощь

    Всего записей: 38 | Зарегистр. 19-12-2009 | Отправлено: 18:22 19-02-2012
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 19:56 19-02-2012
    Mantikor123

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ну разобраться можно во всем было б желание... но с таймерами как то поспокойней))  
    Собственно по ним теперь вопрос.  
    нашел такой код чтоб связать прогресбар с таймером.  
    ну р это понятно ProgressBar1. А вот где он связуеться с таймером я так и не понял, точней где переменная таймера.  
    if p.Max = p.Position  
      then p.Position := p.Min  
      else p.Position := p.Position + 1;
     
     
    Да если не сложно(пока не искал и не приступал) подскажите как можно рандомно вызвать 1 из 5 процедур, чтоб все 5 были активны но в разной последовательности.
     
     
    есть еще пару вопросов, но их задам если уже не выйдет после эксперимента...

    Всего записей: 38 | Зарегистр. 19-12-2009 | Отправлено: 21:09 19-02-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