Forum » Programiranje » c# problem z lokalno spremenljivko
c# problem z lokalno spremenljivko
KernelPanic ::
Spostovani!
Programiram eno stvar in sem naletel na sledec problem. Znotraj funkcije sem deklariral spremenljivko in ko jo hocem uporabiti, te spremelnljivke ne najde. Kako naj to resim? Sledi koda:
S spostovanjem in vnaprej hvala za pomoc,
M.
Programiram eno stvar in sem naletel na sledec problem. Znotraj funkcije sem deklariral spremenljivko in ko jo hocem uporabiti, te spremelnljivke ne najde. Kako naj to resim? Sledi koda:
DateTime readDeviceClock() { short[] bufferDeviceClock=new short[7]; if(this.m_pMB_Protocol.readInputRegisters(1, 2497, bufferDeviceClock, sizeof(bufferDeviceClock) / sizeof(short)) == FieldTalk.BusProtocolErrors.FTALK_SUCCESS) { return new DateTime(bufferDeviceClock[6], bufferDeviceClock[5], bufferDeviceClock[4], bufferDeviceClock[3], bufferDeviceClock[2], bufferDeviceClock[1]); } return new DateTime(); } // readDeviceClockin napaka, ki jo javi c# compiler:
Error 1 The type or namespace name 'bufferDeviceClock' could not be found (are you missing a using directive or an assembly reference?) D:\Projects\AccuLoadIIISolution\AccuLoadIIICommDll\AccuLoadIIICommDll\Core.cs 40 28 AccuLoadIIICommDllUporabljam Visual Studio 2010 Ultimate na Windows XP Pro z .Net Framework 4.
S spostovanjem in vnaprej hvala za pomoc,
M.
- spremenil: Mavrik ()
Spura ::
sizeof operira s tipi, ne spremenljivkami
ce se ne motim je takole: sizeof(short) * bufferDeviceClock.length
edit: vidim da potem itak delis s sizeof(short) zakaj potem sploh delas te kolobocije s sizeof, ko pa te ubistvu zanima samo dolzina arraya?
ce se ne motim je takole: sizeof(short) * bufferDeviceClock.length
edit: vidim da potem itak delis s sizeof(short) zakaj potem sploh delas te kolobocije s sizeof, ko pa te ubistvu zanima samo dolzina arraya?
Zgodovina sprememb…
- spremenil: Spura ()
KernelPanic ::
Hmm, v dokumentaciji dll knjiznice, ki jo uporabljam, je primer naveden z sizeof in iskreno, tudi meni ni jasno, zakaj so tako zakomplicirali. Sicer sem C++ guru in ta sizeof v C++ varianti programa, ki ga sedaj portam v C#, deluje brezhibno.
Senitel ::
int a = 10; std::cout << sizeof(a) << std::endl;
Je čisto veljavna sintaksa.
Tole: sizeof(bufferDeviceClock) / sizeof(short) načeloma pove koliko je bajtov v bufferDeviceClock. Ampak če te zanima samo dolžina v elementih, potem je bufferDeviceClock.length to kar iščeš.
KernelPanic ::
Glih to je sranje, ker je dokumentacija porazna moram sprobat oboje. Bom pa vsekakor javil, na kateri nacin stvar dela.
Spura ::
int a = 10; std::cout << sizeof(a) << std::endl;
Je �isto veljavna sintaksa.
Tole: sizeof(bufferDeviceClock) / sizeof(short) na�eloma pove koliko je bajtov v bufferDeviceClock. Ampak �e te zanima samo dolŞina v elementih, potem je bufferDeviceClock.length to kar iť�eť.
Sori, ampak ne zastopim kako tisto deljenje pove velikost v bajtih. A sizeof za bufferDeviceClock vrne stevilo elementov? Pomojem sizeof(bufferDeviceClock) vrne 14, sizeof(bufferDeviceClock) / sizeof(short) pa vrne 7, kar ni stevilo bajtov.
Poleg tega kar si napisal je morda veljavna sintaksa v C++ kar pa ne pomeni nujno da dela v C#. Kratek google mi naprimer pokaze da sizeof ne dela na short[] ker je short[] referencni tip. Kot drugo, mi ni uspelo najti niti enega C# primera kjer se sizeof uporablja na spremenljivki in ne tipu, kar daje sum da to ni mozno.
Poleg tega imas sporocilo kompajlerja o napaki, ki v bistvu pravi, da ne najde tipa bufferDeviceClock, kar pomeni da je variabla uporabljena nekje, kjer bi moral biti tip. in sizeof je edina taka moznost. Pri tako dobrem sporocilu o napaki (ima tudi vrstico napake) se clovek za hip vprasa zakaj je to na forumu (dokler se ne spomni teme o tem kaj je if stavek v PHP).
Zgodovina sprememb…
- spremenil: Spura ()
Senitel ::
Bah zamešal... Pove velikost arraya v elementih. sizeof(bufferDeviceClock) je size v bajtih, sizeof(short) je velikost enega elementa v bajtih... To za C++.
Za C# ja pa točno tako kot si ti rekel, sizeof deluje samo na tipih.
Za C# ja pa točno tako kot si ti rekel, sizeof deluje samo na tipih.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C# in DateTimeOddelek: Programiranje | 1350 (1170) | FiDeK |
» | [C++] problem z binarnimi datotekamiOddelek: Programiranje | 944 (809) | mallard |
» | c# - mssql kombinacija / problem pri zapisu row-a v bazoOddelek: Programiranje | 1598 (1407) | darkolord |
» | [C++ DirectX] DirectSound vodič za začetnikeOddelek: Programiranje | 1746 (1532) | W3by |