Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Модератор
 Аватар для Curry
5158 / 3484 / 536
Регистрация: 01.06.2013
Сообщений: 7,557
Записей в блоге: 9

HXT выдаёт ошибку если указать полный путь к файлу

14.06.2014, 13:16. Показов 1967. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задумал я приделать к своей проге xml-конфиг.

Кликните здесь для просмотра всего текста
Haskell
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
module HXT_XML_Test(ProgCfg(..),loadProgCfg,cfgFilePath) where
 
import Text.XML.HXT.Core
import Control.Applicative
import System.Directory
 
data ProgCfg = ProgCfg { httpPort :: Int, srcHost ::String, srcPort ::Int}
     deriving (Eq, Ord, Read, Show)
 
defaultProgCfg :: ProgCfg
defaultProgCfg = ProgCfg { httpPort=80,  srcHost="127.0.0.1", srcPort=5021}
 
cfgFileName :: String
cfgFileName = "config.xml"
 
cfgFilePath :: IO String 
cfgFilePath = flip (++) ('\\' : cfgFileName) <$> getCurrentDirectory 
 
instance XmlPickler ProgCfg where
    xpickle = xpProgCfg
 
xpProgCfg        :: PU ProgCfg
xpProgCfg
    = xpElem "ProgCfg" $
      xpWrap ( \ ((a0,a1,a2)) -> ProgCfg a0 a1 a2
             , \ t -> (httpPort t, srcHost t
                      , srcPort t
                      )
             ) $
      xpTriple (xpAttr           "HTTP_port"    xpInt  )
               (xpAttr           "Host"   xpText )
               (xpAttr           "Port"   xpInt  )
 
 
loadProgCfg :: IO ProgCfg
loadProgCfg = do
    fname <- cfgFilePath
    b <- doesFileExist fname
    if b then  do
        [p2] <- runX ( xunpickleDocument xpProgCfg
                               [ withValidate no
                               , withRemoveWS yes
                               ] 
                               cfgFileName -- если заменить на fname, то fatal error: unsupported protocol in URI
                     ) 
        return p2
    else do
        let cfg = defaultProgCfg
        saveProgCfg cfg
        return cfg
    
saveProgCfg :: ProgCfg -> IO ()
saveProgCfg cfg = do 
    fname <- cfgFilePath
    runX (  constA cfg
            >>>
            xpickleDocument xpProgCfg
               [ withIndent yes        
               ] fname
         )
    return ()


После запуска программы вызывается loadProgCfg. Если файла конфигурации ещё нет, то он создаётся по дефолту, если есть - должен прочитаться.

Выяснилось, что файл с полным путём нормально сохраняется, но при попытке чтения xunpickleDocument выдаёт fatal error: unsupported protocol in URI. Если указать просто имя файла (без пути), то нормально загрузится.

Может, кто имел дело с пакетом HXT? Подскажите в чём дело.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.06.2014, 13:16
Ответы с готовыми решениями:

Поисковик файлов. Если путь к файлу содержит больше 248 символов, то программа выдает ошибку
В общем проблема такая, пишу в VS2010, здесь нашел код одного поисковика, немного изменил : //using System.Collections.Generic; //using...

Как указать полный путь к файлу в директории приложения из библиотеки классов
Следующая ситуация есть dll библиотека в ней хранится метод загрузки данных из файла и файл xml лежат они в одной папке, проблема в...

Не работает Bulk, если не указан полный путь к udl файлу
string connectionString = &quot;File Name = conn.udl&quot;; //--------------------------------------------------------------------------- string...

3
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
15.06.2014, 07:50
Лучший ответ Сообщение было отмечено KolodeznyDiver как решение

Решение

Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Выяснилось, что файл с полным путём нормально сохраняется, но при попытке чтения xunpickleDocument выдаёт fatal error: unsupported protocol in URI.
Просто догадка: а если указать полный путь /some/absolute/pathname как file:///some/absolute/pathname или file://localhost/some/absolute/pathname?
2
Модератор
 Аватар для Curry
5158 / 3484 / 536
Регистрация: 01.06.2013
Сообщений: 7,557
Записей в блоге: 9
15.06.2014, 08:49  [ТС]
Гениально! Работают оба варианта!
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
15.06.2014, 08:51
Ну они как бы эквивалентны с точки зрения file URI scheme.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.06.2014, 08:51
Помогаю со студенческими работами здесь

Из Access открыть файл Word, развернув окно на полный экран. Путь к файлу указать относительно файла Access
Здравствуйте, подскажите как сделать, или в каком направлении гуглить. Мне нужно запусть макрос в access, который открывает файл word. На...

Как указать путь к проигрываемому файлу, если он находится в директории приложения
Здравствуйте, меня интересует такой вопрос: при использовании mciExecute нужно обязательно вводить полный адрес к файлу или можно его...

Если файл лежит в директории приложения, то указать его имя, в противном случае - полный путь
Добрый день! Подскажите пожалуйста, возможно ли такая схема. В файле настроек указать требуемый программой файл: если он лежит в той...

Куда происходит запись файла, если не указать полный путь до него, а только одно его имя?
Доброго всем здравия, душевного и телесного, подскажите пожалуйста где находится этот самый файл куда мы что записываем, а затем считываем?...

Как указать путь к файлу из внешней сети, если перед компьютером стоит роутер?
В нашем городе есть провайдер, он работает что то вроде большой сетки с выходом в интернет. Я могу в проводнике забить IP через 2 слэша...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru