Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET DllImport: Joko minä tai VS on seonnu

jyrama [25.12.2009 01:14:41]

#

<DllImport("kernel32.dll", CharSet:=CharSet.Unicode, SetLastError:=True)> _
    Public Shared Function CreateProcess(ByVal Optional AppplicationName As String = "", _
                                         optional CommandLine As String = "", _
                                         Optional ByVal ProcessAttributes As IntPtr = IntPtr.Zero, _
                                         Optional ByVal ThreadAttributes As IntPtr = IntPtr.Zero, _
                                         Byval InheritHandles as boolean, _
                                         Byval CreationFlags as ProcessCreationFlags, _
                                         Optional ByVal Enviroment as intptr = intptr.Zero, _
                                         Optional ByVal CurrentDirectory as string = "", _
                                         byref StartupInfo as StartupInfo, _
                                         byref ProcessInformation as ProcessInformation) As Boolean
End Function

Vika 1

Optional ByVal ThreadAttributes As IntPtr = IntPtr.Zero, _

tossa herjaa IntPtr.Zeroa (Constant expression is required)
outoo ku kelpaa edellisellä rivillä

Vika 2 (heti seuraavalla rivillä)

ByVal

"'Optional' expected"

Yhtään ideoita? Toivottavasti "hullun veeässän -tauti" ei ole kovin tarttuvaa

jyrama [25.12.2009 20:50:32]

#

Joo... Kokeilin ottaa optional:t pois.
Ei enää valita... Taitaal olla VS buginen niiden osalta

Mutta jos joku keksii miten ne saa mukaan, niin hyvä on

Metabolix [26.12.2009 18:57:02]

#

Mahtaako olla niin, että Optional saa esiintyä vain viimeisissä parametreissa? Ainakin monissa muissa kielissä on tällainen vaatimus. Muutenhan voisi tulla epäselvyyksiä siitä, mihin parametreihin argumentit pitäisi sijoittaa:

Public Shared Function testi(Optional X As Integer = 1, Y As Integer, Optional Z As Integer = 3)
' testi(5, 6), siis testi(5, 6, 3) vai testi(3, 5, 6)

Jos tarkoituksesi on vain saada muutama parametri piiloon, voit toki tehdä oman funktion MyCreateProcess, jossa parametrit ovat toisessa järjestyksessä ja joka sitten kutsuu oikeaa funktiota.

jyrama [28.12.2009 14:51:56]

#

Niinhän tuo näyttää olevan. Tuo vaan hämmästytti minua niin paljon,
koska tuo on suora käännös Visual C#:sta joka siis sallii tuollaiset

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta