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


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 5

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).

Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].

     
    И старайтесь, чтобы ваш код не попал сюда

  • Всего записей: 3914 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: data man, 02:45 31-12-2010
    NeoAnomaly

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Всего записей: 454 | Зарегистр. 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
     

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

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

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

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

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



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

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

    Всего записей: 4982 | Зарегистр. 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

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



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

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



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

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

    Всего записей: 4982 | Зарегистр. 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('Тест'); - но все равно тишина(
     

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



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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

    Всего записей: 454 | Зарегистр. 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

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

    Имя:
    Пароль:
    Сообщение

    Для вставки имени, кликните на нем.

    Опции сообщенияДобавить свою подпись
    Подписаться на получение ответов по e-mail
    Добавить тему в личные закладки
    Разрешить смайлики?
    Запретить коды


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2018

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru