Вторник, 21.11.2017, 11:14 Приветствую вас Гость | Группа "Гости" 


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Волк-1024 
delfcode » Delphi » Windows API в Delphi » Работа с ini файлами (На WinApi)
Работа с ini файлами
Волк-1024Дата: Четверг, 12.01.2012, 19:17 | Сообщение # 1
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: Offline
Здравствуйте. Очень нужен модуль для работы с ini файлами ТОЛЬКО на API. Т.к стандартный модуль IniFiles не устраивает из-за VCL ных функций и своего размера. Он сам-то не маленький плюс еще к себе присоединяет модуль classes, который вообще монстр. Сейчас пытаюсь перепилить некоторые VCL ные функции на апи, но это адово сложно, ибо одна функа приплетает еще кучу, а те еще и еще....

P.S. Гуглил долго и упорно, но кроме фигни ничего не нашел... (((
P.S.S. За помощь обделю большими плюсами.


Pascal, C\C++, Assembler, Python
 
dolphinДата: Пятница, 13.01.2012, 00:21 | Сообщение # 2
Администратор
Сообщений: 902
Статус: Offline
Не знаю модуля на апи, но можно свой попробовать написать, думаю это не так сложно будет. Какие именно функции нужны?

Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
Волк-1024Дата: Пятница, 13.01.2012, 14:19 | Сообщение # 3
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: Offline
Хотя бы самую необходимую. Функцию для чтение параметра из файла. Т.е указываешь секцию, откуда читать и сам параметр. И получаешь его значение.

P.S. Я никогда не работал со строками на апи. Всегда обходился стандартными функциями, а сейчас это никак нельзя... cry


Pascal, C\C++, Assembler, Python

Сообщение отредактировал Волк-1024 - Пятница, 13.01.2012, 14:29
 
dolphinДата: Суббота, 14.01.2012, 12:58 | Сообщение # 4
Администратор
Сообщений: 902
Статус: Offline
Чтобы просто прочитать есть функция Доступно только для пользователей

Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
Волк-1024Дата: Суббота, 14.01.2012, 21:32 | Сообщение # 5
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: 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
Администратор
Сообщений: 902
Статус: Offline
Тут в типе данных дело, не знаю точно в каком

Code
GetPrivateProfileString(PChar('SectionName'),PChar('param'),nil,buf,255,PChar('1.txt'));


Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
Волк-1024Дата: Суббота, 14.01.2012, 23:19 | Сообщение # 7
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: 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
Группа: Модераторы
Сообщений: 467
Статус: 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
Администратор
Сообщений: 902
Статус: Offline
Я добавил полный путь к файлу и у меня всё заработало

Доступно только для пользователей
Прикрепления: ini.rar(1Kb)


Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик


Сообщение отредактировал dolphin - Воскресенье, 15.01.2012, 12:44
 
Волк-1024Дата: Воскресенье, 15.01.2012, 13:47 | Сообщение # 10
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 467
Статус: Offline
ЁКЛМН! Реально заработала! Спасибо!

-----------------------------------
(Почему-то не могу поднять репу. Пишет, что могу только через 6 дней).


Pascal, C\C++, Assembler, Python

Сообщение отредактировал Волк-1024 - Воскресенье, 15.01.2012, 13:48
 
dolphinДата: Вторник, 31.01.2012, 11:47 | Сообщение # 11
Администратор
Сообщений: 902
Статус: Offline
Функции для записи и чтения параметров на api

Доступно только для пользователей


Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
vvova15Дата: Вторник, 31.01.2012, 13:10 | Сообщение # 12
Участник
Зарегистрирован: 24.04.2010
Группа: Пользователи
Сообщений: 83
Статус: Offline
Доступно только для пользователей
чотко. в стиле microsoft biggrin



ICQ 185-398


Сообщение отредактировал dolphin - Вторник, 31.01.2012, 13:24
 
delfcode » Delphi » Windows API в Delphi » Работа с ini файлами (На WinApi)
Страница 1 из 11
Поиск:

delfcode.ru © 2008 - 2017 Хостинг от uCoz