|
|
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
задача: отключить dbf от контейнера не открывая его. вроде все понятно: найду в заголовку место где написано что подключен к контейнеру (после описания структуры полей) и впишу первый байт из них 0 и файл стал свободным, смещения можно найти или исходя из количества поле, или из смещения начало данные, но не получается получить эти цифры из заголовка dbf функции filetostr() fread() после прочтения данных преобразуют их в печатные символы и asc() уже не возвращает истинного числа записаного в определенном байте. что посоветуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 16:46 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
Покажи как это делалось. Что-то не верится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 16:51 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
>что посоветуете? Преобразовывать считаные байты в числа - ты считываешь последовательность байт, которые фокс интепритирует как символы. Хотя для сброса признака контейнера достаточно проверить чему равен байт - скорее всего Chr(1) и записать на его место новый - Chr(0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 17:51 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
В контейнере - Chr(4) Есть мемо - Chr(2) Есть cdx- Chr(1) Ну и там комбинации - Chr(5)->Chr(1),Chr(6)->Chr(2),Chr(7)->Chr(3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 17:57 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
Sergey Sizov.Покажи как это делалось. Что-то не верится. да в том то и дело что не получается. а задумано так: tables_dbf="C:\ASUP21\dbf\v0301.dbf" fff=fopen(tables_dbf, 12) if fff>0 =FSEEK(fff, 8, 0) && байты 8-9 начало данных s=fread(fff,1) fc=asc(s) s=fread(fff,1) fc=asc(s)*256+fc fc=fc-263 && с этой позиции вписано dbc =FSEEK(fff, fc, 0) =fwrite(fff,s,chr(0)) && зачистить dbc =fclose(fff) else wait window time 3 "неполучилось" endif вычисленная FC несоотвествует нужной. присвоение fc=asc(s) оказываются неверным - если считанный символ оказывается непечатным, то он превращается в пробел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 08:23 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
Burn>Преобразовывать считаные байты в числа - ты считываешь последовательность байт, которые фокс интепритирует как символы. ну я тоже так думал, но считанные быйты уже в момент считывания искажаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 08:24 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
BurnВ контейнере - Chr(4) Есть мемо - Chr(2) Есть cdx- Chr(1) Ну и там комбинации - Chr(5)->Chr(1),Chr(6)->Chr(2),Chr(7)->Chr(3) Chr(4) в позиции 28 означает что сам dbf является контейнером, а не входит в него ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 08:26 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
>ну я тоже так думал, но считанные быйты уже в момент считывания искажаются Первый раз такое слышу - в свое время еще для FPD 2.6 писал процедурку исправления заголовка и ничего с тех пор не искажалось Код: 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. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. >Chr(4) в позиции 28 означает что сам dbf является контейнером, а не входит в него Ну, значит невнимательно читал хелп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 09:13 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
убивает в заголовке привязку к контейнеру Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 09:39 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
alex11100убивает в заголовке привязку к контейнеру Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. исходит из того что в блоке описания поле не может встретится байт 13 - а это не верно - это может быть размер поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 09:51 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
ну найдите конец заголовка (начало записей по-умному) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 10:12 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
дак вот пытаюсь найти - немогу понять почему она искажает байты при чтении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 10:31 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
Ой. прошу прощения у всех участвовавших все работает так как и задумывалось - только не с тем сверял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 10:45 |
|
||
|
отключить dbf от контейнера
|
|||
|---|---|---|---|
|
#18+
исходит из того что в блоке описания поле не может встретится байт 13 - а это не верно - это может быть размер поля Действительно косяк. Синкс. Но тогда не нарывался. А сейчас это не актуально. Так храню как пример работы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2007, 11:46 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34417543&tid=1589648]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
78ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 208ms |
| total: | 408ms |

| 0 / 0 |
