помогите считать текст.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
raf
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.07.2005 (Вт) 15:45

помогите считать текст.

Сообщение raf » 05.07.2005 (Вт) 16:03

Не подскажет ли кто как мне *.xml файл считать в массив? Я открываю его как текстовый и считываю построчно в массив l (i,j),
с применением следующего кода

For i = 0 To s - 1
Open (p & f(i)) For Input As #1
For j = 1 To 999
If EOF(1) = True Then
j = 999
GoTo 10
End If
Line Input #1, l(i, j)
10 Next j
Close #1
Next i
где p - путь к файлу, f(i) - имя файла, l(i,j) - житая строка итого файла.

но в итоге русский текст превращается в кал который на рисунке.

Изображение
хотя с обычным *.txt все происходит нормально.
Можно ли это исправить :?: Если кому изветно сообщите пожалуйста

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 05.07.2005 (Вт) 16:25

Конечно, известно - кодировка файла UTF-8, я угадал? В ней на один символ может отводиться один байт, а может два - смотря какой символ. Писать собственный парсер - проще застрелиться.

Только у меня другой вопрос - а нафига его читать как текст, если существуют парсеры для работы с ним как со структурированным хранилищем данных?

Gloom
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 200
Зарегистрирован: 23.11.2004 (Вт) 15:57
Откуда: СПб

Сообщение Gloom » 05.07.2005 (Вт) 16:58

Код: Выделить всё
    Dim objStream As New ADODB.Stream
   
    With objStream
        .Type = adTypeText
        .Charset = "utf-8"
        .Open
        .LoadFromFile "data.xml"
        Do Until .EOS
            Debug.Print .ReadText(adReadLine)
        Loop
        .Close
    End With

raf
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.07.2005 (Вт) 15:45

Сообщение raf » 05.07.2005 (Вт) 20:15

Ennor писал(а):Конечно, известно - кодировка файла UTF-8, я угадал? В ней на один символ может отводиться один байт, а может два - смотря какой символ. Писать собственный парсер - проще застрелиться.

Только у меня другой вопрос - а нафига его читать как текст, если существуют парсеры для работы с ним как со структурированным хранилищем данных?


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

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 06.07.2005 (Ср) 1:18

Смотря что тебе с ними нужно сделать, с этими данными. Ты изложи постановку задачи в терминах предметной области, а пипл подумает...

raf
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.07.2005 (Вт) 15:45

Сообщение raf » 06.07.2005 (Ср) 15:54

Ennor писал(а):Смотря что тебе с ними нужно сделать, с этими данными. Ты изложи постановку задачи в терминах предметной области, а пипл подумает...


Есть файлы формата *.xml, созданые в некой проге под названием InfoPath. Содержат обычную офисную дребедень о клиентах (имя клиента, заказы, оплаты и тд.) в следующем виде

<my:расчетныйСчет>402222222235</my:расчетныйСчет>
<my:корреспондентскийСчет>222222222</my:корреспондентскийСчет>
<my:ОГРН></my:ОГРН>
<my:ИНН>222222</my:ИНН>
<my:КПП>72222222</my:КПП>
<my:БИК>222222</my:БИК>
<my:ОКПО>2222222</my:ОКПО>

ну и так далее.


Требуется сделать штуку, которая выудит из этих файлов эту дребедень и выдаст в удобном рассортированном виде, чтоб можно было производить поиск итп. Короче вроде базы данных. Беда в том, что шефы-гуманитарии не желают, чтоб база была сделана в старом добром Access, потому что по их словам "это вчерашний день"!!!
А с xml я дел не имел и с этим InfoPath сраным тоже. Вот как жить бедному сисаду с такими людьми?!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.07.2005 (Ср) 16:00

InfoPath это... Вообщем это не такая уж и гадость, если его правильно применять. И это совсем не БД.
А для работы с XML юзай майкросовтовский парсер, а не самодельный, и проблем не будет.
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 06.07.2005 (Ср) 16:20

Не хотят аксесс, говоришь? Ну, отчасти они правы, конечно... Но можно сделать так:

1. Ставишь MS SQL Server 2000 (можешь даже Юкон ака 2005, только он не вышел еще официально) и говоришь своему начальству, что это - самая крутая СУБД всех времен и народов, и что за ней будущее. Купятся, вот увидишь.
2. В составе сиквела, разумеется, идет справочная система, называется Books Online (BOL). Открываешь бол и смотришь справку по оператору OPENXML() - он позволяет подгружать XML-ресурс и использовать его в запросах как обычные данные табулярного формата. После чего быстренько разбираешься в структуре, ваяешь нужную тебе реляционную модель и грузишь весь этот мусор в базу данных. После чего - вуаля! - можешь работать с ними посредством обычных селектов, апдейтов и т.д.

Способ спорный, но работоспособный. Так многие делают. Ну а если ухитришься ко всему этому сверху еще и Analysis Services прикрутить, то тебе просто цены не будет :).

Alian
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 05.07.2005 (Вт) 0:25

Сообщение Alian » 09.07.2005 (Сб) 22:30

Лучше всего файлы (кроме чисто текстовых типа электронных книг) считывать не в "Open XXX For Input As #1", а в "Open XXX For Binary As #1": помогает часто. А насчёт кодировки - в VB6 где-то была подобная функция.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 119

    TopList  
cron