powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Config.fpw
7 сообщений из 7, страница 1 из 1
Config.fpw
    #37899780
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исторический момент, у меня в проге, некоторые переменные хранятся в файле CONFIG.FPW
Учитывая что фокс не замечает неизвестные ему строки я воспользовался этим т храню там разные установки.

Как менять строки в CONFIG.FPW программно? Попадалось ли кому готовое решение?

Спасибо.
...
Рейтинг: 0 / 0
Config.fpw
    #37899796
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaestroEv,

Так же как и FoxPro через FREAD и FWRITE - и парсить
...
Рейтинг: 0 / 0
Config.fpw
    #37899808
Фотография MaestroEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверняка это кто-то уже делал. Не охота писать.
...
Рейтинг: 0 / 0
Config.fpw
    #37899810
gore-egor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaestroEv,

не пиши, оставь как есть
...
Рейтинг: 0 / 0
Config.fpw
    #37899825
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CONFIG.FPW по синтаксису как INI только нет секций.
Для работы с INI есть WinAPI-функции GetPrivateProfileString() и WritePrivateProfileString()
Код: sql
1.
2.
3.
4.
5.
6.
	DECLARE INTEGER GetPrivateProfileString IN Win32API AS GetPrivateProfileString;
		String cSection,String cKey,String cDefault,String @cBuffer,;
		Integer nBufferSize, String cINIFile

	DECLARE INTEGER WritePrivateProfileString IN Win32API AS WritePrivateProfileString;
		String cSection,String cKey,String cValue,String cINIFile


понимает только полные пути, поэтому писать FullPath('config.fpw')
...
Рейтинг: 0 / 0
Config.fpw
    #37899830
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примеры использования
Запись:
Код: sql
1.
WritePrivateProfileString([Common], 'MyParameter', '12345', FullPath('config.fpw'))


Чтение:
Код: sql
1.
2.
3.
lcVal = space(2000)
lnLen = GetPrivateProfileString([Common], 'MyParameter', '', @lcVal, 2000, FullPath('config.fpw'))
lcVal = rtrim(left(lcVal, lnLen))
...
Рейтинг: 0 / 0
Config.fpw
    #37900008
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TCONFIG.FPW по синтаксису как INI только нет секций.
Именно поэтому, если не добавить эту самую секцию, хотя бы фиктивную, API-функции ничего из него прочитать не смогут.

Другими словами, чтобы работать с Config.fpw через эти функции необходимо добавить имя секции. Т.е., если содержимое Config.fpw будет примерно таким

Код: sql
1.
2.
[Common]
CODEPAGE=1251



То работать можно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
* Чтение значения
  Declare Integer GetPrivateProfileString In Win32API  As GetPrivStr ;    
  	String cSection, ;		&& Имя раздела  
  	String cKey, ;		&& Имя реквизита  
  	String cDefault, ;		&& Значение по умолчанию, если нет указанного раздела или реквизита  
  	String @cBuffer, ;		&& Собственно считанное значение реквизита  
  	Integer nBufferSize, ;	&& Максимальное количество символов в считанном реквизите  
  	String posfile		&& имя ini-файла с полным путем доступа  




LOCAL lcBuffer, lnBuffer  
lcBuffer = SPACE(2000)  
    
lnBuffer = GetPrivStr("Common", ;  
  			"CODEPAGE", ;  
  			"Нет значения", ;  
  			@lcBuffer, ;  
  			LEN(m.lcBuffer), ;  
  			SYS(2019))  
    
IF m.lnBuffer = 0  
 	* Ничего не прочитали  
ELSE  
 	* Прочитанное значение храниться в первых m.lnBuffer символах переменной m.lcBuffer  
  	?LEFT(m.lcBuffer,m.lnBuffer)  
 	* Общая длина переменной m.lcBuffer по прежнему 2000 символов,   
 	* но символ m.lnBuffer+1 имеет ASCII-код равный 0, а все прочие - пробелы  
ENDIF


* Запись значение
  Declare Integer WritePrivateProfileString In Win32API As WritePrivStr ;    
  	String cSection, ;	&& имя раздела  
  	String cKey, ;	&& имя реквизита  
  	String cValue, ;	&& значение реквизита  
  	String posfile	&& имя ini-файла с полным путем доступа  
    
  LOCAL lnError  
  lnError = WritePrivStr("Common", ;  
  			"CODEPAGE", ;  
  			"866", ;  
  			SYS(2019))  
  IF lnError<>1  
 	* Запись в ini-файл не удалась. Произошла ошибка  
  ELSE  
 	* Смотрим, что получилось во вновь созданном файле  
  	MODIFY FILE (SYS(2019))
  ENDIF



Подробнее о работе с ini-файлами Как работать с ini-файлами
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Config.fpw
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]