Конференция "WinAPI" » AnsiUpperCase [D7]
 
  • Сергей (22.11.12 22:05) [0]
    есть функция AnsiUpperCase. С ней все вроде понятно. А как получить вместо знака "/" знак "?", или вместо "1" знак "!" ?. т.е будто была нажата клавиша Shift.
  • Германн © (22.11.12 22:21) [1]
    А смысл? Одно дело сравнивать некий текст регистронезависимо.
  • Rouse_ © (22.11.12 22:25) [2]
    Задача то какая?
    Если пользователю нужно ввести необходимый символ он и так нажмет Shift.
  • Сергей (22.11.12 22:26) [3]
    ну т.е. AnsiUpperCase такие символы не переводит?
  • Rouse_ © (22.11.12 22:31) [4]

    > Сергей   (22.11.12 22:26) [3]
    > ну т.е. AnsiUpperCase такие символы не переводит?

    Какие - такие? Вот давай порассуждаем, ты же программист, значит должен обладать логическим мышлением. Вот есть "а" - это элемент алфавита, который может быть представлен в виде строковых и прописных элементов, в школе так учат.
    А теперь берем другой знак, ну например тот-же "/".
    В какой школе учат что ему соответствует знак вопроса?
  • Сергей (22.11.12 22:51) [5]
    да понял, просто не до конца понимал суть функции. спасибо)
  • bems © (23.11.12 01:28) [6]
    то что ты хочешь для символов, не зависящих от раскладки делается так
     function CapsMode(const S: AnsiString): AnsiString;
     var
       Keys: TKeyboardState;
       Vk: Word;
       i: Integer;
       Ch: DWORD;
     begin
       FillChar(Keys, SizeOf(Keys), 0);
       Keys[VK_SHIFT] := $80;
       SetLength(Result, Length(S));

       for i := 1 to Length(Result) do
         begin
         Vk := VkKeyScanA(S[i]);
         if Vk = $FFFF then RaiseLastOsError(ERROR_NO_UNICODE_TRANSLATION);

         if ToAscii(LoByte(Vk), 0, Keys, @Ch, 0) <> 1 then RaiseLastOsError(ERROR_NO_UNICODE_TRANSLATION);

         Result[i] := AnsiChar(Ch)
         end;
     end;



    а для зависящих в общем случае никак, потому что на компьютере может быть и не установлена украинская раскладка чтобы преобразовать из ї в Ї
  • Anatoly Podgoretsky © (23.11.12 08:01) [7]
    Нет у "/" знак "?" ни верхнего, ни нижнего регистра
    А учитывая бардак с раскладками клавиатуры нельзя даже на нее ссылаться. Например символ "\" где только не бывал, последний раз я его обнаружил на клавише Z
  • cad2206 (23.11.12 10:39) [8]
    спасибо всем, было полезно)
  • brother © (24.11.12 04:57) [9]
    > последний раз я его обнаружил на клавише Z

    это не на неэтбуках случаем?
  • Anatoly Podgoretsky © (24.11.12 09:42) [10]
    > brother  (24.11.2012 04:57:09)  [9]

    Обычная десктопная клавиатура, не 102 клавиши, эта клавиши левее Z
  • bems © (24.11.12 17:29) [11]

    > эта клавиши левее Z

    так левее Z или не левее это не важно. Если при латинском языке ввода она там же где | то соответствие всё еще есть
  • Плохиш © (26.11.12 13:03) [12]

    > А как получить вместо знака "/" знак "?"

    С чего бы это? У меня "/" - "7" и "?" - "ß"
  • Ваще имя (28.11.12 14:53) [13]
    > "?" - "ß"
    А в нижних углах Strng? :-)
  • Плохиш © (28.11.12 17:23) [14]

    > Strng

    нету у меня таких кнопок.
  • Ваще имя (28.11.12 18:02) [15]
    Извиняюсь, затесалась лишняя ;-)
 
Конференция "WinAPI" » AnsiUpperCase [D7]
Есть новые Нет новых   [134430   +3][b:0][p:0.001]