Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako kopirati C# byte[] u C++ niz unsigned char pri cemu se koristi managed/unmanaged mode

[es] :: .NET :: .NET Desktop razvoj :: Kako kopirati C# byte[] u C++ niz unsigned char pri cemu se koristi managed/unmanaged mode

[ Pregleda: 2976 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nix_r
Sarajevo

Član broj: 77017
Poruke: 18
*.bstelecom.ba.

ICQ: 235


Profil

icon Kako kopirati C# byte[] u C++ niz unsigned char pri cemu se koristi managed/unmanaged mode25.04.2006. u 13:47 - pre 219 meseci
Imam veliki problem i hitnoooooo mi treba pomoc. Naime iz C# metode se poziva metoda u C++ kojoj se kao argument dodjeljuje CoreObject co (to je objekat-poruka za SMSC sa odgovarajucim svojstvima, a jedan od njih je text poruke co.UD kao byte[] u ASCII formatu).

Metoda u C++ koristi managed i unmanaged tipove i dio je klase public _gc class BulkInsert

Imam dati dio koda u C++:

BOOL BST_Core::BulkInsert::BindData(CoreObject *co)
{
BYTE* UD = new BYTE[164]; //...unsigned char array
UD = co->UD; //...co->UD je niz bajta iz C#



if (bcp_bind(dbproc, (BYTE*)UD, 0, -1, (BYTE*)"", 1, 0, 17) == FAIL)
{
return FALSE;
}


Moram paziti na ovaj format (BYTE*)UD, jer samo tako ga mogu proslijediti fiji bcp_bind, koja salje red odgovarajucoj koloni u SQL Server-u 2000, cija je kolona tipa BINARY u koju se upisuje text SMS poruke.
Prakticki ja trebam kopirati sadrzaj byte[] array-a co.UD iz C++ u ovaj niz BYTE *UD = new BYTE[164], vodeci racuna da se mixa manaded i unmanaged code.

Kada izbildam projekat, dobijem sljedecu poruku
e:\SMSC_version\FIN-2006-04-20-SMC_2_Uskladjena\BulkInsert\BulkInsert.cpp(320): error C2440: '=' : cannot convert from 'unsigned char __gc[]' to 'BYTE *'
Can only convert a __gc array to or from Object * or Array *
 
Odgovor na temu

logic_rabbit
Radenko Zec
banjaluka

Član broj: 74458
Poruke: 271
*.lanaco.com.



+1 Profil

icon Re: Kako kopirati C# byte[] u C++ niz unsigned char pri cemu se koristi managed/unmanaged mode25.04.2006. u 13:51 - pre 219 meseci
Ocito imas problema u konverziji tipova podataka:-)
logic_rabbit (MCAD,MCSD,MCT,MCTS-
Windows development,MCPD)
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.lionbridge.com.



+6 Profil

icon Re: Kako kopirati C# byte[] u C++ niz unsigned char pri cemu se koristi managed/unmanaged mode25.04.2006. u 14:06 - pre 219 meseci
Umesto da radiš ovo:

Citat:
nix_r:
UD = co->UD; //...co->UD je niz bajta iz C#


Jednostavno iskopiraj bajt po bajt iz co->UD u UD.

Takođe, obrati pažnju da li zoveš delete[] UD u svakom mogućem slučaju da ne bi imao memory leak. Recimo, ovo mi je jako sumnjivo:

if (bcp_bind(dbproc, (BYTE*)UD, 0, -1, (BYTE*)"", 1, 0, 17) == FAIL)
{
return FALSE;
}
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.lionbridge.com.



+6 Profil

icon Re: Kako kopirati C# byte[] u C++ niz unsigned char pri cemu se koristi managed/unmanaged mode25.04.2006. u 14:08 - pre 219 meseci
Kad bolje razmislim, zašto uopšte pišeš

Code:
 BYTE* UD = new BYTE[164]; //...unsigned char array


Bezbednije i lakše je:

Code:
 BYTE UD[164]; //...unsigned char array


 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Kako kopirati C# byte[] u C++ niz unsigned char pri cemu se koristi managed/unmanaged mode

[ Pregleda: 2976 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.