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

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



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

    Цитата:
    Подскажите как узнать имя и домен пользователя текущего процесса?

    data man, psa1974 Спасибо за ответ. Сам нашел готовый пример - рекомендую - встал как влитой!

    Всего записей: 865 | Зарегистр. 01-04-2005 | Отправлено: 11:05 29-10-2009
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    И еще вопрос в тему: при приеме оконного сообщения создается ли отдельный поток для его обработки?

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 11:29 29-10-2009
    psa1974



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

    Цитата:
    при приеме оконного сообщения создается ли отдельный поток для его обработки?

    Нет.  
    Все оконные сообщения обрабатываются оконной процедурой в той нити (потоком я называю потомков TStream ), которой эти окна созданы, и в порядке поступления. А поскольку VCL Дельфи принципиально однонитиевая библиотека, то, если скажем в обработчике нажатия кнопера делается что-то долго, то интерфейс "замораживается": прием сообщения и его обработка ведутся в основной и единственной (по-умолчанию) нити, и пока не будет обработано сообщение клика по кнопке, из очереди сообщений не будет извлекаться следующее сообщение, в том числе и сообщения отрисовки окон.
    Но это не мешает в то время, пока выполняется длительная обработка какогото сообщения, организовывать локальные петли сообщений для их выборки и обработки. В дельфи для этого надо вызвать Application.ProcessMessages.
    Надо только понимать, что все равно все делается последовательно и в одной нити.
     
    Добавлено:
    Grande
    Рекомендую почитать книгу "О чем не пишут в книгах по Delphi" Григорьева... Там этот вопрос очень тщательно изложен. Вообще мегаинтересная книга. Отпадет масса вопросов.

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 11:57 29-10-2009 | Исправлено: psa1974, 12:12 29-10-2009
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    psa1974
    Спасибо, сейчас поищу на просторах инета

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 12:12 29-10-2009
    mdid

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    народ поздскажите плз такую беду...есть форма с менюхой из которой вызываются еще формы..так вот когда показываешь форму типа form5.show то она становится сзади основной...тоесть за ней...ни bringToFront новой формы ни sendtoback менюшной формы - эффекта не дают..только showmodal..но так нельзя в силу надобности программы..что это может быть?

    Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 12:15 29-10-2009
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grande
    На torrents.ru:
    _http://torrents.ru/forum/viewtopic.php?t=1842567
    _http://torrents.ru/forum/viewtopic.php?t=1666940 (Формат: DjVu)
    _http://torrents.ru/forum/viewtopic.php?t=1025802
     
    Вариант с DjVu - тупо фотиком нащелканная книга... Лучше ПДФ...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 12:16 29-10-2009
    data man



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grande
    Обратите внимание на OmniThreadLibrary http://otl.17slon.com/ и http://code.google.com/p/omnithreadlibrary/
    С ее помощью работа с потоками и их взаимодействием друг с другом делается очень просто.
    А на днях автор обещал выпустить новую версию.
    Ну еще и библиотека Gala http://gurin.tomsknet.ru/gala.html заслуживает внимания.


    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 12:26 29-10-2009
    psa1974



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

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 12:28 29-10-2009
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    data man
    Да, эта штука у меня есть, весьма удобный инструмент.
     
    psa1974
    И еще раз спасибо - скачал в pdf.

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 12:31 29-10-2009
    mdid

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    psa1974
    пример не скину ибо это толстый проект..фигня в том что все было норм а неделю назад началось..хз че это такое никогда не сталкивался за 7 лет с таким..немного деталей..делфя 2010 форма 1 используется как авторизация...форма 2 основаная рабочая форма  
    borderstyle  - single
    formstyle  - normal
    position - designed
     
    у всех остальных форм то же самое..и все прячутся за форм2
    передача фокуса тоже не помогла
    просто думал может кто сталкивался

    Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 12:35 29-10-2009 | Исправлено: mdid, 13:03 29-10-2009
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Grande
    Насчет SendMessage и ReplyMessage...
    Вот сбацал тест:

    Код:
     
    const  WM_PSA = WM_APP+ 1;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure WMPsa(var MSg: TMessage); message WM_PSA;
      end;
     
    implementation
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SendMessage(Self.Handle, WM_PSA, 0, 0); //шлем сообщение
      ShowMessage('*');  // после возврата из сообщения должна вылести мессага "*"
    end;
     
    procedure TForm1.WMPsa(var MSg: TMessage);
    begin
      ReplyMessage(0); // возвращаем результат
      while True do ; //продолжаем до бесконечности обрабатывать сообщение
    end;
     

     

    Цитата:
    Далее прога продолжает свою работу, а всё, что в обработчике сообщения - свою.

    Дык вот... не работает это утверждение! строка ShowMessage('*'); никогда не выполнится в вышепериведенном примере, потому что мы никогда не закончим обрабатывать сообщение WM_PSA. Для ОДНОЙ нити этот подход не имеет смысла, поскольку в рамках нити все равно все сообщения выполняются последовательно. Ну и что что мы вернули ответ? Из процедуры обраболтки то мы не вышли, поэтому следующее сообщение из очереди не выбирается.
     
    Я полагаю, ReplyMessage(0); имеет смысл использовать в случае посылки сообщения с использованием SendMessage из одной нити в другую (это один из способов синхронизации нитей): т.е. мы отправляем сообщение с  SendMessage (при этом посылающая нить приостанавливается - ждет результата), когда принимающая сообщение нить решила, что более синхронизация с нитью, отправившей ей сообщение, не нужна, она вызывает ReplyMessage(0);, получив ответ, нить, отправившая сообщение, возобновляет свою работу, в то время как вторая тоже что-то там себе делает, что -то такое, для чего не требуется синхронизация.
    Я еще не проверил свое предположение, но  ReplyMessage(0); явно не решает задачу распараллеливания.
    Вот.

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 13:39 29-10-2009
    Grande



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    psa1974
    Вот блин... Вы правы, сударь, действительно не работает в одном процессе, только в разных.
    ОК, еще поэкспериментирую...
     
    Так-с... Экпериментировать бессмысленно, т.к. ReplyMessage действительно работает только при посылке сообщения окну в другом процессе и, соответственно,
    Цитата:
    явно не решает задачу распараллеливания.
    .

    Всего записей: 588 | Зарегистр. 18-09-2003 | Отправлено: 14:26 29-10-2009 | Исправлено: Grande, 14:33 29-10-2009
    Maximus777

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Люди добрые, научите уму разуму. Перешёл с Delphi 10 на RAD Studio 2009 и теперь idhttp из индей возвращает пургу вместо русских символов. Перерыл всю сеть, но так и не понял как лечить данное заболевание. На Delphi 10 вопрос решался очень просто, UTF8ToAnsi и всё замечательно. Сейчас же такой трюк не прокатывает. Сайт использует utf-8. Вот что выплёвывает запрос hxxp://pic.ipicture.ru/uploads/091029/8UGUQTQRV9.png

    Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 14:35 29-10-2009
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maximus777
    насчет компаноидов Indy... В поставке Дельфи 2009 идут глючные Indy именно в плане кодировки.  
    В свое время с столкнулся с этим при отправке писем... Не помню где, скачал пофиксенную библиотеку Indy, с которой у меня проблем не было. Сейчас попробовал тестовый проект IdHttpDemoVCL.exe, загрузил страницу http://www.microsoft.com/rus/info/copyright/ (кодировка utf-8, русские символы в наличии) - все пучком. Если надо - выложу патченую Indy, скажи только куда...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 16:11 29-10-2009
    data man



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

    Цитата:
    Не помню где, скачал пофиксенную библиотеку Indy, с которой у меня проблем не было.  

    А потом можно сравнить фикс с этим официальным DevSnapshot ftp://indy.fulgan.com/zip/IndyTiburon.zip
    Может там уже, помимо прочих, пофиксены и баги с кодировкой.

    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 16:33 29-10-2009
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    data man
    Я уж не буду сравнивать, поскольку у меня все работает, и я не раз убеждался, что правило "работает - не трогай", в отношении Indy работает, как часы, что печально, на самом деле (хотя себе в кучу забрал официальный IndyTiburon на всякий...). Предоставим заняться сравнением Maximus777 - он все равно на распутье
     
    Maximus777
    нашел сцылку !
    Вот ветка форума:
    _http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=669703
    там если по ссылкам походить, рано или поздно найдешь такую:
    Ссылка
    Это то, о чем я говорил. Нужно полностью снести Indy, идущие в комплекте (в той ветке, что я дал написано как это сделать так чтобы ничего не осталось). Ну и вообще почитай эту ветку... как раз тема кодировок там обсуждается...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 16:46 29-10-2009 | Исправлено: psa1974, 17:59 29-10-2009
    SerBUser

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

    Всего записей: 123 | Зарегистр. 31-08-2009 | Отправлено: 05:42 30-10-2009 | Исправлено: ShIvADeSt, 05:45 30-10-2009
    MaxYegorov

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    psa1974, спасибо огромное, щаз буду процеживать инфу. О результатах обязательно отпишусь.

    Всего записей: 35 | Зарегистр. 01-07-2008 | Отправлено: 05:46 30-10-2009
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    MaxYegorov
    Как интересно... Спрашивал Maximus777, а поблагодарил MaxYegorov... Причем что-то общее в никах определенно есть  
    Ждем результатов - интересно будет узнать насчет того, порешана ли проблема кодировок в официальным DevSnapshot'е, ссылку на который дал data man Я бегло сравнил содержимое файлов патченного варианта и официального DevSnapshot'а - изменения коснулись доброй половины pas-файлов... Пошли ли они на пользу - это и хочется узнать.

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 08:59 30-10-2009 | Исправлено: psa1974, 09:05 30-10-2009
    DreamKHV



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Столкнулся с небольшой проблемой.
    В стороннем приложении есть форма с label. Попытки считать текст этой надписи через API ни к чему не привели, т. к. handle она не имеет.
    Как прочитать текст с label и изменить его?

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