|
|
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
Уфф, Всем доброго времени суток. Вот хочу сделать класс типа IniFile, его функциональность просвечивается, это запись/чтение п а р а м е т р о в сохраняемых/считываемых с этого самого обычного текстового файла. Класс типа Custom Пока у него есть сырой метод Write, и свойство file_name Проблемы с реализацией метода Write И так... код Write'a примерно таков (сижу не дома): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. После этих операций получается вот такой гигант файл: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Теперь проблема... Вот есть у меня уже такие данные, теперь хочу добавить в [Section1] ключ Key = 3333 Должно получиться так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. При моем коде получается вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Я выложу в скором времени и код мой, но хотел просто узнать у Вас, как мне без всяких бяк вогнать в [Section1] ключ Key = 3333 Ну плин она просто затирает нижнюю часть, как бы Вы решили это, ну не получается, хотелось бы все это провернуть функциями Fxxxxx() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 00:04 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
1010100 Я выложу в скором времени и код мой, но хотел просто узнать у Вас, как мне без всяких бяк вогнать в [Section1] ключ Key = 3333 Ну плин она просто затирает нижнюю часть, как бы Вы решили это, ну не получается, хотелось бы все это провернуть функциями Fxxxxx() Читал бы в память. В ней родимой перестраивал и записывал бы обратно. И никаких проблем. Не такие уж большие ини-файлы обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 06:38 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
Есть готовые функции в WinAPI. Вот класс для работы со стандартными ini, а также возможностью сохранения типа данных: Код: plaintext 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. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 08:50 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
Потрать время, разберись в api-функциях. DECLARE INTEGER GetPrivateProfileString IN Win32API; STRING @lpAppName, STRING @lpKeyName, STRING @lpDefault,; STRING @ReturnedString, INTEGER nSize, STRING @lpFileName А также WritePrivateProfileString и др. Вызов: LOCAL lcValue lcValue = REPLICATE (' ', 254) =GetPrivateProfileString (@gс_inisec_ИменаКомпьютеров, @gc_ini_СервисЦентр, '',; @lcValue, 1024, @gc_File_ini) lcValue = LEFT (lcValue, AT (CHR (0), lcValue) - 1) && Обязательно! Отсечение "пустоты". lcValue = UPPER (lcValue) IF NOT EMPTY (lcValue) THEN && Удалось считать из ini-файла gc_ИмяКомпьютера_ДиректорСервисЦентра = lcValue ENDIF CLEAR DLLS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 09:22 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
Уважаемые лисы, и за это большое спасибо, но я так тоже могу, просто хочется разобраться, как сделать через Fxxxxx() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 13:33 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
1010100Уважаемые лисы, и за это большое спасибо, но я так тоже могу, просто хочется разобраться, как сделать через Fxxxxx() Файл = тот же массив символов/байт (только большой и на диске). Поэтому, если хотите вставить что-то в середину файла, то необходимо позаботиться о переносе "хвоста" данных. Т.е. алгоритм вставки строки в ini-файл должен быть следующий: - найти место для вставки фрагмента в ini-файл - остаток ("хвост") файла скопировать в память/другой (временный) файл - записать фрагмент - записать "хвост" в ini-файл... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 14:04 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
1010100Уважаемые лисы, и за это большое спасибо, но я так тоже могу, просто хочется разобраться, как сделать через Fxxxxx()А зачем делать через Ж...() если есть готовые отлаженные функции? Конкретно эти идут начиная с Win95 Если ты думаешь что фоксовые файловые функции особенные, то разочарую, вот что реально вызывается: VFPWinAPIfcreate() fopen() CreateFile()fget() fread() ReadFile()fput() fwrite() WriteFile()fclose() CloseHandle() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 16:20 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
Велосипед изобретаем? F1 -> Index -> ffc -> INI Access Foundation Class HOME(1)+ "FFC\registry.vcx" -> oldinireg ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 16:56 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, успокоили... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 17:38 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
Дошел до дому =), и написал как подсказал Станислав С..кий Всем саул ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2007, 19:04 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
Дорогие форумчане, а можно обсудить мой кривой код? может как нибудь по другому сделать? переменная: xxx - "адрес" секции от текущей позиции, т.е есть вернуться на xxx байт назад (-xxx) то вернемся к секции ExistSector - секция существует в файле ExistVariable - переменная (переменная = ключ) существует в секции poz_vari - тоже что и xxx, но для переменной stroka, stroka2 - временные переменные, считывание строк... mas_x - "хвостовая" переменная Код: plaintext 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. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2007, 15:39 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
Неужели код такой мощный, что придраться не к чему? =) наверное желания нет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2007, 22:07 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
1010100Неужели код такой мощный, что придраться не к чему? =) наверное желания нет...Наверно нет... Перевелись изобретатели велосипедов ... Тебе же сказали как делать, а если ты решил сам себе создавать проблемы, то будь добр - преодолевай их самостоятельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 09:18 |
|
||
|
Пробую создать класс типа "IniFile"
|
|||
|---|---|---|---|
|
#18+
1010100Неужели код такой мощный, что придраться не к чему? =) наверное желания нет... Если уж совсем хочется написать именно СВОЙ код, то придумай красивую, оболочку над WinAPI, которые привел тебе Рома Б и Dima T . Поверь, там есть над чем поработать, а вот саму разборку INI-файл оставь операционной системе. Это, разумеется, IMHO. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2007, 09:53 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34631276&tid=1589072]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 336ms |

| 0 / 0 |
