С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 30.12.2009
Сообщений: 12

Хочу написать программу, но не получается!!!

31.12.2009, 14:01. Показов 1321. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я хотел узнать, можно ли использовать такой код???
Если нет, пожалуйста исправьте мои ошибки.
При запуске программы, программа запускается, но пишет ошибку и всё же удаляет параметры с реестра!!!
Я начал работать в Delphi только позавчера, поэтому много не знаю!!!

Мой код:
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
var
reg:TRegistry;
 
data : integer;
time : integer;
datadata : integer;
timetime : integer;
 
datacomp : integer;
timecomp : integer;
 
  hToken: THandle;
  tkp: TTokenPrivileges;
  ReturnLength: Cardinal;
Begin
 ShowWindow(Handle,SW_HIDE);
 ShowWindow(Application.Handle,SW_HIDE);
 
 reg:=TRegIniFile.Create;
 reg.RootKey:=HKEY_CURRENT_USER;
 reg.OpenKey('Software\Comp-OFF\Time', false);
 data:=StrToint(reg.ReadString('data-off'));
 time:=StrToint(reg.ReadString('time-off'));
 reg.CloseKey;
 reg.Free;
 
 datacomp := StrToint(FormatDateTime('yyyymmdd',now));
 timecomp := StrToint(FormatDateTime('hhmm',now));
 
 datadata := data - datacomp;
 timetime := time - timecomp;
 
 if datadata > 0 then
   if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY, hToken) then
   begin
    LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
    tkp.PrivilegeCount := 1;
    tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
      ExitWindowsEx(EWX_ShutDown,0);// Выключение
  end;
 
 if datadata = 0 then
  if timetime > 0 then
   if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY, hToken) then
   begin
    LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
    tkp.PrivilegeCount := 1;
    tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
      ExitWindowsEx(EWX_ShutDown,0);// Выключение
  end;
 
 if datadata = 0 then
  if timetime = 0 then
   if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY, hToken) then
   begin
    LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid);
    tkp.PrivilegeCount := 1;
    tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
    if AdjustTokenPrivileges(hToken, False, tkp, 0, nil, ReturnLength) then
      ExitWindowsEx(EWX_ShutDown,0);// Выключение
  end;
 
 if datadata = 0 then
  if timetime < 0 then
   reg:=TRegIniFile.Create;
   reg.RootKey:=HKEY_CURRENT_USER;
   reg.OpenKey('Software\Comp-OFF\Time', false);
   reg.DeleteValue('data-off');
   reg.DeleteValue('time-off');
   reg.CloseKey;
   reg.Free;
 
   reg:=TRegIniFile.Create;
   reg.RootKey:=HKEY_CURRENT_USER;
   reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', false);
   reg.DeleteValue('Comp-OFF');
   reg.CloseKey;
   reg.Free;
 
   Form1.Close;
 
 if datadata < 0 then
   reg:=TRegIniFile.Create;
   reg.RootKey:=HKEY_CURRENT_USER;
   reg.OpenKey('Software\Comp-OFF\Time', false);
   reg.DeleteValue('data-off');
   reg.DeleteValue('time-off');
   reg.CloseKey;
   reg.Free;
 
   reg:=TRegIniFile.Create;
   reg.RootKey:=HKEY_CURRENT_USER;
   reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', false);
   reg.DeleteValue('Comp-OFF');
   reg.CloseKey;
   reg.Free;
 
   Form1.Close;
end;
Я хочу, чтоб прога прочитала данные с реестра и отняла от них дату и время!
Если данные с реестра (Дата) - дата > 0, то выкл. комп

Если данные с реестра (Дата) - дата = 0, то
Если данные с реестра (Время) - время > 0, то выкл. комп

Если данные с реестра (Дата) - дата = 0, то
Если данные с реестра (Время) - время = 0, то выкл. комп

Если данные с реестра (Дата) - дата = 0, то
Если данные с реестра (Время) - время < 0, то удаление данных с реестра + удаление с автозапуска + выход с программы

Если данные с реестра (Дата) - дата < 0, то удаление данных с реестра + удаление с автозапуска + выход с программы


Пожалуйста, помогите!!! Я хочу закончить программу к новому году, а он уже через 11 часов!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.12.2009, 14:01
Ответы с готовыми решениями:

хочу написать каталог вводимых имен, но что то не получается.
хочу написать каталог вводимых имен, но что то не получается. логика исполнения приблизительна такая: int main(int argc, char*...

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

Хочу написать реальную программу!!!
Всем привет)) Поставил перед собой задачу - написать реальную программу. Дело в том, что хочу понять изнутри процесс написания...

1
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
03.01.2010, 10:49
YНа сколько я помню -при такой записи reg.OpenKey('Software\Microsoft\Windows\ CurrentVersion\Run', false); если ключ отсутствует то будет ошибка Лучше писать True при открытие ключа ,а удалять ключ reg.DeleteKey .Вот это тоже не красиво data:=StrToint(reg.ReadString('data-off')); лучше не делать лишнего а просто написать data:=reg.ReadInteger('data-off');это если запись в целых числах,но лучше записывать и читать дату(хотя на усмотрение автора) WritteDate и ReadDate
Ну а дальше я думаю трудностей не должно возникать с оператором if и хочешь выключай хочешь перезагружай ну и можно удалить ключь,запись или наоборот записать новые данные при этом старые автоматом удалятся

Добавлено через 23 минуты
вот небольшой примерчик накрапал
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Registry, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
 reg: TRegistry;
begin
 reg:= TRegistry.Create;
 reg.RootKey:= HKEY_CURRENT_USER;
 reg.OpenKey('Software\MyProgram',True);
 reg.WriteInteger('MyValue',11);
 reg.CloseKey;
 reg.Free;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var
 reg: TRegistry;
 Time: Integer;
begin
 reg:= TRegistry.Create;
 reg.RootKey:= HKEY_CURRENT_USER;
 reg.OpenKey('Software\MyProgram',True);
 Time:= reg.ReadInteger('MyValue');
 reg.CloseKey;
 reg.Free;
 if Time > 10 then
  begin
    ShowMessage('Я больше 10');
    reg:= TRegistry.Create;
    reg.RootKey:= HKEY_CURRENT_USER;
    reg.DeleteKey('Software\MyProgram');
    reg.CloseKey;
    reg.Free;
  end
   else ShowMessage('Я меньше 10');
 
end;
 
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.01.2010, 10:49
Помогаю со студенческими работами здесь

Хочу написать программу на Android
Всем привет! Ситуация такова: Решил сделать приложение на Android,а знаний в программировании абсолютно никаких нет, так как являюсь лишь...

Хочу написать программу но не продумать алгоритм..
Я хочу написать такую программу: Она должна проверять что если с 8.00 до 23.00 скорость скачки больше 10мин и привышает 100кб тогда...

хочу написать программу на подобие icq
здравствуйте, хочу написать программу на подобие icq, и хотел бы узнать для этого нужно:pardon:, то есть с чего начать:)

Я хочу написать программу по учету торговых операций
Я хочу написать программу по учету торговых операций если успешно освою с++, скажите там еще нужно базу данных знать типо скуела какой язык...

Хочу написать программу. Нужен Ваш совет.
Господа специалисты! Хочу написать программу. Нужен Ваш совет. У меня есть довольно четкое представление, что должно быть в итоге....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru