Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Работа с файлом / 10 сообщений из 10, страница 1 из 1
27.11.2015, 10:24
    #39114651
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
Для работы с dbf файлами в Каше используем такой тип открытия файла - RWU .
Как сделать аналогичное открытие в gt.m?

Так же используем смещение при работе с файлом
Код: html
1.
u <устройство>:<смещение>


Поскольку с аглицким не очень... Правильно ли понял, что аналог в gt.m
Код: html
1.
u <устройство>:(SEEK=<смещение>)
...
Рейтинг: 0 / 0
27.11.2015, 10:36
    #39114661
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
krvsaтип открытия файла - RWU
Это позволяло нам читать и писать в файл... Производить позиционирование внутри него...
...
Рейтинг: 0 / 0
27.11.2015, 11:15
    #39114704
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
krvsa,
Сюда смотрели ?
http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch09s09.html
Там есть пример.
GTM>zprint ^seekdemo
...
Рейтинг: 0 / 0
27.11.2015, 13:50
    #39114891
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
ValeriuСюда смотрели ?
Ты пальцем покажи чего в итоге написать для аналогичного доступа?
...
Рейтинг: 0 / 0
27.11.2015, 14:56
    #39114965
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
В примере при таком открытии
Код: javascript
1.
open p:(fixed:recordsize=60:seek="5")


seek смещает курсор на N-ное количество recordsize... В данном случае на
Код: javascript
1.
recordsize*5


А мне нужно побайтовое смещение...

Открывать тогда так?
Код: javascript
1.
open p:(fixed:recordsize=1)



Но потом мне нужно читать данные разной длины по таком "варианту"
Код: javascript
1.
r str#<количество_байт>



В примере в файл сначала записали... Потом его закрыли.
В моем же варианте нужно и читать и писать одновременно. Вариант с таким открытием
Код: javascript
1.
open p:(fixed)


дает мне такую возможность?
...
Рейтинг: 0 / 0
27.11.2015, 15:06
    #39114976
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
krvsa,
К сожалению не используем.
Кроме на то что они дают, на то и пальцем показал ...
Код: vbnet
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.
seekdemo
  new x,p
  set p="seekfixed"
  open p:(newversion:fixed:recordsize=60)
  use p
  ; create file with 9 records of length 60 bytes each
  ; number from 0 to correspond to record offset
 
  for i=0:1:8 write $justify(i_" - [-05-|-10-|-15-|-20-|-25-|-30-|-35-|-40-|-45-|-50-|-55-|",60)
  use p:rewind
  for i=0:1:8 read x set zk=$zkey use $p write "x= ",x," $zkey= ",zk,! use p
  close p
  write !!,"** OPEN with FIXED:RECORDSIZE=60:seek=""5""",!
  open p:(fixed:recordsize=60:seek="5")
  use p
  read x set ZKEY=$zkey
  ;expect: $ZKEY= 6,0
  use $p write "x= ",x," $zkey= ",ZKEY,!
  write !,"** use with SEEK=""-3""",!
  use p:seek="-3"
  read x set ZKEY=$zkey
  ;expect: $ZKEY= 4,0
  use $p write "x= ",x," $zkey= ",ZKEY,!
  write !,"** use with SEEK=""-1"" to read from the same record. read x#20 to read a partial record",!
  use p:seek="-1"
  read x#20 set ZKEY=$zkey
  ;expect: $ZKEY= 3,20
  use $p write "x= ",x," $zkey= ",ZKEY,!
  write !,"** read x#40 to finish reading the record",!
  use p
  read x#40 set ZKEY=$zkey
  ;expect: $ZKEY= 4,0
  use $p write "x= ",x," $zkey= ",ZKEY,!
  write !,"** CLOSE NODESTROY and reOPEN with no deviceparameters",!
  close p:nodestroy
  open p
  use p
  read x set ZKEY=$zkey
  ;expect: $ZKEY= 5,0
  use $p write "x= ",x," $zkey= ",ZKEY,!
  write !,"** CLOSE NODESTROY and reOPEN with SEEK=""+2""",!
  close p:nodestroy
  open p:seek="+2"
  use p
  read x set ZKEY=$zkey
  ;expect: $ZKEY= 8,0
  use $p write "x= ",x," $zkey= ",ZKEY,!
  write !,"** CLOSE NODESTROY and reOPEN with M:SEEK=""+3""",!
  close p:nodestroy
  open p:(M:seek="+3")
  use p
  read x set ZKEY=$zkey
  ;expect: $ZKEY= 4,0
  use $p write "x= ",x," $zkey= ",ZKEY,!
  write !,"** CLOSE NODESTROY and reOPEN with APPEND:SEEK=""-1""",!
  close p:nodestroy
  open p:(append:seek="-1")
  use p
  read x set ZKEY=$zkey
  ;expect: $ZKEY= 9,0
  use $p write "x= ",x," $zkey= ",ZKEY,!
  close p
  write !,"** CLOSE DESTROY and OPEN non-fixed with SEEK=""120"" and read 60 bytes",!
  open p:seek="120"
  use p
  read x#60 set ZKEY=$zkey
  ;expect: $ZKEY= 180
  use $p write "x= ",x," $zkey= ",ZKEY,!
  write !,"** CLOSE NODESTROY and reOPEN with append:SEEK=""-60"" and read last 60 bytes",!
  close p:nodestroy
  open p:(append:seek="-60")
  use p
  read x#60 set ZKEY=$zkey
  ;expect: $ZKEY= 540
  use $p write "x= ",x," $zkey= ",ZKEY,!
  close p
  quit

...
Рейтинг: 0 / 0
27.11.2015, 15:14
    #39114982
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
ValeriuК сожалению не используем.
Т.е. как открыть файл для чтения и записи одновременно пока - х/з?
И как смещаться "побайтово" так же - х/з?
...
Рейтинг: 0 / 0
27.11.2015, 15:15
    #39114984
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
Valeriu , может в gt.m есть какие-то приблуды для работы с dbf-файлами?
...
Рейтинг: 0 / 0
27.11.2015, 22:17
    #39115266
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
krvsa,
Не знаются ... dbf.
...
Рейтинг: 0 / 0
01.12.2015, 16:56
    #39117581
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Работа с файлом
В итоге замастырили такой вариант...tmp ;;;;[ 01.12.2015 16:55 ]
READ
  d CREATE
  s dev=$$fOpen("/srv/box/test.txt","M")
     u dev
  r ttl#4
  u $p
  zwr ttl
  u dev
  w "XY"
  w "Z"
  d closeDbf(dev)
  q
CREATE
  s dev=$$fOpen^zsys("/srv/box/test.txt","W")
     u dev
     w "123456789"
  c dev
  q
fOpen(File,Typ,Byte,Sym)
  s:$g(Typ)="" Typ="W"
  q:":\/"[$e(File,$l(File)) ""
  i Typ="W" o File:(newversion:noreadonly):0 q $s($t:File,1:"")
  i Typ="M" o File::0 q $s($t:File,1:"")
  o File:(readonly):0
  q $s($t:File,1:"")
closeDbf(Dev)
  d use(Dev,0)
  c Dev
  q
use(Dev,Byte)
  s:$g(Dev)="" Dev=$p
  i $g(Byte)="" u Dev q
  u Dev:(seek=Byte)
  q
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Работа с файлом / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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