Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> массив 
:(
    Опции темы
cthutq
Дата 17.4.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 16.4.2006

Репутация: нет
Всего: нет



есть СОМ объект написанный на С++
у него есть метод
func(ULONG* size, BYTE* buffer);

под .NET этот метод стал иметь вид
void func (ref uint, ref byte);

я создал массив
byte[] buffer = new byte[100];
и передаю его
uint size = buffer.Length;
func(ref size, ref buffer[0]);

но изменяется только первый байт а остольное пишется непонятно куда
есть подозрение что buffer[0] возвращает копию и в функцию я передаю ссылку на локально созданный только один байт

как правильно ?  
PM MAIL   Вверх
-ser-
Дата 18.4.2006, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



а зачем ты указываешь func(ref size, ref buffer[0]); ?

почему не       func(ref size, ref buffer);

 


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
cthutq
Дата 18.4.2006, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 16.4.2006

Репутация: нет
Всего: нет



Цитата(-ser- @  18.4.2006,  06:02 Найти цитируемый пост)
а зачем ты указываешь func(ref size, ref buffer[0]); ?

почему не       func(ref size, ref buffer);

потому, что .NET его поняла как

void func (ref uint, ref byte);

тоесть ссылка на байт а не массив байт 
PM MAIL   Вверх
ivashkanet
Дата 18.4.2006, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Имя массива и есть ссылка на массив  smile 
А не первый элемент как в С 
PM MAIL WWW ICQ   Вверх
cthutq
Дата 18.4.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 16.4.2006

Репутация: нет
Всего: нет



Цитата(ivashkanet @  18.4.2006,  11:21 Найти цитируемый пост)
Имя массива и есть ссылка на массив   
А не первый элемент как в С  

так проблемма в том, что
func(ULONG* size, BYTE* buffer);

был воспринят как 
void func (ref uint, ref byte);

а не как
void func (ref uint, ref byte[]);

или 
void func (ref uint, byte[]);


в этом и косяк 
PM MAIL   Вверх
ivashkanet
Дата 19.4.2006, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



А кто его знает, я в С не силен (так мелкие програмки).
А нельзя COM переписать, чтоб он явно использовал массив, а не ссылку на первый элемент. 

Это сообщение отредактировал(а) ivashkanet - 19.4.2006, 08:15
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.