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

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

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

ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

ShIvADeSt



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

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

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

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:09 28-06-2009 | Исправлено: psa1974, 12:00 02-02-2010
    IndII

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    volser
    Ну, в идеале, нужно что бы при закрытии второй формы, сработал метод при событии onActivate (по умолчанию дельфа обзывает его FormActivate) для первой.

    Всего записей: 5 | Зарегистр. 30-06-2009 | Отправлено: 22:26 30-06-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IndII
     
    Можно вручную вызвать метод FormActivate() задав нужные параметры. Но правильнее сделать отдельный метод который вызывать в методе FormActivate(), а также после закрытия второй формы.

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 22:33 30-06-2009
    VandB



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А еще есть сайты кроме _ttp://torry.net/ с компанентами?

    Всего записей: 164 | Зарегистр. 05-05-2009 | Отправлено: 00:17 01-07-2009
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IndII
    Цитата:
    И как вызывать этот мой деструктор? Если просто Free, то потом обращение к полю tst не вызовет никаких ошибок, то есть, как я понимаю, объект не совсем удалился...)  
    Чтобы не было такой путаницы рекомендуют всегда вместо конструкции Label1.Free писать FreeAndNil(Label1). Такой метод не имеет никаких недостатков (кроме необходимости создать специальный темплейт в среде), но зато может подстраховать при ошибочном обращении к удаленному объекту.
     
    VandB
    Полно, в гугле наберите "Delphi components".

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 13:50 01-07-2009 | Исправлено: Frodo_Torbins, 13:52 01-07-2009
    Cryogen2003



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Итак, дублирую пост из предыдущий части.
     
    Добрый день.  
    Появилась проблема, на работе расширили список пользователей моего софта, но у них всех стоит OpenOffice и стало быть мой самописный в свое время компонент экспорта в excel не работает. Как быстро переписать так, чтобы у всех пользователей экспорт работал и было без разницы, стоит Microsoft Excel или OpenOffice.
     
    Если понадобиться, то могу выложить исходник, который надо поправить для этого.  
    Как бы можно конечно сделать, чтобы создавать файл xls, минуя Microsoft Excel, но у большинства пользователей прав нет на создание и запись файлов совсем.

    ----------
    Холодильники мы

    Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 17:40 01-07-2009 | Исправлено: Cryogen2003, 17:42 01-07-2009
    volser

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

    Цитата:
    но у большинства пользователей прав нет на создание и запись файлов совсем.

     
    Как это нет прав на создание файлов? Даже в папку "Мои документы"?

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 17:45 01-07-2009
    spasius



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cryogen2003
    есть пакеты компонент для Дельфи предназначенные для импорта и экспорта БД, обычно в комплекте есть ... xls.
    можно попробовать: XLSReadWriteII или TXLSFile.v4.0

    Всего записей: 695 | Зарегистр. 16-03-2009 | Отправлено: 22:28 01-07-2009
    IndII

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
    Возникла проблема с Indy в Delphi 2009 (врочем как и в C++Builder 2009).
    Пытаюсь реализовать механизм отправки сообщения на e-mail. Использую компоненты TIdSMTP и TIdMessage. Сообщения приходят нормально, но в совершенно нечитабельном виде... проблема с кодировкой. Два часа в гугле ничего не дали...
    Мой код:
    Подробнее...
    Так же метод при событии onInitializeISO для IdMessage:

    Код:
    VHeaderEncoding := 'B';
    VCharSet := 'windows-1251';

     
    На ящик mail.ru письма приходят в следующем виде: русские буквы заменены знаками "?", а символы (например ")" ) и латиница приходят в нормально.
     
    Пробывал текст сообщения делать в AnsiString... не помогло... Менял кодировку на UTF, тоже нет...
    Надеюсь на вашу помощь...

    Всего записей: 5 | Зарегистр. 30-06-2009 | Отправлено: 10:42 02-07-2009
    mdid

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    to IndII
    я бы советовал бежать от Indy так быстро как можете...с кодировкой(и не только) у них всегда было до ужаса туговато...если в 9 инди я где то читал можно было добавить пару строк для коррекции то для 10 я ничего не нашел...погуглите на тему альтернативных компонентов  
    ПС  
    и свой вопрос
    нужно для своих целей создать коннект для 1С базы..все сделал все работает...но не работает освобождение переменной

    Код:
    Ole1C : OleVariant;  

    c олей у меня не такие тесные отношения посему всех примудростей не знаю

    Код:
     
    Ole1C.quit -нифига
    Ole1C:= Unassigned -нифига
    Ole1C:= nil -нифига
     

    процесс остается в диспетчере задач
    хелп кто чем может

    Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 12:15 02-07-2009 | Исправлено: mdid, 12:18 02-07-2009
    IndII

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    mdid
    ммм... хотелось бы все же разобраться с инди... по моему это самый простой способ отправки e-mail'ов если бы не баги... в гугле нашел, что еще можно сделать через mapi, но пока не разобрался с этим...
     
    PS а есть ли возможность в CodeGear 2009 откатить версию инди? В Delphi 7 c indy 10.0 с чем-то там все нормально работает...

    Всего записей: 5 | Зарегистр. 30-06-2009 | Отправлено: 13:08 02-07-2009
    mdid

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    откатить вряд ли...indy это такой же компонент как и все остальное...можно удалить и установить Components->Install Packages
    еще советовал бы посетить www.indyproject.org и глянуть что там с версиями..
    у меня был вроде какой то Overbyte иль чет похожее...я правда потом забросил это дело так как на работе напряг был...а потом лень возвращаться было
    но если хотите портить себе нервы с Indy ваше право....если разберетесь стукните в личку...интересно просто

    Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 13:21 02-07-2009
    xp3n

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    помогите решить задачу!!
    есть 2 строки:  
    http://forum.ru-board.com/index.php  
    http://forum.ru-board.com/index.php =  
    в RegexBuddy составил регулярное выражение:  
    ^http((?!=).)+$  
    он выделил только первую строку, но в TestRExp (использую этот компонент) это же выражение не работает, что нужно изменить чтобы оно заработало именно в TestRExp?

    Всего записей: 18 | Зарегистр. 01-11-2004 | Отправлено: 18:04 02-07-2009
    volser

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

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 18:12 02-07-2009
    xp3n

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    так я им и пользуюсь. TestRExp - это программа этого же разраба для проверки выражений. и мне нужно решить задачу с помощью него, а не RegexBuddy.

    Всего записей: 18 | Зарегистр. 01-11-2004 | Отправлено: 18:26 02-07-2009
    SerGap



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Такой вопрос -  возникла потребность в ProgressBar'е, но нужно чтоб он появлялся на форме в нужный момент, показывал процесс выполнения определенных действий, и потом исчезал. Код примерно такой:
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      a, b : boolean;
      Source, Target : string;
      i : integer;
     
    begin
      ProgressBar1.Visible:=True;
      a:=False;
      b:=True;
     
      for i:=0 to 20 do
        begin
          Source:='источник';
          Target:='цель';
          if DirectoryExists(Source) then FullDirectoryCopy(Source,Target,a,b);
          ProgressBar1.Position:=i*10;
          ProgressBar1.Repaint;
        end;
     
      ProgressBar1.Visible:=False;
    end;
     
    Все работает хорошо... без строки ProgressBar1.Visible:=False;
    т.е. процесс идет - вижу как заполняется прогрессбар. Но как только прописываю эту строку - все, вместо процесса быстрое появление и исчезновение незаполненного прогрессбара. Может кто что посоветует по этому поводу?

    Всего записей: 541 | Зарегистр. 21-12-2008 | Отправлено: 19:39 04-07-2009 | Исправлено: SerGap, 19:42 04-07-2009
    kveplim



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

    Цитата:
    т.е. процесс идет - вижу как заполняется прогрессбар. Но как только прописываю эту строку - все, вместо процесса быстрое появление и исчезновение незаполненного прогрессбара. Может кто что посоветует по этому поводу?
     

    application.processmessages в цикл вставь

    Цитата:
    Возникла проблема с Indy в Delphi 2009 (врочем как и в C++Builder 2009).  
    Пытаюсь реализовать механизм отправки сообщения на e-mail. Использую компоненты TIdSMTP и TIdMessage. Сообщения приходят нормально, но в совершенно нечитабельном виде... проблема с кодировкой. Два часа в гугле ничего не дали...

    на next/plain charset не повлияет, лучше в виде html отправляйте.[q][/q]

    Всего записей: 42 | Зарегистр. 05-10-2008 | Отправлено: 21:58 04-07-2009 | Исправлено: kveplim, 22:02 04-07-2009
    SerGap



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

    Цитата:
    application.processmessages в цикл вставь

    Пробовал, не спасает.

    Всего записей: 541 | Зарегистр. 21-12-2008 | Отправлено: 23:02 04-07-2009 | Исправлено: SerGap, 09:48 05-07-2009
    Ramazan



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

    Цитата:
    DirectoryExists(Source)

    выполняется? Я имею в виду, что, возможно, все проходит СЛИШКОМ быстро. Опять же, у ProgressBar Min Max как выставлены - судя по коду, должны быть от 0 до 200.
     
    PS: У меня на тестовой форме представленый кусок кода работает, как и было заявлено, так что, проблема, скорее всего, не в этом.

    ----------
    Per rectum ad...

    Всего записей: 359 | Зарегистр. 13-04-2002 | Отправлено: 01:41 05-07-2009
    SerGap



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ramazan
    Да, условие выполняется. Числа 0 и 20 здесь условны, но в коде min и max соблюдены.
    Весь код в цикле  выполняется быстро, да. Но как писал, без строки ProgressBar1.Visible:=False;  
    все абсолютно корректно, т.е. процесс виден, идет плавно и т.д. Здесь вот какой момент.. делаю я это на RAD Studio Weaver Beta build 14.0.3462.22361.1
    и получается это его проблемка или механизм отрисовки ProgressBar'а изменен и я не учитываю какой-то нюанс, потому что не знаю про него.
    Сейчас впечатление такое, что с этой строкой, копирование файлов еще продолжается (по звуку hdd), а код уже отрабатывает отключение прогрессбара.  
     
    P.S. глянул реализацию прогрессбара в Delphi 2009 handbook, сделал как там и визуально код заработал как надо, с видимым заполнением прогрессбара по мере выполнения процесса.
    Вместо
          ....
          ProgressBar1.Position:=i*10;  
          ProgressBar1.Repaint;  
        end;
     
    теперь
          ....
          ProgressBar1.Position:=i*10;
          Application.ProcessMessages;
          Sleep (100);
        end;
    уж не знаю насколько это корректно, но работает.

    Всего записей: 541 | Зарегистр. 21-12-2008 | Отправлено: 09:47 05-07-2009 | Исправлено: SerGap, 10:40 05-07-2009
    RedPromo



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    IndII
    Обновить Инди смотреть тут, на sql.ru/forum/ уже обсуждалось, проблема решалась.
     
    Добавлено:
    SerGap
    Вобще корректно, но я еще не видел чтобы для красоты постепенного заполненения прогрессбара замедляли выполнение операции
    Цитата:
    Sleep (100);
    .

    Всего записей: 558 | Зарегистр. 05-04-2006 | Отправлено: 23:17 05-07-2009 | Исправлено: RedPromo, 23:22 05-07-2009
       

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

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5
    ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru