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

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

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

    Цитата:
    Режим совместимости в первую очередь подменят вывод GetVersionEx и прочих подобных API.  

    Frodo_Torbins, это только в первую очередь. У некоторых функций поведение может значительно меняться. Либа скорее перестаёт работать из-за каких-то изменений в поведении gdi или dwm.
     
    Другое дело, что то, что задаётся через манифест и то, что происходит при включении режима совместимости для программы - затрагивает разные области. В частности поведение некоторых функций не меняется(импорт на shim-ы не перенаправляется), а только даётся рекомендация для PCA отслеживать стабильность работы приложения с этими функциями и в случае возникновения проблем будет предложено всётаки включить полноценный режим совместимости.
    Я поэтому и говорил, что GRom V не с той стороны к вопросу подходит.

    Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 11:14 02-08-2017
    Frodo_Torbins

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

    Цитата:
    Либа скорее перестаёт работать из-за каких-то изменений в поведении gdi или dwm.

    Скорее всего. Хотя мой опыт показывает, что если прога работает с режимом совместимости, то ее можно научить работать и без него. Лишь бы в исходниках ассемблера было поменьше.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 13:02 02-08-2017
    NeoAnomaly

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

    Цитата:
    Скорее всего. Хотя мой опыт показывает, что если прога работает с режимом совместимости, то ее можно научить работать и без него.  

    Frodo_Torbins, я, если честно, за всю свою практику(после перехода XP->Vista) ни разу не сталкивался с какими-либо проблемами в совместимости.  
    Хотя, справедливости ради, с gui я мало работал, а Luna->Aero->Metro имеют довольно кардинальные различия, поэтому может будет легче заюзать что-то актуальное, alphaskins, например(есть же у них анимации форм!?), чем мучиться с режимом совместимости.

    Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 13:35 02-08-2017
    GRom V

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

    Цитата:
    Режим совместимости в первую очередь подменят вывод GetVersionEx и прочих подобных API. Неужели из за этого либа работать перестает?

    Не то чтобы не работает... Он запускается, но там проблема с слоями. Т.е. сплешка должна при запуске использовать один визуальный эффект, а пи закрытии другой. Так вот при запуске эффект отрабатывается, но как только он доходит до конца - прога вылетает.
    а вот при запуске через батник такой командой
    set __compat_layer=WIN7RTM
    splash.exe  
    все отрабатывается нормально, вернее сносно.

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 14:30 02-08-2017
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V
    Если не хотите самостоятельно править библиотеку (что наверняка будет очень непросто) то поищите последнюю версию, может там исправили. Или вообще замените библиотеку на другую. Кстати в FMX на винде анимации и эффекты довольно хорошо работают. Только нужно будет сделать форму прозрачной и рамку убрать.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 16:36 02-08-2017
    GRom V

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

    Цитата:
    Если не хотите самостоятельно править библиотеку (что наверняка будет очень непросто) то поищите последнюю версию, может там исправили. Или вообще замените библиотеку на другую. Кстати в FMX на винде анимации и эффекты довольно хорошо работают. Только нужно будет сделать форму прозрачной и рамку убрать.

    Если Вы имеете ввиду библиотеку billenium, с помощью которой  создаются эффекты, то версия последняя. Они почемуто давно уже не обновляют.
    А
    FMX это компонент?

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 21:47 02-08-2017
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V
    FMX, она же FireMonkey, она же Обезьянка - кросплатформенный набор компонентов в делфи начиная с XE2. В последних версиях доведен до состояния, когда на нем легко можно сделать сплеш и не только. В обычное VCL приложение можно встроить форму на FMX, или реализовать сплеш отдельным исполняемым файлом/dll-кой.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 10:59 03-08-2017
    GRom_V

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

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 05:45 04-08-2017 | Исправлено: GRom_V, 06:03 04-08-2017
    GRom_V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Еще раз здрасте!
    Подскажите плз:  
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    Var s:string;
    i:integer;
    begin
    s:=Socket.ReceiveText;
    if copy(s,1,4)='MyIP' then
    listbox1.Items.Add(copy(s,5,length(s)))
    else if copy(s,1,4)='NoIP' then begin
    for i:=0 to listbox1.Items.Count-1 do
    if copy(s,5,length(s))= listbox1.Items[i] then
    listbox1.Items.Delete(i);
    end
    else begin
    For i:= 0 to ServerSocket1.Socket.ActiveConnections-1 do
    ServerSocket1.Socket.Connections[i].SendText(S);
    memo1.Lines.Add(s);
    if (s)='w' then showmessage ('Буква "W"'); Пытаюсь сделать реакцию на символ: но это не работает. Как можно сделать?
    end
     

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 09:20 11-08-2017 | Исправлено: GRom_V, 09:22 11-08-2017
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 13:35 11-08-2017
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Если я вместо memo1.Lines.Add(s);  делаю showmessage(s); то в сообщении именно W, т.е. символ верен...

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 07:16 12-08-2017
    XenoZ



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    GRom V
    Если проверяешь реакцию на символ, логично символ и проверять:
    If LeftStr(s,1)='w' Then ...
     
    Добавлено:
    А для устранения регистрозависимости:
    If LowerCase(LeftStr(s,1))='w' Then ...

    ----------
    А оно мне надо?..

    Всего записей: 5443 | Зарегистр. 29-03-2006 | Отправлено: 11:25 12-08-2017 | Исправлено: XenoZ, 11:38 12-08-2017
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    Var s:string;
    i:integer;
    begin
    s:=Socket.ReceiveText;
    if copy(s,1,4)='MyIP' then
    listbox1.Items.Add(copy(s,5,length(s)))
    else if copy(s,1,4)='NoIP' then begin
    for i:=0 to listbox1.Items.Count-1 do
    if copy(s,5,length(s))= listbox1.Items[i] then
    listbox1.Items.Delete(i);
    end
    else begin
    For i:= 0 to ServerSocket1.Socket.ActiveConnections-1 do
    ServerSocket1.Socket.Connections[i].SendText(S);
    memo1.Lines.Add(s);
    If LeftStr(s,1)='w' Then showmessage('Тест'); - НЕ РАБОТАЕТ
    end

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 11:49 12-08-2017
    rsmxperia



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день друзья.Я сисадмин и в программинге 0.есть у нас на фирме один софт.Что он делает.Так вот ты заходишь в фирму тыккаешь в апарат и берёшь номерок на бумажке.Работник тоже имеет софт который кликает следующий и у него выходит поп ап о номера в очереди.Проблемы в том что этот тот самый поп ап перестал работать на сервере 2016 и 10.хр-8.1 работает нормально.Программисты у нас не доделанные.Прошу помощи у вас.я так плнял в 10 винде нотификации и поп апы работют иначе.Мас софт портабл написан на стареньком дельфи.Если есть люди готовые помочь я заплачу.Пишите в личку.Спасибо за внимание.

    Всего записей: 131 | Зарегистр. 08-01-2014 | Отправлено: 11:56 12-08-2017
    XenoZ



    Gold Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    GRom V
    1. как уже предлагал Frodo_Torbins, добавить проверку длины (возможен служебный символ в начале):
    Memo1.Lines.Add(Length(s));
    2. if (s)='w' then showmessage ('Буква "W"'); Пытаюсь сделать реакцию на символ
    'w' и 'W' - это разные символы, своди проверку в один регистр.

    ----------
    А оно мне надо?..

    Всего записей: 5443 | Зарегистр. 29-03-2006 | Отправлено: 12:27 12-08-2017
    GRom V

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

    Цитата:
    1. как уже предлагал Frodo_Torbins, добавить проверку длины (возможен служебный символ в начале):  

    Как это осуществить?

    Цитата:
    'w' и 'W' - это разные символы, своди проверку в один регистр.
     

    Я понимаю и ввожу правильно w а не W
    На сервере отображается так (: w) - я скопировал это и получилось так:
    If LeftStr(s,1)=': w' Then showmessage('Тест'); - но все равно тишина(
     

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 14:11 12-08-2017
    XenoZ



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

    Цитата:
    Как это осуществить?

    Эээ...
    Memo1.Lines.Add(IntToStr(Length(s)));
     

    Цитата:
    If LeftStr(s,1)=': w' Then showmessage('Тест'); - но все равно тишина(

    Почитать описание функции не пробовал? Второй параметр - кол-во знаков с начала строки.
    Если нужно определить наличие символа в произвольном месте строки, используй функцию Pos.

    ----------
    А оно мне надо?..

    Всего записей: 5443 | Зарегистр. 29-03-2006 | Отправлено: 14:25 12-08-2017
    GRom V

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

    Цитата:
    If LeftStr(s,1)=': w' Then showmessage('Тест'); - но все равно тишина(
     
    Почитать описание функции не пробовал? Второй параметр - кол-во знаков с начала строки.
    Если нужно определить наличие символа в произвольном месте строки, используй функцию Pos.

     
    Не выходит(((

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 14:59 12-08-2017
    XenoZ



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

    Цитата:
    Не выходит(((

    Очень "информативно". А более развернуто никак?

    ----------
    А оно мне надо?..

    Всего записей: 5443 | Зарегистр. 29-03-2006 | Отправлено: 15:07 12-08-2017
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    If LeftStr(s,1)=': w' Then showmessage('Тест'); пробовал менять второй параметр (изголялся как угодно сообщение на сервер приходит как я описал выше, но реакции никакой)

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 15:09 12-08-2017
    Открыть новую тему     Написать ответ в эту тему

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