Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.068 c
9-1074104612
Bortel
2004-01-14 21:23
2004.05.23
Помогите с первой игрой


6-1080819517
bytebutcher
2004-04-01 15:38
2004.05.23
Подскажите как использовать TIdTunnelMaster и TIdTunnelSlave?


14-1083382986
Alexander666
2004-05-01 07:43
2004.05.23
Concrete Mathematics


14-1083614203
Piter
2004-05-03 23:56
2004.05.23
Реклама Playstation 1


1-1083949911
LAnd
2004-05-07 21:11
2004.05.23
Переменные в DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский