Работа с ini файлами
| |
Волк-1024 | Дата: Четверг, 12.01.2012, 19:17 | Сообщение # 1 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Здравствуйте. Очень нужен модуль для работы с ini файлами ТОЛЬКО на API. Т.к стандартный модуль IniFiles не устраивает из-за VCL ных функций и своего размера. Он сам-то не маленький плюс еще к себе присоединяет модуль classes, который вообще монстр. Сейчас пытаюсь перепилить некоторые VCL ные функции на апи, но это адово сложно, ибо одна функа приплетает еще кучу, а те еще и еще....
P.S. Гуглил долго и упорно, но кроме фигни ничего не нашел... ((( P.S.S. За помощь обделю большими плюсами.
Pascal, C\C++, Assembler, Python
|
|
| |
dolphin | Дата: Пятница, 13.01.2012, 00:21 | Сообщение # 2 |
Администратор
Сообщений: 906
Статус: Offline
| Не знаю модуля на апи, но можно свой попробовать написать, думаю это не так сложно будет. Какие именно функции нужны?
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
Волк-1024 | Дата: Пятница, 13.01.2012, 14:19 | Сообщение # 3 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Хотя бы самую необходимую. Функцию для чтение параметра из файла. Т.е указываешь секцию, откуда читать и сам параметр. И получаешь его значение.
P.S. Я никогда не работал со строками на апи. Всегда обходился стандартными функциями, а сейчас это никак нельзя...
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Пятница, 13.01.2012, 14:29 |
|
| |
dolphin | Дата: Суббота, 14.01.2012, 12:58 | Сообщение # 4 |
Администратор
Сообщений: 906
Статус: Offline
| Чтобы просто прочитать есть функция Доступно только для пользователей
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
Волк-1024 | Дата: Суббота, 14.01.2012, 21:32 | Сообщение # 5 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Спасибо. Но я не понял, что пихать в первый параметр. (Другие знаю).
Гугл это обьясняет как: "ApplicationName: Имя заголовка пpикладной задачи в FileName." Что это?
----------------------------------------------
Понял что это. Но теперь всё время вышибает AccsesViolation...
Code GetPrivateProfileString('GENERAL', 'TEST', nil, buff, 255, '1.txt');
Есть варианты, что делаю не так?
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Суббота, 14.01.2012, 22:40 |
|
| |
dolphin | Дата: Суббота, 14.01.2012, 23:01 | Сообщение # 6 |
Администратор
Сообщений: 906
Статус: Offline
| Тут в типе данных дело, не знаю точно в каком
Code GetPrivateProfileString(PChar('SectionName'),PChar('param'),nil,buf,255,PChar('1.txt'));
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
Волк-1024 | Дата: Суббота, 14.01.2012, 23:19 | Сообщение # 7 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Та же вата. Я разные перепробовал. Только изменился адрес в ошибке. Я по гуглил и не нашел ни одного рабочего варианта этой функции... А вот, например, с записью всё в порядке. Code WritePrivateProfileString(PChar('General'), PChar('test'), PChar('OK'), PChar('C:\2.txt')); Что за фигня?!
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Суббота, 14.01.2012, 23:20 |
|
| |
Волк-1024 | Дата: Воскресенье, 15.01.2012, 00:00 | Сообщение # 8 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Да. Скорее всего, дело типе данных. Т.к после того как я экспериментировал получилось это: Code var buff: PChar; begin buff:=PAnsiChar(''); GetPrivateProfileString(PansiChar('General'),PansiChar('Param'),nil, PansiChar(buff),255, PansiChar('C:\1.txt')); И ошибка стала ссылаться на доступный для отладки адрес. До этого вообще то на 00000000 ссылалась, то еще куда-то. Так вот. При трассировке функции крашится за несколько инструкций до точки возврата. В регистр ESI записывается искаженное "правильное" значение. Т.е оно его считывает и плюс к нему дописываются в конец кракозябры всякие. И всё это дело дохнет здесь: в модуле ntdll.dll (хз почему там) на инструкции Code MOV BYTE PTR DS:[EDI],AL по адресу 77224DF2. Но если убрать Code buff:=PansiChar(''); то ошибка опять будет ссылаться на не доступный адрес.
И что теперь делать? Из-за этой ерунды моя прога стоит на месте...
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Воскресенье, 15.01.2012, 00:11 |
|
| |
dolphin | Дата: Воскресенье, 15.01.2012, 12:43 | Сообщение # 9 |
Администратор
Сообщений: 906
Статус: Offline
| Я добавил полный путь к файлу и у меня всё заработало
Доступно только для пользователей
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
Сообщение отредактировал dolphin - Воскресенье, 15.01.2012, 12:44 |
|
| |
Волк-1024 | Дата: Воскресенье, 15.01.2012, 13:47 | Сообщение # 10 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| ЁКЛМН! Реально заработала! Спасибо!
----------------------------------- (Почему-то не могу поднять репу. Пишет, что могу только через 6 дней).
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Воскресенье, 15.01.2012, 13:48 |
|
| |
dolphin | Дата: Вторник, 31.01.2012, 11:47 | Сообщение # 11 |
Администратор
Сообщений: 906
Статус: Offline
| Функции для записи и чтения параметров на api
Доступно только для пользователей
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
vvova15 | Дата: Вторник, 31.01.2012, 13:10 | Сообщение # 12 |
Участник
Зарегистрирован: 24.04.2010
Группа: Пользователи
Сообщений: 83
Статус: Offline
| Доступно только для пользователей чотко. в стиле microsoft
ICQ 185-398
Сообщение отредактировал dolphin - Вторник, 31.01.2012, 13:24 |
|
| |
|