Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / чтение из файла 10-го (наверное и 13-го) символа / 7 сообщений из 7, страница 1 из 1
07.08.2007, 13:11
    #34710535
ГР
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чтение из файла 10-го (наверное и 13-го) символа
Читаю заголовок дбф файлика, смотрю на длину поля 10 (эт я знаю точно), но $a(...) возвращает -1.

Подозреваю что собака зарыта в параметре file.Open(...). Признавайтесь, кто наступал на эти грабли :)...

На всякий случай кусочек кода:
s f=##class(%File).%New("d:\Vdd.DBF")
d f.Open("RS")
d f.Read(4) // Первые четыре байта не использую
s fRowCount=f.Read(4) // кол-во строк
s fHeaderLength=f.Read(2) // Длина заголовка
//w !,$a($e(fHeaderLength,1,1))_" "_$a($e(fHeaderLength,2,2))
//w !,($a($e(fHeaderLength,1,1))+($a($e(fHeaderLength,2,2))*256)-1)/32
s fRowLength=f.Read(2) // Длина строки
d f.Read(20) // Пропускаю 20 байт

// Читаю описание заголовков по 32 байта
f i=1:1:($a($e(fHeaderLength,1,1))+($a($e(fHeaderLength,2,2))*256)-1)/32-1 {
s hName=$tr(f.Read(11),$c(0)) // Имя
s hType=f.Read(1) // Тип
d f.Read(4) // Пропускаю
s hLength=$a(f.Read(1)) // Длина поля в байтах
s hDec=$a(f.Read(1)) // Десятичных знаков
s ^a(i,"h","name")=hName
s ^a(i,"h","type")=hType
s ^a(i,"h","length")=hLength
s ^a(i,"h","dec")=hDec

d f.Read(14) // Остальные байты заголовка
}

d f.Close()
k
q
...
Рейтинг: 0 / 0
07.08.2007, 14:16
    #34710826
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чтение из файла 10-го (наверное и 13-го) символа
ГРПодозреваю что собака зарыта в параметре file.Open(...). Признавайтесь, кто наступал на эти грабли :)...


d f.Open("RU")
...
Рейтинг: 0 / 0
07.08.2007, 14:52
    #34711010
ГР
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чтение из файла 10-го (наверное и 13-го) символа
Непроконало.
Работает вариант с d f.Open("RF:1"), но приходится читать последовательность из 10 байт в цикле, что не есть выход...
...
Рейтинг: 0 / 0
07.08.2007, 16:20
    #34711367
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чтение из файла 10-го (наверное и 13-го) символа
ГР , какую вообще задачу решаеш?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
08.08.2007, 00:40
    #34712546
ГР
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чтение из файла 10-го (наверное и 13-го) символа
В данном случае хочу прочесть дбф-файл, записать его описания столбцов и, далее, прочесть/сохранить данные в глобалах. Дело в том что я ранее наступал на эти грабли, и Shu подсказал решение, которое я привел выше. Можно, конечно, использовать Open|Use
Close, но хоццо пользовать %File разс оно есть:).
...
Рейтинг: 0 / 0
08.08.2007, 08:16
    #34712683
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чтение из файла 10-го (наверное и 13-го) символа
Вот тебе программка. Она может как читать из dbf (но не учитывает удаленые записи), так и создавать...
Правда она в DOS кодировке... :)
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
08.08.2007, 08:23
    #34712688
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
чтение из файла 10-го (наверное и 13-го) символа
Там есть еще процедурки и функции из вне... Вот они
Код: 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.
USE(Dev,Byte)
 S Dev=$G(Dev,$P)
 S Byte=$G(Byte)
 I Byte'="" U Dev:Byte Q
 U Dev
 Q

FUse(File,Byte)
 S Byte=$G(Byte)
 I Byte="" U File Q File
 I Byte'="" U File:Byte Q File
 Q File

FOpen(File,Typ,Byte,Sym)
 S Typ=$G(Typ,"WNS")
 S:Typ="W" Typ="WNS"
 S:Typ="R" Typ="RS"
 S Sym=$G(Sym)
 I $ZU( 68 , 40 , 1 )
 q:":\/"[$e(File,$l(File)) ""
 I Sym'="" O File:(Typ::Sym): 0  Q:$T File Q ""
 O File:(Typ::""): 0 
 Q:$T File
 Q ""

----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / чтение из файла 10-го (наверное и 13-го) символа / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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