/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
As Any
Fra : Peter


Dato : 19-07-02 23:05

Jeg sidder med et program fra VB6 og skal have det over i VB.Net og
selvfølgelig er der problemer med konverteringen. Den første fejl omhandler
As Any variablen som ikke må bruges i en decleration i VB.Net
As Any bliver brugt som følger:
-----------------
Private Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef
lpvParam As Any, ByVal fuWinIni As Long) As Long
------------------

Da jeg egentlig aldrig har brugt 'As Any' selv har jeg ret svært ved at
konvertere den/skifte den ud med noget andet.

Senere bruges kaldet i:

----------------
Dim rc As RECT
SystemParametersInfo SPI_GETWORKAREA, 0, rc, 0
Me.Move (rc.Right * 15) - Me.Width, (rc.Bottom * 15) - Me.Height
----------------

'rc' er As Any og bliver dimmet med RECT som er en Private Type:
------------
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
-------------

Tilbage til problemet: Hvad kan jeg skifte As Any ud med i:
-------------------
Private Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef
lpvParam As Any, ByVal fuWinIni As Long) As Long
-------------------
idet at VB.Net ikke vil acceptere As Any ?
Løsning og en evt forklaring ville være dejligt =)

Hilsen fra Peter



 
 
Bo Larsson (20-07-2002)
Kommentar
Fra : Bo Larsson


Dato : 20-07-02 10:40

"Peter" <wont@tell.you> wrote:

....
>Tilbage til problemet: Hvad kan jeg skifte As Any ud med i:
>-------------------
>Private Declare Function SystemParametersInfo Lib "user32" Alias
>"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef
>lpvParam As Any, ByVal fuWinIni As Long) As Long
>-------------------
>idet at VB.Net ikke vil acceptere As Any ?
>Løsning og en evt forklaring ville være dejligt =)
>
Det korte svar er: du skal ikke skifte "As Any" ud - du skal skrive
din kode om.

Lidt længere svar: .NET et objektorienteret - i modsætning til
tidligere versioner af Windows, som er hændelsesbaserede. Du skal
derfor bruge .NET's objektmodel for at finde de information, som du
skal bruge.

Det kan fx se sådan ud:

Dim rc As System.Drawing.Rectangle
rc = SystemInformation.WorkingArea()


Peter (20-07-2002)
Kommentar
Fra : Peter


Dato : 20-07-02 11:11


"Bo Larsson" <bo.larsson@mail.dk> wrote in message
news:lpbijukjtqtjulefj9rldavns57egarfii@dtext.news.tele.dk...
> "Peter" <wont@tell.you> wrote:
>
> ...
> >Tilbage til problemet: Hvad kan jeg skifte As Any ud med i:
> >-------------------
> >Private Declare Function SystemParametersInfo Lib "user32" Alias
> >"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long,
ByRef
> >lpvParam As Any, ByVal fuWinIni As Long) As Long
> >-------------------
> >idet at VB.Net ikke vil acceptere As Any ?
> >Løsning og en evt forklaring ville være dejligt =)
> >
> Det korte svar er: du skal ikke skifte "As Any" ud - du skal skrive
> din kode om.

Hehe... det er jeg bevidst om

> Lidt længere svar: .NET et objektorienteret - i modsætning til
> tidligere versioner af Windows, som er hændelsesbaserede. Du skal

Mener du ikke VB6 istedet for Windows?

> derfor bruge .NET's objektmodel for at finde de information, som du
> skal bruge.
>
> Det kan fx se sådan ud:
>
> Dim rc As System.Drawing.Rectangle
> rc = SystemInformation.WorkingArea()

Har du en super lang forklaring?

Hilsen fra Peter



Bo Larsson (20-07-2002)
Kommentar
Fra : Bo Larsson


Dato : 20-07-02 13:20

"Peter" <wont@tell.you> wrote:

....
>Har du en super lang forklaring?
>
OK, jeg skal prøve og så må andre, som ved mere/bedre supplere.

..NET er - i modsætning til tidligere versioner af Windows - objekt
orienteret hele vejen igennem. Tidligere var der (i hovedtræk) tre
dll'er, som dannede hjertet i Windows: system, kernel og gdi. Disse
dll'er er samlinger af funktionskald, som kan kaldes af alle
programmer (API: Application Programming Interface).

Med .NET er hele kernen blevet objektorienteret og i stedet for at
kalde en bestemt funktion, skal du nu benytte det objekt, som har den
metode eller data, som du skal bruge - det her tilfælde altså objektet
System.Windows.Forms.SystemInformation, som bl.a. har metoden
WorkingArea().

Jeg ved ikke om det blev meget klarere, men ellers må du jo spørge
igen.



Peter (20-07-2002)
Kommentar
Fra : Peter


Dato : 20-07-02 19:20


"Bo Larsson" <bo.larsson@mail.dk> wrote in message
news:kekijug82tjplaf04j68mt174dkud7c3di@dtext.news.tele.dk...
> "Peter" <wont@tell.you> wrote:
>
> ...
> >Har du en super lang forklaring?
> >
> OK, jeg skal prøve og så må andre, som ved mere/bedre supplere.
>
> .NET er - i modsætning til tidligere versioner af Windows - objekt
> orienteret hele vejen igennem. Tidligere var der (i hovedtræk) tre
> dll'er, som dannede hjertet i Windows: system, kernel og gdi. Disse
> dll'er er samlinger af funktionskald, som kan kaldes af alle
> programmer (API: Application Programming Interface).
>
> Med .NET er hele kernen blevet objektorienteret og i stedet for at
> kalde en bestemt funktion, skal du nu benytte det objekt, som har den
> metode eller data, som du skal bruge - det her tilfælde altså objektet
> System.Windows.Forms.SystemInformation, som bl.a. har metoden
> WorkingArea().
>
> Jeg ved ikke om det blev meget klarere, men ellers må du jo spørge
> igen.

Dumt spørgsmål der løser mange problemer:
Hvad er forskellen på object og funktion i din sammenhæng (jeg ved udemærket
godt hvad et objekt er og jeg ved også godt hvad en funktion er men det
lader ikke til at jeg fatter det i den her sammenhæng).
Derfor forklar essensen af objektorienteret programmering =)

Hilsen fra Peter



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste