Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Config.fpw / 7 сообщений из 7, страница 1 из 1
01.08.2012, 07:26
    #37899780
MaestroEv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Config.fpw
Исторический момент, у меня в проге, некоторые переменные хранятся в файле CONFIG.FPW
Учитывая что фокс не замечает неизвестные ему строки я воспользовался этим т храню там разные установки.

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

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

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

не пиши, оставь как есть
...
Рейтинг: 0 / 0
01.08.2012, 08:25
    #37899825
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Config.fpw
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
01.08.2012, 08:31
    #37899830
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Config.fpw
Примеры использования
Запись:
Код: 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
01.08.2012, 10:41
    #37900008
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Config.fpw
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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Config.fpw / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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