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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Bonivur
    Цитата:
    AkelPad и WordPad
    У обоих есть автоопределение кодировки. Но в акельпаде можно открыть файл как 1251.
     
    EugeneBoss3
    А вы знатный партизан Ану быстро колитесь что у вас написано в строке с "FTimer.OnTimer :="?

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 14:46 18-07-2010 | Исправлено: Frodo_Torbins, 14:47 18-07-2010
    EugeneBoss3



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

    Цитата:
    в строке с "FTimer.OnTimer :="?

    написано FTimer.OnTimer := TimerEvent;  // процедуру при сработке таймера
     
    constructor TMyLabel.Create(AOwner : TComponent);
    begin
      inherited Create(AOwner);
      ...
      FTimer := TTimer.Create(Self); // создаем таймер
      FTimer.Interval := FInterval;
      FTimer.OnTimer := TimerEvent;  // процедуру при сработке таймера
      FTimer.Enabled := False;
      ...
     
      // Вот моя процедура
    procedure TMyLabel.TimerEvent(Sender: TObject);
    begin
      Sleep(FInterval);   ???
      // Генерируем событие OnTime компонента
      if Assigned(FOnTimer) then FOnTimer(Self);
    end;

    Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 02:06 19-07-2010
    Bonivur



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    EugeneBoss3
    Вам надо, чтобы при событии OnMouseEnter происходила задержка? Потому, что судя по этому куску кода
     
    так и выходит. Но зачем вообще использовать таймер. Если Вам нужна задержка - Sleep разве не работает? И почему у вас вопросы после строки
     
     
    Цитата:
    Sleep(FInterval);   ???

     
    Вы этот FInterval где задаете? Почему не работаете через свойства? Уже третью страницу мы пытаемся вам помочь по капле "выцеживая" у вас информацию.  


    ----------
    Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

    Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 09:41 19-07-2010
    EugeneBoss3



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

    Цитата:
    Вы этот FInterval где задаете? Почему не работаете через свойства?

    Я не привожу весь код компонента т.к. он большой. Естественно FInterval - переменная для свойства таймера Interval. Sleep вызывает задержку всего приложения, а мне нужно чтобы при вхождении мыши в область компонента сначала срабатывала  задержка, а затем после обработки таймера выполнялся код OnMouseEnter.

    Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 11:21 19-07-2010
    Bonivur



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    EugeneBoss3
    Ну вот примерно так  
     
    Добавлено:
    Сам нашел решение для своей задачи  

    Цитата:
    Но было бы просто отлично если можно было бы проверять есть ли в заданном тексте в Memo символы, которых нет в дефолтной кодовой странице компьютера пользователя (например, для России это обычно Win-1251, для запада 1252) и если такие символы имеются, то сохранять в Unicode, иначе - сохранять в ANSI.

    Решение нашлось все в той же книге М.Канту (спасибо Frodo_Torbins за наводку!). Возможно кому-то пригодится.
     
    А у меня еще возник такой ламерский вопрос - нужно ли высвобождать TStringList методом Free? Просто я видел несколько кусков кода, где этого Free не было. Подразумевается, что встроенный "мусорщик" сам почистит память от этого StringList'a. Другие говорят, что все что создается в коде через конструктор Create надо освобождать Free или FreeAndNil.

    ----------
    Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

    Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 14:03 19-07-2010 | Исправлено: Bonivur, 19:33 19-07-2010
    AlexIntegral



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В Orbit, если вызвать модальное окно (Добавить URL), то можно заметить что кнопка ОК всегда находится в фокусе, даже если перемещаться по эдитам, как такое можно реализовать на делфи?
     
     

    Всего записей: 245 | Зарегистр. 31-05-2008 | Отправлено: 20:10 19-07-2010
    psa1974



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

    Цитата:
    нужно ли высвобождать TStringList методом Free?

    Все что создается руками, руками должно и освобождаться. Безусловно, при завершении работы программы вся память,распределенная под объекты программы освободится так или иначе, но во время работы программы утечки памяти неизбежны, если объекты не освобождать.
    Другой вопрос, что все потомки от TComponent при собственном разрушении могут самостоятельно разрушать объекты, владельцами которых они являются, т.е. те объекты (также потомки от TComponent), в конструкторе которых они указаны в качестве параметра AOwner. Но TStringList к таким объектам не относится - им никакой компонент не может завладеть.
     

    Цитата:
    Просто я видел несколько кусков кода, где этого Free не было.

    Где именно? Хоть один пример из ВСЛ, пожалуйста...

    ----------
    У программёра есть два состояния: "Втупляю" и "Попёрло"...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 21:23 19-07-2010
    Bonivur



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    psa1974
    Спасибо за ответ. Хотя если мы создаем в ран-тайм Button мы же ее не освобождаем. Так что вернее сказать, освобождаем те объекты у которых нет Owner'a.
     

    Цитата:
    Где именно? Хоть один пример из ВСЛ, пожалуйста...

    Примеры подобные видел в сети. Сейчас уже не помню где, но проскакивало пару раз. А что такое ВСЛ?

    ----------
    Что будет стоить тысяча слов когда важна будет крепость руки? (В.Цой)

    Всего записей: 655 | Зарегистр. 22-06-2003 | Отправлено: 22:25 19-07-2010 | Исправлено: Bonivur, 22:27 19-07-2010
    psa1974



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

    Цитата:
    Хотя если мы создаем в ран-тайм Button мы же ее не освобождаем. Так что вернее сказать, освобождаем те объекты у которых нет Owner'a.

    Верно, но тут есть нюансы. В отличие от невизуальных компонентов, визуальный компонент, например, тот же Button, может не иметь владельца (Owner = nil), при этом если установлено значение его свойства Parent, компонент нормально будет функциклировать. Кроме того, он будет разрушен родителем при разрушении самого родителя Т.е. для визуальных компонентов происходит эдакое дублирование - при разрушении визуального компонента с одной стороны владелец уничтожает компоненты, которыми владеет, с другой стороны визуальный компонент уничтожает всех своих детей. Ну а если ни Owner, ни Parent не определен, визуальный компонент надо разрушать руками.

    Цитата:
    А что такое ВСЛ?

    Ну, батенька... ВСЛ - или если правильно написать - VCL - Visual Component Library, или в переводе на русский - библиотека визульных компонентов. Это вся палитра компонентов Дельфи... Как минимум.  
    Просто VCL - для меня единственно убедительный пример правильного кодинга. Все остальное, что попадается в сети, надо сто раз проверять.  


    ----------
    У программёра есть два состояния: "Втупляю" и "Попёрло"...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 02:01 21-07-2010 | Исправлено: psa1974, 02:02 21-07-2010
    lezval

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlexIntegral
    В стандартных диалогах в дельфи это тоже реализовано.

    Всего записей: 67 | Зарегистр. 15-02-2006 | Отправлено: 07:22 21-07-2010
    salexn1



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

    Цитата:
    AlexIntegral

    Просто у кнопки выстави свойство Default = true

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 10:33 21-07-2010
    pavlo1704

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, помогите пожалуйста, Создаю приложение в Делфи , работающее с БД MS Access через ADO. Вопрос: Можно ли вывести на форму или, например в статусБар строку UserName из окна LoginPrompt. Если можно, то как это сделать? Спасбо! Т.Е. Можно ли испоьзовать "User ID" из ADOConnection?

    Всего записей: 21 | Зарегистр. 16-04-2009 | Отправлено: 12:40 21-07-2010
    lezval

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    pavlo1704
    У adoconnection есть свойство connectionstring в которой хранится строка подключения. Напрямую получить user id нельзя (в дельфи7), но можно вырезать из строки соответствующее значение.

    Всего записей: 67 | Зарегистр. 15-02-2006 | Отправлено: 16:59 21-07-2010
    pavlo1704

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо "lezval"! Насчет вырезать - не подумал, попробую.

    Всего записей: 21 | Зарегистр. 16-04-2009 | Отправлено: 17:05 21-07-2010
    AviDen



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

    Код:
    s:= ADOConnection1.ConnectionObject.Properties['User ID'].Value;

    Всего записей: 316 | Зарегистр. 05-06-2007 | Отправлено: 15:08 22-07-2010
    Czechoslovak



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

    Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 16:05 22-07-2010
    Andryshok



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

    Цитата:
    pavlo1704, lezval  
     
    Код:s:= ADOConnection1.ConnectionObject.Properties['User ID'].Value;

     
    Либо
    Код:
    ADOConnection1.ConnectionObject.Properties[1  или 2 ето точно не помню, можно поэксперементировать ].Value

    Всего записей: 649 | Зарегистр. 03-06-2009 | Отправлено: 16:10 22-07-2010
    AviDen



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Czechoslovak, насчёт аксеса не скажу, я лично с сиквеллом работаю. Но тот факт, что коллекция Properties доступна только после установления соединения, конечно же, учитывался? И да, можно и по номеру попробовать, как предлагает Andryshok. Плюс, я вообще не понимаю, зачем вытаскивать логин из свойств коннекшна, если он и так должен быть известен в приложении, которое устанавливало соединение. Ну, и на худой конец, ведь есть же целая пачка встроенных функций сиквелла типа user_name(), suser_sname(), user, system_user и т.п. - можно подобрать на свой вкус )

    Всего записей: 316 | Зарегистр. 05-06-2007 | Отправлено: 18:34 22-07-2010
    Czechoslovak



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

    Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 09:43 23-07-2010 | Исправлено: Czechoslovak, 09:49 23-07-2010
    DIMMUA2006

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте.
     
    Знаю, что такие вопросы обычно вызывают улыбку, но все же - на какой версии Delphi лучше программировать? В данный момент я учусь и уже делаю небольшие коммерческие программки на Delphi 7.0 В принципе функций Delphi 7 мне хватает с головой (а может фантазии не хватает представить, что есть в новых версий).  
     
    Но вот задумался, если я разобрался с Delphi 7 может уже идти в ногу со временем и установить CodeGear 2010 или 2009 ? Но, в данный момент я часто использую дополнительные компоненты и заметил, что для старых версий Delphi они чаще бывают бесплатными. Получается, меня все устраивает в Delphi 7, но вот смущает "древность" этой версии и думаю, что в новых версиях все красивее, удобнее и т.д.
     
    Также, в пользу старых версий играет большое количество книг, справок, видео уроков - т.е. в общем, поддержки, что для меня важно.
     
    Может, у кого богаче опыт в программировании, подскажите, стоит ли переходить на новую версию? Или может не обязательно на самую новую, выбрать среднюю версию между ними, скажем Delphi 8 ?

    Всего записей: 79 | Зарегистр. 18-09-2006 | Отправлено: 20:22 24-07-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 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