Страница 1 из 1
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 10:17
dsabitov
Добрый день.
Прошу не судить строго за мой вопрос.
Что если я читаю записи из файла:
Код: Выделить всё
SET(db)
LOOP UNTIL EOF(db)
NEXT(db); IF ERRORCODE()<>0 THEN BREAK.
END
Вот.. читаю себе и читаю.. Но, для каждой прочитанной записи из db мне нужно достать связанную запись из этого же файла, и в зависимости от полученного значения обновить какой-нибудь атрибут в прочитанной в цикле записи.
Реализуемо ли это без сохранения POINTER(db)?
Может быть с помощью классов?
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 10:28
kreator
Самое простое сделать Alias, и всё. Кстати, какая база?
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 10:29
dsabitov
База TopSpeed
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 11:09
Игорь Столяров
Попробуй вот так:
Код: Выделить всё
Loc:SaveState ushort
Code
Set(MyFile)
Loop until Access:MyFile.Next()
Loc:SaveState = Access:MyFile.SaveFile()
Clear(MyFile.Record)
MyFile.ID = ... ! Считываем произвольную запись в файле
If ~Access:MyFile.Fetch(MyFile.ByID)
... ! Получаем данные, вносим изменения
If Access:MyFile.UpDate() then Break. ! Если были изменения сохраняем
end
Access:MyFile.RestoreFile(Loc:SaveState)
! и дальше обрабатываем данные в обычном порядке Loop until Access:MyFile.Next()
end
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 11:35
dsabitov
Игорь, спасибо большое!
Еще вопросик. Как объявить точно такой же файл, но с другим именем?
Допустим для QUEUE:
Код: Выделить всё
Q1 QUEUE
F1 STRING(20)
END
! Q2 точно такая же очередь, что и Q1
Q2 QUEUE(Q1)
END
Можно ли что-то подобное сделать со структурой FILE?
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 11:38
RaFaeL
Файл отдельно объявляется с полным отдельным описанием, а путь тот же
Это если руками. А в словаре alias и он сам сгенерит описание по образцу
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 11:41
Игорь Столяров
RaFaeL писал(а): А в словаре alias и он сам сгенерит описание по образцу
Полностью согласен. И тогда можно не заморачиваться с восстановлением позиции при обработке в цикле.
Алиасы просто жрут память на буфер .... и в принципе иногда можно обходится без них, как я показал в примере.
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 11:42
dsabitov
Ясно... а атрибут TYPE для структуры FILE можно использовать только в Clarion#... Жаль..
(Clarion 10)
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 11:45
Yufil
У меня SaveFile просто грохалась, проверять надо..
Код: Выделить всё
SavePos String(1024)
Loop
....
! Сохраняем позицию по ключу
SavePos = Position(Key)
....
!Делаем что хотим
...
! Восстанавливаем позицию и ползём дальше
Reset(key,SavePos)
Next(File)
End
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 11:49
Игорь Столяров
Yufil писал(а): У меня SaveFile просто грохалась, проверять надо..
Пример взят из боевой программы (драйвер TopSpeed, Btrieve). Работает как часы ... C63 - C10
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 11:59
dsabitov
Так... у меня возникла маленькая путаница... В чем отличие POINTER(Key) от POSITION(key)?
Прошу прощения... внимательно прочитал HELP. POSITION подходит к любому драйверу, POINTER не к любому...
Вопрос по работе с файлом
Добавлено: 22 Март 2016, 20:23
Yufil
Игорь Столяров писал(а): Yufil писал(а): У меня SaveFile просто грохалась, проверять надо..
Пример взят из боевой программы (драйвер TopSpeed, Btrieve). Работает как часы ... C63 - C10
Там есть проблема в MS SQL на строке RESTORESTATE(....) , если в таблице есть Блобы.
А в Topspeed работает- сам кучу раз пользовал.