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

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

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

    Цитата:
    Как интересно...
    , ага, есть такое. Вопрос задавал из дома, а коммент писал с работы. И сам уже не помню, то ли профиля, два, то ли ещё чего...
    С индией засада. Снёс старую (вроде основательно), скомпилил и установил новую. Результат абсолютно идентичный, на выходе ловлю ответ типа

    Где же там сабака зарыта? Раньше (вроде на 9-х индях) меня спасало Utf8ToAnsi(IdHTTP1.post ...), а сейчас при таком алгоритме просто вышеуказанные кракозяблы превращаюцца в ??????. Но хочется ведь увидеть наш великий и могучий.

    Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 09:30 30-10-2009 | Исправлено: Maximus777, 09:37 30-10-2009
    psa1974



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maximus777
    Поставил патченую или официальную?  
    Дай ссылку, которую пытаешься загрузить, попробую у себя
    Насчет Utf8ToAnsi - в Дельфи 2009 это не надо.
     
    Берем урлу http://www.inf.ru/,
    Делаем:

    Код:
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      LClient : TIdHTTP;
    begin
      LCLient := TIdHTTP.create(nil);
      try
        if Edit2.Text <> '' then
          begin
          LClient.ProxyParams.ProxyServer := copy(Edit2.Text, 1, pos(':', Edit2.Text)-1);
          if pos(':', Edit2.Text) <> 0 then
            LClient.ProxyParams.ProxyPort := StrToInt(copy(Edit2.Text, pos(':', Edit2.Text)+1, $FF))
          else
            LClient.ProxyParams.ProxyPort := 80;
          end;
        Memo1.Lines.Text := LClient.Get(Edit1.Text);
      finally
        LCLient.Free;
      end;
    end;
     

    Получаем:
    Ссылка

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

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DreamKHV
    В VCL послав специальное сообщение окну, можно получить ссылку на его объект. Ну а там уже добраться до его чилда не проблема. Можно попробовать это сделать через RTTI, если работаем с нестандартным классом. НО:
    • Нужно знать версию делфи, на которой написано приложение;
    • Нужно внедрится в процесс этого приложения (например через хуки);
    • Нужно добраться до его менеджера памяти, чтобы потом не хватать AV.
    Вот такие вот шаманства. Пример реализации: http://www.devrace.com/en/dap/features.php

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 11:11 30-10-2009 | Исправлено: Frodo_Torbins, 11:12 30-10-2009
    Maximus777

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

    Цитата:
    Поставил патченую или официальную?  

    Ставил ту, которую по Ссылке

    Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 11:38 30-10-2009
    DreamKHV



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

    Всего записей: 21 | Зарегистр. 19-03-2009 | Отправлено: 13:36 30-10-2009
    Maximus777

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    psa1974, я только вот такой код использую:

    Код:
     procedure TForm1.Button1Click(Sender: TObject);
     var
       data: TIdMultiPartFormDataStream;
     begin
       data := TIdMultiPartFormDataStream.Create;
       try
         data.AddFile('fileData[]', Edit1.Text,'multipart/form-data');
         data.AddFormField('action', 'upload');
         data.AddFormField('galleries', '15');
         data.AddFormField('preview','1');
         data.AddFormField('preview_size','180');
         Memo1.Lines.Text := IdHTTP1.Post('http://pics.kz', data);
       finally
         data.Free;
       end;
     end;

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maximus777
     
    Поставь перед строкой  
    Memo1.Lines.Text := IdHTTP1.Post('http://pics.kz', data);
    строку
    IdHTTP1.Response.CharSet:= 'utf-8';
    Это мне позволило с помощью метода IdHTTP1.Get в моем примере из предыдущего поста получить правильные букофки со страницы http://pics.kz

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 15:45 30-10-2009
    Maximus777

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

    Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 15:13 31-10-2009 | Исправлено: Maximus777, 15:40 31-10-2009
    data man



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DymDym2
    Это как-то относится к вопросам по Delphi ?
    А "новости" этой уже 5 дней - подпишитесь на DelphiFeeds.

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

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DymDym2
    Ну и зачем было отвлекать на такую ерунду ? Что ценного  из этой новости я должен был извлечь? (вопросы риторические).

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 22:45 31-10-2009 | Исправлено: psa1974, 22:46 31-10-2009
    bruteALEX



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос по Indy - pop3
    Забираю почту через свой самописный мини-клиент с ее дальнейшей обработкой. Но иногда случается необходимость забирать копию в Mozilla Thunderbird, но после забора или там или там повторно письма не забираются. Можно ли через pop3 присваивать письмам статус непрочитанный в Delphi (Indy)? Может в Imap!  
    Пожалуйста не посылайте читать документации pop, imap или каких-то там mime я не прогер и мне это как-то не идет
     
    Спасибо за ответ
    p.s. Почта от gmail

    Всего записей: 145 | Зарегистр. 03-01-2005 | Отправлено: 17:08 01-11-2009
    GrHnd



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SerBUser
    Спасибо - пригодится обязательно!

    Всего записей: 867 | Зарегистр. 01-04-2005 | Отправлено: 14:30 02-11-2009
    Maks150988



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привествую. Хочу спросить про потоки, а именно как корректно завершать поток, созданный через BeginThread. До запуска потока диспетчер задач показывает примерно 100 дескрипторов, а после - примерно в два раза больше. С чем это может быть связано.
     
    Код функции:
     

    Код:
    function ThreadCallback(LpParameter: Pointer): DWORD; stdcall;
    begin
     
      SetThreadPriority(hThread, THREAD_PRIORITY_BELOW_NORMAL);
     
      MessageBox(0, nil, nil, MB_OK);
     
      Result := 0; // Set up a 0 return value
      EndThread(0); // End the thread
     
    end;

     
    Код запуска:
     

    Код:
      hThread := BeginThread(nil, 0, @ThreadCallback, nil, 0, ThreadID);
      CloseHandle(hThread);
     

    Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 16:36 04-11-2009
    Aleksandr N

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите.
    Имеется ClientDataSet в режиме кэширования. Если пользователь отказывается от изменений при закрытии формы, то пишу действие:
    ClientDataSet.Cancel;
    ClientDataSet.CancelUpdates;
    При этом данные сбрасываются, но файл пересохраняется.
    Как избавится от пересохранения файла?

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 19:13 04-11-2009
    Odysseos



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maks150988
     
    А зачем использовать именно BeginThread/EndThread? Это, в общем-то, внутренние функции RTL, не особо предназначенные для непосредственного использования. Как по мне - то лучше пользоваться либо классом TThread, либо чистым WinAPI.
     
    ...А почему хэндлы "текут"... Ну, во-первых, CloseHandle(hThread) не остановит и не уничтожит поток - поток будет выполняться, пока сам не закончиться (пока не выйдет из основной функции потока). А основная функция потока в случае использования BeginThread/EndThread - это некий ассемблерный ThreadWrapper внутри System.pas, который Вашу ThreadCallback вызывает уже сам. И когда и как он должен закончиться - надо смотреть в отладчике. А во-вторых - точно, что функция потока содержит только такой код и больше ничего? Если трассировать в отладчике, то в каждой из этих точек (как в основном потоке, так и в дочернем):
     
      1. hThread := BeginThread(nil, 0, @ThreadCallback, nil, 0, ThreadID)
     
      2. CloseHandle(hThread)
     
      3. сразу после CloseHandle(hThread)
     
      4. SetThreadPriority(hThread, THREAD_PRIORITY_BELOW_NORMAL);
     
      5. EndThread(0)
     
      6. сразу после EndThread(0) (если код функции именно такой, как показан - то точка должна быть на end;)
     
    - сколько будет занято хэндлов?

    Всего записей: 186 | Зарегистр. 02-01-2006 | Отправлено: 22:59 04-11-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aleksandr N
    Попробуйте перед отменой установить ClientDataSet.FileName := '';

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 23:52 04-11-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