Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизЧертов Скринсервер. Найти похожие ветки
← →
studentRSU (2004-05-12 01:09) [0]Ситуация такая: я написал скринсервер, состоящий из двух форм (само изображение и окно настроек). Все настройки сохраняются в ini-файле. После компиляции я запускаю получившийся exe-шник, все проверяю, все работает. Однако когда я меняю расширение файла на scr и копирую его в WINDOWS\System32 начинаются проблемы. Он не читает настройки и не записывает их в ini-файл, и те настройки, которые должны быть по-умолчанию (на случай, если они отсутсвуют в ini-файле) тоже не работают. Вот код записи настроек:
var
IniPath:string;
FileName:string;
IniFile: TIniFile;
begin
GetDir(0,IniPath);
FileName:=IniPath+"\eros.ini";
IniFile:=TIniFile.Create(FileName);
IniFile.WriteBool("Options","MoveMouse",CheckBox1.Checked);
IniFile.WriteBool("Options","ClickMouse",CheckBox2.Checked);
IniFile.WriteBool("Options","PressAnyKey",CheckBox3.Checked);
IniFile.WriteBool("Options","PressEscKey",CheckBox4.Checked);
IniFile.WriteBool("Options","Sound",CheckBox5.Checked);
IniFile.WriteBool("Options","Cursor",CheckBox6.Checked);
IniFile.WriteBool("Options","StretchPicture",CheckBox7.Checked);
IniFile.WriteInteger("Options","Interval",SpinEdit1.Value);
IniFile.Free;
Close;
end;
Это код чтения настроек:
var IniPath:string;
FileName:string;
IniFile: TIniFile;
begin
ScreenS.Left:=0;
ScreenS.Top:=0;
ScreenS.Height:=Screen.Height;
ScreenS.Width:=Screen.Width;
GetDir(0,IniPath);
FileName:=IniPath+"\eros.ini";
IniFile:=TIniFile.Create(FileName);
MoveMouse:=IniFile.ReadBool("Options","MoveMouse",true);
ClickMouse:=IniFile.ReadBool("Options","ClickMouse",true);
PressAnyKey:=IniFile.ReadBool("Options","PressAnyKey",true);
PressEscKey:=IniFile.ReadBool("Options","PressEscKey",true);
Sound:=IniFile.ReadBool("Options","Sound",true);
Mouse:=IniFile.ReadBool("Options","Cursor",false);
StretchPicture:=IniFile.ReadBool("Options","StretchPicture",true);
Interval:=IniFile.ReadInteger("Options","Interval",5);
ID:=IniFile.ReadFloat("Registry","ID",0);
if NOT Mouse then ShowCursor(false);
Timer1.Interval:=Interval*1000;
If NOT StretchPicture then PicStretch;
if regestry(ID) then Label1.Visible:=false
else begin Label1.Visible:=true; Label1.Left:=(Screen.Width-Label1.Width)div 2; end;
end
end;
Переменные MoveMouse, ClickMouse, PressAnyKey и т.д. - глобальные. Совершенно непонятно для меня то, что даже если программа не может прочесть настройки из ini-файла, ведь есть же значения по-умолчанию. Скажем ClickMouse по-умолчанию равен true, однако после смены расширения у программы следующий код просто игнорируется:
procedure TScreenS.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ClickMouse then Close;
end;
В чем может быть причина таких странностей? Я уже перелопатил кучу информации, но ничего по этому конкретному вопросу не нашел. Я программист начинающий и может быть не там ищу? Вобщем, кто знает с чем это связано или где я могу найти информацию по этому вопросу, ответьте, пожалуйста. Буду премного благодарен. Только просьба отвечать по существу. Этот вопрос я уже задавал на форуме, но решил задать снова в более подробной форме. Всем кто ответит заранее спасибо.
PS Мне советовали заменить
GetDir(0,IniPath);
FileName:=IniPath+"\eros.ini";
IniFile:=TIniFile.Create(FileName);
на
IniFile:=TIniFile.Create(ExtractFileDir(ParamStr(0))+"\eros.ini");
но это не помогло.
← →
studentRSU (2004-05-12 13:39) [1]Неужели никто не знает в чем дело? Ответьте, очень надо. Скажите хотя бы где искать.
← →
stone © (2004-05-12 13:52) [2]Удалено модератором
← →
nejest (2004-05-12 14:30) [3]Попробуй не менять расширение, а написать маленькую программу .scr , которая будет запускать экзешник. Напиши что получилось.
← →
ККВ © (2004-05-12 14:44) [4]а чему равен IniPath?
← →
WebErr © (2004-05-12 14:56) [5]
> Он не читает настройки и не записывает их в ini-файл
Как там с полным именем файла? :))))
Вообще-то если всё работает, но "когда переношу не работает", то ошибка скорее всего в полном имени файла.
Если Screen Saver не работает сам по себе (не учитывая чтение настроек), то дело в самом расширении Scr. В этом случае советую почитать документацию по данной теме.
← →
pasha_golub © (2004-05-12 16:22) [6]Удалено модератором
← →
zeqfreed © (2004-05-12 19:10) [7]Попробуй
IniPath := ExtractFilePath(ParamStr(0)) + "\" + IniPath;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c