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

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

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

    Цитата:
    А зачем это вообще нужно?

    Делаю интегратор на параход чтоб можно было запустить только нужные проги и ничего более. А то у них компы и месяц не живут. Короче остался один гемор с этой кнопкой пуск
     
    Добавлено:

    Цитата:
    С своей оболочкой удобнее работать намного. Посмотрите видеообучалки по этому поводу.

    А где посмотреть можно? ЧЕ за оболочка???

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 13:55 01-10-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V
    Shell - оболочка, рабочий стол виндовс. Реализуется процессом explorer.exe (попробуйте прибить его диспетчером задач). Стартует вместе с системой и запускает все проги из автозапуска. Существуют уже готовые замены, к примеру Talisman, SharpE, KDE (да-да и для винды тоже), но вы можете написать свой. Главное прописать его в реестр:
    Код:
    [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
    "Shell"="C:\Windows\ehome\ehshell.exe"

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 14:51 01-10-2011 | Исправлено: Frodo_Torbins, 14:55 01-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Использую компонент ImageEn. Загружаю изображение и посылаю его на хэндл. Это все что делает моя dll, но её размер около 2 Мб, что не приемлемо. Как уменьшить размер dll программно? Всякие UPX'ы не предлагать... Код dll

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 17:28 09-10-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    Удалите из юзес Forms и StdCtrls, но я сомневаюсь, что это сильно поможет. Большего эффекта можно добиться только отказавшись от ImageEn.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 17:50 09-10-2011
    Varenik



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    R3Pa4eK
    а в ресурсе ISLogo.res что?

    ----------
    Если нравится, считайте, что получилось…

    Всего записей: 1766 | Зарегистр. 21-07-2001 | Отправлено: 21:56 09-10-2011
    R3Pa4eK



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

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 21:57 09-10-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    Я тут подумал: чем подход ImageEn отличается от вашего предыдущего? Только одним: вы пытались рисовать прямо на чужом окне, а ImageEn создает свое в нужном месте, и рисует уже на нем. Вам нужно повторить этот фокус и тогда вы сможете сделать очень маленькую длл-ку, которая нормально рисует картинки. Пример: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1411

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 00:04 10-10-2011
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Скажите, а есть ли функции для преобразования путей вида
    Код:
    ..\..\_FlightsCommon\FS9\Addon Scenery\Alps 19m by Taburet

     в полный путь?
    Т. е. чтобы на месте точек появились родительские каталоги...
    Или, может быть, есть способ работать с путями подобного вида? Путь к исходной (корневой) папке, конечно, известен.

     
    Разобрался:

    Код:
    ChDir(
    ExpandFileName(

    Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 10:44 10-10-2011 | Исправлено: DmitryKz, 11:42 10-10-2011
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Совершенно потерялся в вопросе конвертации массива байтов (представляющих ascii-коды) в строку.
     
    В этом коде

    Код:
     
      buff: array of Byte;
      PCh: PChar;
      s: String;
      ldat, ld: Integer;
      ...
      ldat := sizeof(nameitem.Len);
      BglF.Read(buff, ldat);
      nameitem.Len := DWORD(&buff);
     
      ldat := nameitem.Len - sizeof(nameitem.Id) - sizeof(nameitem.Len);
      ld := ldat - 1;
      BglF.Read(buff, ldat);
      Pch := PChar(@buff[Low(buff)]);
      s := '';
      SetString(s, PCh, ld);
     

    первая половина (преобразование байтов в 32-битное целое отрабатывает успешно). При получении же строки - AV.  Перебровал разные варианты - всегда AV.
     
    Что не так делаю?

    Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 15:07 10-10-2011 | Исправлено: DmitryKz, 15:07 10-10-2011
    my610

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DmitryKz, что-то вы тут на извращались
    1) что такое BglF, это TFileStream?
    2) где происходит инициализация buff ?
    3) прочитать строчку можно без всяких таких танцев, тем более длина ее известна

    Цитата:
      Pch := PChar(@buff[Low(buff)]);
      s := '';
      SetString(s, PCh, ld);  


    Всего записей: 34 | Зарегистр. 10-05-2011 | Отправлено: 15:59 10-10-2011
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    my610
    Вы совершенно правы, по поводу извращений. Решил прекратить с ними и нашёл естественное:

    Код:
    String(PChar(@buff));

    Спасибо, что вовремя остановили...

    Всего записей: 3144 | Зарегистр. 29-09-2005 | Отправлено: 16:20 10-10-2011
    Maks150988



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Многоуважаемые гуру, а есть ли стандартная функция, делающая ксор или ор для двордов наподобие?
     

    Код:
      procedure SetExStyle(dwExStyle: DWORD; bexStyle: Boolean);
      begin
        if bexStyle then
          dwRet := dwRet or dwExStyle
        else
          dwRet := dwRet xor dwExStyle;
      end;

     
    Ну или модуль с прибамбасами только для разных типов данных.

    Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 21:10 13-10-2011
    Aleksandr N

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здесь есть люди знающие DirectShow на Delphi?
    Есть пару мелких вопросов. Отзовитесь в ПМ.
    Спасибо.

    Всего записей: 1665 | Зарегистр. 25-02-2008 | Отправлено: 23:58 13-10-2011
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maks150988
    что такое "стандартная"?

    Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 01:26 14-10-2011
    rrromano



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maks150988
    А вы проверяли результат побитовой операции с операндами типа двойное слово?
    Можно, впрочем, через целочисельное деление и остаток деления смастерить ).

    Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 14:57 14-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Имеется файл (png), который занят чужой программой. Мне нужно его удалить. Как это сделать программно?  
     

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 16:07 15-10-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    Попросите систему удалить его при перезагрузке: http://weseetips.com/2008/05/19/how-to-mark-your-file-for-deletion-after-next-reboot/

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 18:15 15-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Frodo_Torbins
    Мне это не подходит. В моем случае нужно узнать хэндл файла и закрыть его. Как узнать хэндл я знаю, а вот как закрыть хз.

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 18:19 15-10-2011
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 18:35 15-10-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Frodo_Torbins
    А можно изменить права доступа к файлу? То-есть сделать так, чтобы его нельзя было скопировать.

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 18:40 15-10-2011
    Открыть новую тему     Написать ответ в эту тему

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