Имя: Пароль:
1C
1C 7.7
v7: Если кодировка Юникод
0 Дева
 
22.12.06
02:22
Кто не спит ночью ;-)
Помогите, пожалуйста. Делаю выгрузку по статье, которую взяла в книге знаний. Выгрузка из XML.
Вот фрагмент:
xml_fso=СоздатьОбъект("Scripting.FileSystemObject");
xml_file=xml_fso.OpenTextFile(выбФайл,1,0,0);
ТекСтр = xml_file.ReadLine();
Так вот, вместо текста в переменную ТекСтр попадают какие-то иероглифы :-( Что с этим делать?

Пы. Сы. Поясните, плиз, значение "Scripting.FileSystemObject". Синтаксис-помошник этого не знает :-(
1 ТелепатБот
 
гуру
22.12.06
02:22
2 Дева
 
22.12.06
02:50
вот именно оттуда и взято :-)
3 ASV
 
22.12.06
04:21
object.CreateTextFile(filename[, overwrite[, unicode]])
The CreateTextFile method has these parts:


object:
Required. Always the name of a FileSystemObject or Folder object.
filename:
Required. String expression that identifies the file to create.
overwrite:
Optional. Boolean value that indicates if an existing file can be overwritten. The value is True if the file can be overwritten; False if it can't be overwritten. If omitted, existing files are not overwritten.
unicode:
Optional. Boolean value that indicates whether the file is created as a Unicode or ASCII file. The value is True if the file is created as a Unicode file; False if it's created as an ASCII file. If omitted, an ASCII file is assumed
4 ASV
 
22.12.06
04:21
ищи хелп Microsoft® Visual Basic® Scripting Edition VBSCRIP5.CHM
5 ASV
 
22.12.06
04:23
+3 не то скопировал
object.OpenTextFile(filename[, iomode[, create[, format]]])

format
Optional. One of three Tristate values used to indicate the format of the opened file. If omitted, the file is opened as ASCII.  

The format argument can have any of the following settings:

TristateUseDefault -2 Opens the file using the system default.
TristateTrue       -1 Opens the file as Unicode.
TristateFalse       0 Opens the file as ASCII.
6 Дева
 
22.12.06
05:24
ASV, спасибо большое
А UTF-8 это вообще юникод?
у меня теперь стала появляться ошибка: "неправильный код XML"
7 Дева
 
22.12.06
05:38
возникает другая проблема: на сколько я знаю Юникод не хранит перевод строк. Так ли это? Потомучто если сделать так:

xml_fso=СоздатьОбъект("Scripting.FileSystemObject");
xml_file=xml_fso.OpenTextFile(выбФайл,1,0,-1);
ТекСтр = xml_file.ReadLine();

Далее происходит ошибка, что строка превосходит допустимые
8 Дева
 
22.12.06
06:15
Сделала Read(50) вместо текста получаю вопросительные знаки :-(
9 smaharbA
 
22.12.06
06:19
Эта статья несерьезная, хотя ромикс тогда и сделал попытку, но надо отметить что не совсем бесполезную...
...
(0) Пользуйся примерно таким -

Док=СоздатьОбъект("Microsoft.XMLDOM");
Док.async = 0;
Док.load("C:\Scripts\Application\XML\doc.xml")
Первый = Док.documentElement;
Ноды= Первый.getElementsByTagName("summa");
Для к=0 По nodes.length-1 Цикл
 Сообщить(Ноды.item(к).nodeValue);
КонецЦикла;

ну или каким иным парсером
...
А если нравится как в (0) то лучче тогда пользуй ADODB.Stream вместо Scriting.FileSystemObject (кодировки/перекодировки поимееш любые)
10 Дева
 
22.12.06
06:39
а где про это ADODB.Stream  поиметь инфу?
11 Лефмихалыч
 
22.12.06
07:53
12 smaharbA
 
22.12.06
08:10
//*******************************************
Процедура Сформировать()
   Стрим = СоздатьОбъект("Adodb.Stream");
   Стрим.Type = 2;
   Стрим.Mode= 3;
   Стрим.charset="utf-16";
   Стрим.Open();
   Стрим.LoadFromFile("c:\unicode.txt");
   Стр=Стрим.ReadText();
   Предупреждение(Стр);
   Стрим.Close();
КонецПроцедуры
13 Дева
 
22.12.06
10:18
а как строки последовательно считывать?
14 smaharbA
 
22.12.06
10:19
(13) А зачем ?
15 Дева
 
22.12.06
10:24
а надо :-)
Да я уже практически всю обработку сделала, только что с юникодом не подружила. Она постоена по принципу - последовательно считывать строки и анализировать, что в них. Ну не переписывать же мне теперь обработку!
16 smaharbA
 
22.12.06
10:33

//*******************************************
Процедура Сформировать()
   Стрим = СоздатьОбъект("Adodb.Stream");
   Стрим.Type = 2;
   Стрим.Mode= 3;
   Стрим.charset="utf-16";
   Стрим.Open();
   Стрим.LoadFromFile("c:\unicode.txt");
   Стр="";
   Пока Стрим.EOS()=0 Цикл
       Стр=Стр+Стрим.ReadText(-2);
   КонецЦикла;
   Предупреждение(Стр);
   Стрим.Close();
КонецПроцедуры

(15) совершенно неверный метод (основанный на (1)), смотри внимательно (9)
17 smaharbA
 
22.12.06
10:34
+(16) при использовании (9) или подобного, вся твоя обработка может в 10-20 строк уложиться
18 Дева
 
22.12.06
10:46
блин, я не разобралась в (9), а обработку надо уже сдать
19 smaharbA
 
22.12.06
10:48
(18) ну тогда вместо FSO делай как в (16) - там построчное чтение
20 Дева
 
22.12.06
12:24
Спасибо огромное за (16)
Вот сдам эту обработку, начну разбираться с (9) обязательно 8-)
21 Дева
 
27.12.06
17:56
господа, подскажите, пожалуйста, где про (9) поиметь инфу. Типа хэлпа, где описание методов и процедур