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

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

14.06.2014, 13:16. Показов 1955. Ответов 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 / 3479 / 536
Регистрация: 01.06.2013
Сообщений: 7,541
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru