Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2011, 12:04   #1
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
Вопрос DLL не хочет загружать ini!

Вот код:
Код:
library pathMouse;

{  }

uses
  SysUtils,
  Classes, IniFiles, Windows;

{$R *.res}

var
 IniFile : TIniFile;
 mouseSensitivity_X : single;
 mouseSensitivity_Y : single;
 sightSensitivity_X : single;


begin

IniFile := TIniFile.Create(ExtractFilePath(paramstr(0))+ '\MouseSet.ini');

mouseSensitivity_X :=  IniFile.ReadFloat('vcmouse','mouseSensitivity_X',1.0);
mouseSensitivity_Y :=  IniFile.ReadFloat('vcmouse','mouseSensitivity_Y',1.0);
sightSensitivity_X :=  IniFile.ReadFloat('vcmouse','sightSensitivity_X',1.0);

MessageBox(0, PAnsiChar(FloatToStr(mouseSensitivity_Y)) ,'',0);

pSingle($0068AE00)^ := 0.8; //mouseSensitivity_X;
pSingle($0068ADE8)^ := 0.5; //mouseSensitivity_Y;
pSingle($0068ADF4)^ := 0.5;//sightSensitivity_X



end.
а вот в ini:
Код HTML:
[vcmouse]
mouseSensitivity_X = 3.0
mouseSensitivity_Y = 2.0
sightSensitivity_X = 2.0
Что не так???
VintProg вне форума Ответить с цитированием
Старый 29.07.2011, 12:12   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а разве этот код в begin/end вообще выполняется?
там ж вроде функцию DllEntryPoint надо писать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.07.2011, 12:15   #3
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Код выполняется!
VintProg вне форума Ответить с цитированием
Старый 29.07.2011, 12:53   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

А попробуй вот так изменить содержимое ini файла:
Код:
mouseSensitivity_X = 3,0
mouseSensitivity_Y = 2,0
sightSensitivity_X = 2,0
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 29.07.2011, 12:54   #5
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Да делал! все равно не хочет, в общем надо как-то узнать патч самой dll, на подобие
application.exename но как???
VintProg вне форума Ответить с цитированием
Старый 29.07.2011, 12:59   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Стоп...если стоит разделитель точка, то например у меня тоже ничего не читается, ибо там происходит EConverError...А вот с запятыми работает...Там походу храмает реализация метода ReadFloat...

Код:
application.exename но как???
Так путь ты и так получаешь при помощи
Код:
ExtractFilePath(paramstr(0))
Ну да там путь к твоему exe, но мы же затем путь к дирректории берем...О, а все файлы в одной папке хоть лежат...?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 29.07.2011, 13:04   #7
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

А все точно 3,0 надо было ставить ","...
VintProg вне форума Ответить с цитированием
Старый 29.07.2011, 13:25   #8
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

А кстати, вся же проблема в значении DecimalSeparator...посему как варианты решения:
1) читать и писать строковые значения, а после/до переводить в число...
2) изменять значение переменной DecimalSeparator на точку или запятую // не рекомендуется
3) написать свой метод (унаследовав класс от TIniFile) и переделать, а вернее довести до ума, реализацию метода ReadFloat...
Ибо если просто изменить значение разделителя в файле, то не факт, что на другом компе будет работать...
Будь проще и люди к тебе потянутся

Последний раз редактировалось spamer; 29.07.2011 в 13:28.
spamer вне форума Ответить с цитированием
Старый 29.07.2011, 16:58   #9
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Терзают меня смутные сомнения, что проблема тут:

Код:
IniFile := TIniFile.Create(ExtractFilePath(paramstr(0))+ '\MouseSet.ini');
Из библиотеки это криво вызывается (подробностей не помню, но сталкивался).
Используйте реестр винды плюс явные пути.
Перед запуском программа пишет в реестр рабочую папку, библиотека читает из неё путь и грузит файл.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 30.07.2011, 21:07   #10
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Может http://delphiworld.narod.ru/base/dll_path_from_dll.html

Последний раз редактировалось Alter; 30.07.2011 в 21:27.
Alter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загружать куски кода извне MyLastHit Общие вопросы Delphi 5 02.12.2010 20:26
Загружать TXT из EXE Shouldercannon Общие вопросы Delphi 4 28.04.2010 15:59
Как пересмотреть все секции в INI.ini ? iskurt Помощь студентам 1 31.01.2010 07:48
Создать ini-файл с помощью dll bush007 Помощь студентам 35 08.09.2009 22:47