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

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



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Frodo_Torbins
    Нет, не путаю.
    Было в реестре .. AD 0A 97 .. что означает 23/04/2009 (день-месяц-год, такая посл. в реестре)
    Далее открываю ексель-файл, который выщитывает по формуле, которую я описывал выше.  
    Он выдает значения, которые я должен занести в реестр, т.е. дату 05/04/11 (50 дней считая от сегодня). Это должны быть значения ....FF FE 95...
    Теперь пробуем программой. Результат: в реестре значения  ...05 04 0B..., т.е. совсем не те, которые надо...
    Я эти значения нахожу вот так.

    Код:
      DateSeparator := '.';
      Temp:=DateToStr(Date+50);
     
         AktDay:= Copy (Temp, 1, Pos('.',Temp)-1);
        Temp:= StringReplace (Temp, AktDay + '.','',[rfIgnoreCase]);
        AktMonth:= Copy (Temp, 1, Pos('.',Temp)-1);
        Temp:= StringReplace (Temp, AktMonth + '.','',[rfIgnoreCase]);
        AktYear:= Temp;
     
      IntDay:=IntToBin(StrToInt(AktDay),8);
      IntMonth:=IntToBin(StrToInt(AktMonth),8);
      IntYear:=IntToBin(StrToInt(AktYear)-1900,8);
      Maska:=IntToBin(250,8);
        for ii:=1 to 8 do begin
          OneDay:= Copy (IntDay,ii,1);
          TwoDay:= Copy (Maska,ii,1);
          OneMonth:= Copy (IntMonth,ii,1);
          TwoMonth:= Copy (Maska,ii,1);
          OneYear:= Copy (IntYear,ii,1);
          TwoYear:= Copy (Maska,ii,1);
          if OneDay = TwoDay
          Then
            begin
            ThreeDay:='0';
            FroeDay:= FroeDay + ThreeDay;
            end
          else
            begin
            ThreeDay:='1';
            FroeDay:= FroeDay + ThreeDay;
            end;
     
          if OneMonth = TwoMonth
          Then
            begin
            ThreeMonth:='0';
            FroeMonth:= FroeMonth + ThreeMonth;
            end
          else
            begin
            ThreeMonth:='1';
            FroeMonth:= FroeMonth + ThreeMonth;
            end;
     
          if OneYear = TwoYear
          Then
            begin
            ThreeYear:='0';
            FroeYear:= FroeYear + ThreeYear;
            end
          else
            begin
            ThreeYear:='1';
            FroeYear:= FroeYear + ThreeYear;
            end;
     
        end;
     
        HexDataDay:= BinToHex (FroeDay);
        HexDataMonth:= BinToHex (FroeMonth);
        HexDataYear:= BinToHex (FroeYear);

    И они такие как надо выщитываются, т.е.   HexDataDay=FF, HexDataMonth=FE, HexDataYear=95
    Но они в текстовом формате и занести их в реестр в бинарном виде не соображу как.

    Всего записей: 3551 | Зарегистр. 16-12-2002 | Отправлено: 16:14 14-02-2011
    tanaseduard



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
     
     
    Делай загурзку где то так:

    Bitmap1.LoadFromFile(ExtractFilePath(Application.ExeName)+'\interface\logo.bmp');

    Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 16:22 14-02-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    Вы используете относительные пути к файлам, которые высчитываются в зависимости от активной директории. В ShellExecute вы не указываете активную директорию, поэтому берется текущая для этой "другой программки". Самый оптимальный способ решения этой проблемы - указывать полные пути к файлам. К примеру: "Bitmap1.LoadFromFile(ExtractFilePath(ParamStr(0))+'\interface\logo.bmp');".
     
    Sergey_Demchuk
    AD 0A 97 по вашему алгоритму не соответствует 23/04/2009. С FF FE 95 и 05/04/11 все в порядке.

    Цитата:
    Я думал что прокатит     Buf[ii+5] := (YearOf(TmpDate)-2000) xor 250 но результат тоже неверен.

    В вашем случае надо 1900 отнимать. Тогда этот вариант выдаст 95 (или 149 в десятичной системе) для 2011 года. Для месяца и дня тоже самое но без отнимания:
    Код:
    Buf[ii+4] := MonthOf(TmpDate) xor 250;  
    Buf[ii+3] := DayOf(TmpDate) xor 250;

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 17:45 14-02-2011 | Исправлено: Frodo_Torbins, 17:46 14-02-2011
    RuPurple



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins, tanaseduard, спасибо вам!
    Но мне бы не хотелось переделывать первую программу для тестирования. Может быть есть какой-нибудь способ заставить ShellExecute работать нормально? Или использовать что-нибудь вместо него?
    Кстати, пробовал еще WinExec, но результат тот же самый.

    Всего записей: 724 | Зарегистр. 21-02-2010 | Отправлено: 18:52 14-02-2011
    tanaseduard



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
     
    Тогда посмотри в сторону изменения директории, перед запуском приложения меняешь текущую директорию на директорию запускаемого приложения, после запуска восстанавливаешь свою.
    Названия функции не припомню, возможно как параметр к Shell.
     
    Посмотри ф. ChangeDir -вроде так называлась, хотя я не уверен что это с этого языка програмирования.

    Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 18:56 14-02-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    Заполните параметр Directory: https://sites.google.com/site/skyersoft/praktika-v-delphi/shellexecute-description

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 19:26 14-02-2011 | Исправлено: Frodo_Torbins, 19:29 14-02-2011
    RuPurple



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    Попробовал два варианта:
    ShellExecute(Handle,nil,PChar('C:\Shell\TEST\Project1.exe'),nil,PChar('C:\Shell\TEST\'),SW_SHOW);
    и перед функцией ShellExecute вставить
    SetCurrentDirectory('C:\Shell\TEST\');
    Все равно та же ошибка выскакивает...

    Всего записей: 724 | Зарегистр. 21-02-2010 | Отправлено: 20:04 14-02-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    С помощью Process Explorer-а можно посмотреть какая же на самом деле активная директория у процесса. Запустите свой Project1.exe и гляньте.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 20:16 14-02-2011
    RuPurple



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Frodo_Torbins
    Активная директория оказалась 'Рабочий стол\Shell' (самому интересно как )
    Перезагрузил компьютер, по новой переписал строку кода с ShellExecute, с указанием в нем параметра директории по умолчанию, и все нормально заработало.
    Огромное вам спасибо!

    Всего записей: 724 | Зарегистр. 21-02-2010 | Отправлено: 20:48 14-02-2011 | Исправлено: RuPurple, 20:49 14-02-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    Активная директория может меняться в процессе работы программы. К примеру диалоги открытия/сохранения файла обычно ее изменяют. Даже какой нибудь хук пунто свитчера или прога добавляющая кнопки в заголовоки всех окон в системе могут вмешаться. Поэтому вам первым делом и посоветовали использовать полные пути.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 21:08 14-02-2011
    Sampron

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста с hint-ом, после того как hint сам исчезнет то при повторном наведении курсора он не отображается, это наблюдается в WinXP при исользовании манифеста.  
    Подробнее...

    Всего записей: 563 | Зарегистр. 06-01-2007 | Отправлено: 19:53 19-02-2011
    andrey777k



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Люди помогите реализовать распознавание речи в Делфи7 ? Мне нужно чтобы в микрофон произносилась буква и на экран выводилось какая буква была произнесена,только чтобы не только мое произношение распознавалось, а и других людей.Надеюсь вы мне поможете мне просто 14 лет и я никак не могу разобраться!

    Всего записей: 27 | Зарегистр. 19-02-2011 | Отправлено: 19:57 19-02-2011
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrey777k
    Вопрос у тебя интересный. Или шутка это, если нет почитай сначала про распознавание речи. Есть конечно библиотеки выполняющие большую часть работы ну например Microsoft Speech API. Есть еще книга "MS Agent и Speech API в Delphi". Но это не элементарное программирование, если конечно не задача подсоединить "движок" в свою программу.

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 21:13 19-02-2011
    svs123456789

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как можно узнать по ехе файлу что он написан например на Delphi 7 , а например не на Lazarus ?

    Всего записей: 2932 | Зарегистр. 10-04-2003 | Отправлено: 10:23 22-02-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    svs123456789
    Нужно анализировать сигнатуры, как антивирусы. Пример реализации: http://exeinfo.fortunecity.com/

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 11:43 22-02-2011
    andrey777k



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

    Всего записей: 27 | Зарегистр. 19-02-2011 | Отправлено: 15:20 22-02-2011
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 15:25 22-02-2011
    andrey777k



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    уже записан на диск(формат будет такой который удобнее преобразовывать)

    Всего записей: 27 | Зарегистр. 19-02-2011 | Отправлено: 16:01 22-02-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrey777k
    Так на диске у вас уже и хранится массив байт.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 21:08 22-02-2011
    svs123456789

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    никто не встречал конвертера с языка дэлфи или паскаль на шарп или джаву?

    Всего записей: 2932 | Зарегистр. 10-04-2003 | Отправлено: 22:19 22-02-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