Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) String to Array Of Char (число прочтений - 3998 )
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
String to Array Of Char
20. Апреля 2012 :: 02:13
Печать  
Как можно сделать значение типа string (1c)
в тип Array Of Char
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: String to Array Of Char
Ответ #1 - 23. Апреля 2012 :: 04:55
Печать  
Rinchin писал(а) 20. Апреля 2012 :: 02:13:
Как можно сделать значение типа string (1c)
в тип Array Of Char

для передачи в COM-сервер ?
1c 7.7 или 8.x ?
  

1&&2&&3
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: String to Array Of Char
Ответ #2 - 02. Мая 2012 :: 10:53
Печать  
1c 7.7
для передачи в com
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: String to Array Of Char
Ответ #3 - 02. Мая 2012 :: 11:21
Печать  
попробуй это
http://infostart.ru/public/20041/
  

1&&2&&3
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: String to Array Of Char
Ответ #4 - 02. Мая 2012 :: 12:22
Печать  
Изночально идея с http://habrahabr.ru/post/134217/
на инфостарте есть она же
с использованием Elisy.NetBridge4

но я хотел попробовать на 7-ке и с использованием v7CLR

ip = "*";
port = "8082";
                               
OLEExSup = СоздатьОбъект("OLEExSup");      
Net = СоздатьОбъект("CLRFactory");
     

EncodingUTF8  = СоздатьОбъект("!System.Text.UTF8Encoding");      
HttpListener = СоздатьОбъект("!System.Net.HttpListener, System, version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");      
HttpListener.Prefixes.Add("http://"+ip+":"+port+"/");
HttpListener.Start();
     
Сообщить("--------------------------------------------------");            
Сообщить("<<< start web-сервис >>>");
Сообщить("<<< ip: "+ip+" >>>");            
Сообщить("<<< port: "+port+" >>>");      
Сообщить("--------------------------------------------------");      
     Сообщить("Прослушивание...begin");      

     
     responseString = "<html>"+
                              "      <head><title>Ответ от HttpListener</title>"+
                              "              <meta http-equiv=""content-type"" content=""text/html; charset=utf-8""/>"+
                              "      </head>"+
                              "      <body>"+
                              "            тест "+
                              "      </body>"+
                              "</html>";
                             
ВсегоЗн = СтрДлина(responseString);
Массив = СоздатьОбъект("OleSafeArray");
Массив.Создать(Массив.ТипыЗначений.VT_VARIANT,ВсегоЗн,1);      

Для i = 1 По ВсегоЗн Цикл              
        зн = СимволПоИндексу(i,responseString);
        Массив.УстановитьЗначение(i-1,0,зн);
КонецЦикла;

// СимволПоИнд - возвращает сивол из строки по индексу

конт = HttpListener.GetContext();
request = конт.Request;

response = конт.Response;

//*buffer = Encoding.GetBytes(responseString);                              
     
buffer = EncodingUTF8.GetBytes(Массив);                                    
// Получить поток ответа и записать ответ в него.
response.ContentLength64 = buffer.Length;
output = response.OutputStream;
output.Write(buffer,0,buffer.Length);
//      // Необходимо закрыть выходной поток и остановить прослушивание
output.Close();
  
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: String to Array Of Char
Ответ #5 - 02. Мая 2012 :: 12:27
Печать  
Затыкается на

buffer = EncodingUTF8.GetBytes(Массив);

D:\BASE\EXTFORMS\WEB.ERT(110)}: System.ArgumentNullException: Array cannot be null.
Parameter name: chars
  at System.Text.Encoding.GetBytes(Char[] chars)
  at (Object& , Object )
  at CCLRWrapper.CallAsFunc(CCLRWrapper* , Int32 , CValue* , CValue** )

Массив - заполнен!
  
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: String to Array Of Char
Ответ #6 - 02. Мая 2012 :: 13:04
Печать  
Вообщем проблема с System.Text.Encoding.GetBytes(Char[] chars)
как передать туда строку конвертированную в chars

и еще видимо будет проблема как прочитать chars в строку
request = конт.Request
request - из bytes - > chars - > string (вернее тип "строка" 1C)
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: String to Array Of Char
Ответ #7 - 03. Мая 2012 :: 08:47
Печать  
массив нужно передавать не напрямую, а через прокси метод oleexsup:

buffer = OLEExSup.InvokeOLEMethod(EncodingUTF8, "GetBytes", Массив);
  

1&&2&&3
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: String to Array Of Char
Ответ #8 - 03. Мая 2012 :: 08:55
Печать  
Пробовал
Выходит ошибка:

buffer = OLEExSup.InvokeOLEMethod(EncodingUTF8, "GetBytes", Maccив);      
{D:\BASE\EXTFORMS\WEB.ERT(112)}:  Недопустимый объект
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: String to Array Of Char
Ответ #9 - 03. Мая 2012 :: 09:13
Печать  
я тебя разочарую:
СоздатьОбъект("!System.Text.UTF8Encoding");      
СоздатьОбъект("!System.Net.HttpListener, System, version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
- это не com, и моя помогалка тут ничем не поможет
  

1&&2&&3
Наверх
 
IP записан
 
Rinchin
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 08. Декабря 2009
Re: String to Array Of Char
Ответ #10 - 03. Мая 2012 :: 09:47
Печать  
Ясно....  спасибо
Будем думать....
Искать варианты
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать