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

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



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    diodio
    наверное проще всего будет создать новую таблицу и в нее перенести только нужные  строки (там конечно от объема зависит если полей немного и объем данных в строке небольшой),  а затем старую завалить и новую переименовать или попробывать воспользоваться компонентами прямого доступа к dbf типа TDBF или Halycon.  я на последние перешел для импорта-экспорта dbf на сервер БД быстрее работают чем BDE.

    Всего записей: 192 | Зарегистр. 21-01-2005 | Отправлено: 08:18 18-05-2012
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    diodio
     
    c dbf можна и через ADO работать, совсем без BDE или TDbf

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 17:12 18-05-2012
    Gnom3



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вопрос на грани фола, как говорится. но предистория такова:  
    На семерке при нажатии сочетания Ctrl-Alt-Del появляется окно - сменить пользователя, диспечер задач, еще какие-то пункты. При этом падает рендер кадров на устройстве iVideoWindow в DirectShow - наверняка кто-то сталкивался с похожим явлением. Для именно видео - достаточно скрыть и снова показать iVideoWindow, чтобы рендер кадров продолжился.  
    Вопрос - какое сообщение проходит, при появлении этого окна? Как его поймать?
    P.S. сообщения WM_QUERYENDSESSION, WM_ENDSESSION, WM_USERCHANGED - не то, полноценного выхода пользователя не происходит, соответственно этих сообщений еще нет.

    Всего записей: 864 | Зарегистр. 14-11-2010 | Отправлено: 16:15 19-05-2012 | Исправлено: Gnom3, 16:47 19-05-2012
    Eternal_Shield

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Gnom3
    Есть подозрение, что WTSRegisterSessionNotification поможет вам. Зарегистрируйте окно и ловите WM_WTSSESSION_CHANGE сообщение. Думаю, что lParam в этом сообщении будет равен WTS_SESSION_LOCK при нажатии Ctrl+Alt+Del. Вроде как должно решить вашу проблему.

    Всего записей: 766 | Зарегистр. 18-05-2009 | Отправлено: 22:06 19-05-2012 | Исправлено: Eternal_Shield, 22:07 19-05-2012
    Gnom3



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Eternal_Shield, огромное спасибо
    Рано обрадовался...
    WM_WTSSESSION_CHANGE с lParam равным WTS_SESSION_LOCK действительно проходит при подаче заявки на смену пользователя. На ХР. На семерке этого сообщения не проходит ни с каким lParam вообще. вопрос пока открыт. тотальный мониторинг сообщений, после отсечения сообщений, которые точно не участвуют в "недовыходе" из системы - дает нуль. Хуки дают реакцию антивируса, да и предубеждения у меня к глобальным хукам, а локальный так-же не дал результата.
     
    P.S. Нашел WTSUnRegisterSessionNotificationEx, на семерке сообщение WM_WTSSESSION_CHANGE проходит. Но только если на экране, который после комбинации клавиш Ctrl+Alt+Del нажать кнопку "Сменить пароль" или "Сменить Пользователя"
     
    Беда, блин, с этой семеркой. и это с учетом того, что пользователей ХР все меньше и меньше, а задачки от мелкомягких в новых системах - все сложнее и сложнее..
     
    В общем, кому интересно решение этой задачи - относительно надежно получилось так:
    Код:
      aEvent := OpenEvent(SYNCHRONIZE, False, 'WinSta0_DesktopSwitch');
      if aEvent <> 0 then
      begin
        try
          if WaitForSingleObject(aEvent, 10000) = WAIT_OBJECT_0 then
           // тут наше действие
        finally
          CloseHandle(aEvent);
        end;
      end;

    WAIT_OBJECT_0 по запросу WinSta0_DesktopSwitch наступает каждый раз при смене состояния Рабочего стола - при выходе с него и при входе.

    Всего записей: 864 | Зарегистр. 14-11-2010 | Отправлено: 22:51 19-05-2012 | Исправлено: Gnom3, 16:22 21-05-2012
    Ichigo2



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет.
    Какие есть настройки показа Baloon ToolTip? Я хочу чтобы они сами не исчезали и выводились сразу, без задержек.

    Всего записей: 153 | Зарегистр. 01-05-2011 | Отправлено: 15:58 22-05-2012
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Сума сойти.....  На компе стоит антивирь NOD  
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
    strIP: String;
    F:textfile;
    s:string;
    begin
    AssignFile(F,'c:\log.txt');
    Rewrite(F);
    Writeln(F,strIP);CloseFile(F);
    end;
     
    На это - орет как потерпевший... - я в шоке.... этаж стандартная запись в файл!???

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 03:11 24-05-2012
    exteris

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    GRom V
    Много лет стоит NOD. Ничего подобного не происходит.
     
     
    Добавлено:
    Как ругается, кстати?

    Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 09:58 24-05-2012
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V
    А у вас вирус не Induc случайно?

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 11:24 24-05-2012
    GRom V

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

    Цитата:
    Много лет стоит NOD. Ничего подобного не происходит.

     
    Создаю новый проект, кидаю кнопку с этим кодом - больше не чего!
    Кричит - вирус - конкретно название не помню.
     
    salexn1

    Цитата:
    А у вас вирус не Induc случайно?

     
    Эт че?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 14:37 24-05-2012
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V
    Читаем и вкуриваем
    hххp://www.thg.ru/technews/20090821_204400.html
    hххp://www.gunsmoker.ru/2009/08/viruswin32induca.html
     
    ну и гугле в помощь

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 14:42 24-05-2012
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    salexn1
    СпасиБки огромное - оказался он самый!!! Во гад... )
    Подлечился )

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 15:07 24-05-2012
    alex1334

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В файле winnt.h  
    имеется структура  

    Код:
     
    #define IMAGE_SIZEOF_SHORT_NAME              8
     
    typedef struct _IMAGE_SECTION_HEADER {
        BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];
        union {
                DWORD   PhysicalAddress;
                DWORD   VirtualSize;
        } Misc;
        DWORD   VirtualAddress;
        DWORD   SizeOfRawData;
        DWORD   PointerToRawData;
        DWORD   PointerToRelocations;
        DWORD   PointerToLinenumbers;
        WORD    NumberOfRelocations;
        WORD    NumberOfLinenumbers;
        DWORD   Characteristics;
    } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
     

    а ниже вот такое определение

    Код:
     
    #define IMAGE_SIZEOF_SECTION_HEADER          40
     

     Так вот у меня размер структуры получается 8+(4+4)+(5*4)+(2*2)+4=44  а никак не  40 байт. Ладно было бы если бы структура получалась меньше тогда можно было бы подумать что что то там зарезервировано. а так никак такая структура не может разместиться в 40 байтах. Помогите пожалуйста разобраться

    Всего записей: 148 | Зарегистр. 10-10-2010 | Отправлено: 01:30 29-05-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alex1334
     
    1) во-первых можно сделать printf("%d\n", sizeof(IMAGE_SECTION_HEADER));
     
    2) как ты думаешь, размер
     
    union {
                DWORD   PhysicalAddress;
                DWORD   VirtualSize;
        } Misc;  
     
    два дворда или один? если два -- тогда читай в книжках что такое юнион и разбирайся...

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 02:03 29-05-2012
    Simkara

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В форме нарисовано множество линий, прямоугольников, кружочков и т.д.  Через PaintBox. А так же вставлено несколько лейблов (Label).
    Требуется, что бы при нажатии кнопки очистилась конкретная область (прямоугльная). Координаты области известны, например (x1,y1,x2,y2).
    Как же очистить эту область от канвы и лейблов?  
    Желательно, что бы очищенная область была прозрачной.
    Просьба показать эту процедуру в коде.

    Всего записей: 43 | Зарегистр. 26-11-2011 | Отправлено: 13:24 29-05-2012 | Исправлено: Simkara, 14:50 29-05-2012
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Simkara
    попробуй создай предварительно bitmap нужного размера, выставь цвет прозрачности и потом рисуй её где хочешь на канве через paintbox.canvas.draw(x, y, bitmap)

    Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 16:20 29-05-2012 | Исправлено: akaGM, 16:28 29-05-2012
    adasiko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите с такой ситуацией.
    Есть дамп базы данных в файле вида

    Код:
    1('1', 'Andrew', 'Andreev')
    ........................................
    1('2', 'Ilia', 'Ileev')
    1('3', 'Oleg', 'Olegeev')
    2('1', 'Russia')
    2('2', 'USA')
    ......................................

    В общем номер таблицы и её данные.
    И надо всё это залить в оракл сервер.
     
    первый вариант (лобовой):

    Код:
    Цикл чтения по файлу
    begin
      ADOQuery1.SQL.text:='insert into нужная_таблица values '+текущая_строка_из_файла;
      ADOQuery1.Exec;
    end

    Занимает кучу времени, поэтому переписал с параметрами:

    Код:
    Цикл чтения по файлу
    begin
      if текуший_номер_таблицы_изменился then
      begin
        // готовим запрос
        ADOQuery1.SQL.text:='insert into нужная_таблица values (':par1', ':par2');
        ADOQuery1.parametrByName['par1'].type:=нужный тип;
        ADOQuery1.parametrByName['par2'].type:=нужный тип;
        ADOQuery1.prepared:=true;
      end;
      // подставляем параметры
      ADOQuery1.parametrByName['par1']:=бла-бла;
      ADOQuery1.parametrByName['par2']:=бла-бла;
      ADOQuery1.Exec;
    end

     
    В общем по времени эти варианты одинаково медленно исполняются (что меня удивило)
    Можно ещё что-нибудь придумать или может во втором варианте я где-то ошибся?

    Всего записей: 1807 | Зарегистр. 30-06-2008 | Отправлено: 16:41 29-05-2012 | Исправлено: adasiko, 16:41 29-05-2012
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    adasiko
    1) Заюзать DAC, ODAC или что-то, что напрямую работает с Ораклом
    2)  

    Код:
     
    Цикл чтения по файлу  
    begin  
      if текуший_номер_таблицы_изменился then  
      begin  
        // готовим запрос  
        ADOQuery1.SQL.text:='insert into нужная_таблица values (':par1', ':par2');  
        ADOQuery1.Parameters[0].type:=нужный тип;  
        ADOQuery1.Parameters[1].type:=нужный тип;  
        ADOQuery1.prepared:=true;  
      end;  
      // подставляем параметры  
      ADOQuery1.Parameters[0]:=бла-бла;  
      ADOQuery1.Parameters[1]:=бла-бла;  
      ADOQuery1.Exec;  
    end
     


    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 17:20 29-05-2012
    A_V

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    adasiko
    как вариант, заюзать ODAC, передать данные в процедуру на сервере через коллекцию объектов, потом проходить ее через FORALL и делать insert'ы

    Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 17:31 29-05-2012
    adasiko



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

    Цитата:
     заюзать DAC, ODAC

    А это бесплатное? (проблема не в деньгах, а в бюрократии)

    Цитата:
    что-то напрямую работает с Ораклом

    реализована и функция для загрузки всего это барахла через консольную утилиту дампа оракла exp (там конечно за считанные секунды делается). Но требуется и вдобавок и вариант вот с таким способом.
    Просто меня удивило отсутствие разницы во времени между этими двумя вариантами кода (запрос как сплошная строка и запрос с prepared и с параметрами)

    Всего записей: 1807 | Зарегистр. 30-06-2008 | Отправлено: 18:31 29-05-2012 | Исправлено: adasiko, 18:33 29-05-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