Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382

Как переключить CapsLock ?

07.02.2021, 22:04. Показов 5356. Ответов 83
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужна проверка капслока, и если не включено - включить
код не правильный:

Delphi
1
2
3
4
5
6
7
var
KeyState: TKeyboardState;
 
begin
GetKeyboardState(KeyState);
if (KeyState[VK_CAPITAL]=0) then KeyState[VK_CAPITAL]:=1;
end;
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2021, 22:04
Ответы с готовыми решениями:

Как отследить NumLock или CapsLock?
Как сделать, чтобы форма появлялась и "пряталась" в зависимости от состояния Num Lock. С GetKeyboardState возникли проблемы. Очень надо,...

Как определить нажата ли клавиша capslock, numlock, ins в vb.net?
Как определить нажата ли клавиша capslock, numlock, ins в vb.net? Надо для текстового редактора, там внизу на статусбаре должно...

Как в ahk Забиндить на CapsLock нажатие двух клавиш space и ctrl?
Как в ahk Забиндить на CapsLock нажатие двух клавиш space и ctrl? P.S не знал в какую тему написать так что сюда

83
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
08.02.2021, 18:32
Студворк — интернет-сервис помощи студентам
Но я конечно не на что не намекаю, я давно просто пишу Screen.Forms[....], в форме настроек.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,497
08.02.2021, 18:46
Цитата Сообщение от OpXiv Посмотреть сообщение
Это может быть форма настроек, которая должна обратиться к пару компонентам первой формы, и поменять их настройки.
Нет. Можно у формы настроек сделать событие OnChangeConfig, и к ней прицепить обработчик, который находится на главной форме и знает, что и как надо менять. Он же будет считывать настройки из формы настроек и применять их так, как нужно. Такая изоляция форм спасёт погромиста от перелопачивания сразу нескольких форм при внесении изменения в одну форму.

Добавлено через 2 минуты
Плюс ещё настройки нужно передавать/забирать через специальную структуру или объект. Тогда изменение формы настроек не будет совершенно зависеть от других форм. Решите поменять SpinEdit на ScrollBar - главная форма этого даже не заметит и туда не придётся вносить никаких изменений.
1
 Аватар для Alex Prozac
105 / 90 / 9
Регистрация: 25.11.2020
Сообщений: 261
08.02.2021, 19:04
ну, там архив слов, их на литовском полтора миллиарда так то
вообще все работает, ексешник 14мегабайт, сам словарь пока 4мегабайта.. пока
А зачем весь литовский язык в переменную-то тащить? Создай простейшую базу данных - файлик строк, и тягай оттуда, по мере надобности, лишь те слова, которые нужны в данный момент! Думаю, что навряд-ли юзеру понадобится ВЕСЬ литовский язык одновременно! Да - файл-словарь тоже будет загружаться в память и болтаться там, но его оттуда можно благополучно выгнать, пока он не нужен - в отличие от экзешника, который грузится целиком и висит в памяти до победного конца. К тому же, файл можно будет редактировать, не трогая экзешник, и беспрепятственно обновлять по мере пополнения словаря. Более того, можно поискать в сети исследования лнгвистов, чтобы определить наиболее часто используемые слова и слова редкие, и разложить их по файлам: сначала открывать базу частых слов и искать там, а уж потом, если не нашлось - лезть в словарь редких слов. А то ведь так можно дойти до того, что для каждого слова языка по переменной создать)))

Добавлено через 4 минуты
Это что-то очень старенькое.
Я использую Delphi-7, а про нее в справочниках сказано, что string там сидит в памяти напрямую - статически (а не в виде указателя на динамическую область), и без опредпления длинны занимает там 256 байт. Не знаю - может быть, в более современных версиях и по-другому - не интересовался, ибо пока хватает и семерки. Ну, или я не те справочники читаю))
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,497
08.02.2021, 19:21
Цитата Сообщение от Alex Prozac Посмотреть сообщение
в справочниках сказано, что string там сидит в памяти напрямую - статически
В дельфи 7 просто string динамически выделяет память. string[n] сидит статически.
Проверил так:
Delphi
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
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    a: array[0..1000000] of string; 
//    a: array[0..1000000] of string[100]; 
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to High(a) do
    a[i] := '1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890';
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to High(a) do
    a[i] := '1';
end;
Только при уменьшении размера string потребление памяти уменьшается не до начального значения. Только при a[i] := ''; память освобождается до начального значения.
1
 Аватар для Alex Prozac
105 / 90 / 9
Регистрация: 25.11.2020
Сообщений: 261
08.02.2021, 19:42
AzAtom, спасибо за разъяснение! Учту! Лично я всегда экономлю на переменных - счетчик цикла, например, если ему нужно отсчитать раз 10, всегда объявляю, как byte; если работаю с короткой строкой, то всегда пишу string[15] (к примеру); стараюсь избегать глобальных переменных и люблю переменные temp и work, которые можно использовать вторично... Этот у меня после AVRок такое, нервное))
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,497
08.02.2021, 19:52
Цитата Сообщение от Alex Prozac Посмотреть сообщение
счетчик цикла, например, если ему нужно отсчитать раз 10, всегда объявляю, как byte;
Зачем? Совершенно нет смысла. В циклах переменная цикла находится в регистре процессора и не занимает память. Ну разве что, команда проверки 8 битного регистра короче, чем команда проверки 32 битного регистра. В остальном разницы нет.
0
 Аватар для Alex Prozac
105 / 90 / 9
Регистрация: 25.11.2020
Сообщений: 261
08.02.2021, 20:21
Зачем? Совершенно нет смысла.
Привычка. На мой взгляд, не самая плохая. Да и на МК, где ресурсы очень ограниченные, этот навык реально пригождается.

команда проверки 8 битного регистра короче, чем команда проверки 32 битного регистра
Уже плюс, пусть и небольшой))
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
08.02.2021, 20:31
Цитата Сообщение от AzAtom Посмотреть сообщение
Только при уменьшении размера string потребление памяти уменьшается не до начального значения.
Через диспетчер мерили ?

Кликните здесь для просмотра всего текста
Delphi
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
program Project2;
 
{$APPTYPE CONSOLE}
{$R *.res}
 
uses
  System.SysUtils, windows, PSApi;
 
function MemoryUsage: DWORD;
var
  pmc: PROCESS_MEMORY_COUNTERS;
begin
  pmc.cb := sizeof(pmc);
  if GetProcessMemoryInfo(GetCurrentProcess, @pmc, sizeof(pmc)) then
    Result := pmc.WorkingSetSize + pmc.PagefileUsage
  else
    Result := $FFFFFFFF;
end;
 
const
  SizeArr = 1000000;
 
var
  Arr: Array of string;
 
  Usage, Usage2: DWORD;
 
function GetKB(Current: Byte): string;
begin
  case Current of
    0:
      Result := FloatToStr(Usage / 1024) + ' KB';
    1:
      Result := FloatToStr(Usage2 / 1024) + ' KB';
  else
    Result := FloatToStr((Usage2 - Usage) / 1024) + ' KB';
  end;
end;
 
procedure InitArr;
begin
  WriteLn('InitArr');
 
  Usage := MemoryUsage;
 
  WriteLn('Current consumption: ' + GetKB(0));
 
  SetLength(Arr, SizeArr);
 
  WriteLn('Successful selection');
 
  Usage2 := MemoryUsage;
 
  WriteLn('Current consumption: ' + GetKB(1));
 
  WriteLn('Difference in consumption: ' + GetKB(2));
 
  WriteLn('-----------------------------------');
end;
 
procedure FillingLines();
var
  i: Integer;
begin
  WriteLn('FillingLines');
 
  Usage := MemoryUsage;
 
  WriteLn('Current consumption: ' + GetKB(0));
 
  for i := Low(Arr) to High(Arr) do
  begin
    Arr[i] := '123456789012345678901234567890qwertyui' + IntToStr(i);
  end;
 
  WriteLn('Successful filling of lines');
 
  Usage2 := MemoryUsage;
 
  WriteLn('Current consumption: ' + GetKB(1));
 
  WriteLn('Difference in consumption: ' + GetKB(2));
 
  WriteLn('-----------------------------------');
end;
 
procedure FreeLines();
begin
  WriteLn('FreeLines');
 
  Usage := MemoryUsage;
 
  WriteLn('Current consumption: ' + GetKB(0));
 
  SetLength(Arr, 0);
 
  WriteLn('Successful free of lines');
 
  Usage2 := MemoryUsage;
 
  WriteLn('Current consumption: ' + GetKB(1));
 
  WriteLn('Received back : ' + GetKB(2));
 
  WriteLn('-----------------------------------');
 
  Usage := MemoryUsage;
 
  WriteLn('Current consumption: ' + GetKB(0));
end;
 
begin
  try
 
    InitArr;
    FillingLines();
    FreeLines();
  except
    on E: Exception do
      WriteLn(E.ClassName, ': ', E.Message);
  end;
  Readln;
 
end.



InitArr
Current consumption: 8712 KB
Successful selection
Current consumption: 16604 KB
Difference in consumption: 7892 KB
-----------------------------------
FillingLines
Current consumption: 16612 KB
Successful filling of lines
Current consumption: 457064 KB
Difference in consumption: 440452 KB
-----------------------------------
FreeLines
Current consumption: 457068 KB
Successful free of lines
Current consumption: 13564 KB
Received back : 3750800 KB
-----------------------------------
Current consumption: 13564 KB
0
08.02.2021, 21:34

Не по теме:

Цитата Сообщение от D1973 Посмотреть сообщение

Не по теме:


Да? Ну дело-то Ваше, я лично Вас ни к чему не призываю, делайте что хотите и как хотите...

- грабли бесконечны...

0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
09.02.2021, 22:28  [ТС]
все, так и оставлю, программу с словарем разместил туто если кому интересно:
https://mindspick.netlify.app/download/LTU10.rar
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
09.02.2021, 22:55
Цитата Сообщение от rolandas Посмотреть сообщение
все, так и оставлю, программу с словарем разместил туто если кому интересно:
Ооо. При попытке скачать архив, орёт TScope.Trojan.Delf
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
09.02.2021, 23:51  [ТС]
просканирю антивирусником другим, просто у меня в десятке только встроенная защита.
сам embarcdero может при компиляции екзешника что то встраивает.
но если позволили на приличный сайт закачать, может и ложная тревога.
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
09.02.2021, 23:57
Цитата Сообщение от rolandas Посмотреть сообщение
но если позволили на приличный сайт закачать, может и ложная тревога
Да я вот вчера Windows переустановил, купил 2 антивирусные программы. И всё равно замечаю что, что - то на компьютере у меня живёт не так.

Возможно вирус какой то и у меня на компьютере, который заражает файлы другие(Исполняемые).

Добавлено через 1 минуту
Но возможно я просто параноик, и сам себе надумываю.
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
10.02.2021, 00:04  [ТС]
Заметил факт - проблемы с вирусами начинается как только начинаю каким нибудь антивирусником пользоваться.
Кончилось тем, что в десятой винде хватает встроенного, а на компах где семерка и хрюша - вообще
без какого либо антивирусника. и что? интернет пашет и никаких проблем.
хотя много софта из TPB. может везет.
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
10.02.2021, 00:08
Цитата Сообщение от rolandas Посмотреть сообщение
интернет пашет и никаких проблем.
Так и у меня всё пашет, и игры летают. Но стоит оставить компьютер на пару минут\до 15 стоять, то вижу как диспетчер задач начинает отображать нагрузку на процессор и видеокарту. Хотя в этот момент ничего такого не запущено. А стоит мышку подвинуть, сразу вся нагрузка уходит.

Правда на данный момент ничего такого не происходит, но всё равно уже напрягся от ситуации.
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
10.02.2021, 00:35
Цитата Сообщение от OpXiv Посмотреть сообщение
Но стоит оставить компьютер на пару минут\до 15 стоять, то вижу как диспетчер задач начинает отображать нагрузку на процессор и видеокарту
Процесс эксплорер пробовали запускать?
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
10.02.2021, 00:51  [ТС]
у него наверно такой вирус, при любой активности со стороны человека - себя и свои следы и действие скрывает и прекращает
и не такой дурак - если экплорер мониторит в экран - тоже не покажет живухи и движухи
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,497
10.02.2021, 01:50
Цитата Сообщение от OpXiv Посмотреть сообщение
Но стоит оставить компьютер на пару минут\до 15 стоять, то вижу как диспетчер задач начинает отображать нагрузку на процессор
О, у меня на семёрке так же. Про видеокарту не знаю точно. Я просто слышу усиленный шум вентилятора, а когда запускаю диспетчер задач, то всё тихо становится. А на днях прочитал о вредоносном коде в одном из плагинов браузера, который во время простоя компа открывает видео на разных сайтах и накручивает там просмотры. Может, это оно и есть?
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
10.02.2021, 02:04
Цитата Сообщение от Alex Prozac Посмотреть сообщение
Я использую Delphi-7, а про нее в справочниках сказано, что string там сидит в памяти напрямую - статически
Это какие-то неправильные справочники. Или вы неправильно их понимаете.
Тип string без указания размера занимал в памяти 256 байт в предшественнике Дельфи ака Турбо Паскаль и в первой версии Дельфи. И именно в них это был статический тип. Но начиная с Дельфи2 тип string стал динамическим. Память под саму строку стала выделяться в рантайме. Правда в опциях проекта при этом появилась опция {$H, которая стала определять конкретное значение типа string. При выключенной опции {$H-} этот тип считался короткой строкой, статически размещенной в памяти. При включенной опции (она в Д2 и выше по умолчанию включена) этот тип был длинной строкой динамически размещаемой в памяти.
2
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
10.02.2021, 02:05
Цитата Сообщение от AzAtom Посмотреть сообщение
Может, это оно и есть?
Нагрузка была от любых процессов, хоть от notepad.exe. Но проблемы с браузером тоже были, к примеру браузер в вк мог выдать - данная страница нагружает ваш браузер.


Цитата Сообщение от Пытливый Посмотреть сообщение
Процесс эксплорер пробовали запускать?
Нет, не знаю что там смотреть если честно : )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2021, 02:05

Кто подскажет, как сделать чтобы программа при нажатии на Button1 емулировала нажатие CapsLock
Кто подскажет, как сделать чтобы программа при нажатии на Button1 емулировала нажатие СapsLock.....:declare:

Как переключить язык?
На домашнем компе работает переключение языков в Паскале стандартано: справа-русский, слева-английский. Стоит ХР! Но! Как выхожу из...

Как переключить звук в ТВ
Здравствуйте. Как в ТВ Samsung Series5 переключить звук с наушников на динамик ТВ. Вообщем, вставили наушники в разьем для наушников,...

Как переключить раскладку?
Kak perekluchit tekstovyu raskladky v ubuntu? Добавлено через 6 минут Все разобрался, система-клавиатура.

Как переключить мониторы?
У меня видеокарта geforce 4 mx хочу подключить монитор и телоевизор, но при включении телевизора монитор работать отказывается, а хотелось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru