[VB] Winsock in klasse

Pagina: 1
Acties:

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Ik zou graag een Winsock object in een klasse gebruiken.

Ik heb
code:
1
Private WithEvents W as Winsock

Maar ik weet niet hoe ik het winsock object moet initialiseren...

Het geeft de foutmelding "Object variable not set";

Ik moet dus iets à la Set W = CreateObject("Winsock") doen maar ik weet welke functie dit doet.

edit:

In MSDN staat : Set objectvariable = CreateObject("progID",["servername"])

Echter ik weet niet wat ik voor progID moet invullen


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Dat kan niet, de Winsock Control MOET op een Form staan (beter gezegd: een ActiveX Container).

Je kunt niet een New Winsock() createn ofzo.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Waarom kan ik dan in die klasse zeggen
Private WithEvents W as Winsock. En komt er in mijn klasse lijst het object W te staan met alle events ?

Toch een duidelijke indicatie dat het wel kan...
Het declareren van de Winsock lukt wel, maar het initialiseren niet.

Net zoals in C++ :

<type> <name>;

Dan moet je nog zeggen : <name> = new() <type>;

Ik moet dus gewoon weten wat het progID is van Winsock of hoe ik het kreng kan loaden tijden runtime (late binding).

  • Cyberwizzard
  • Registratie: Juni 2001
  • Laatst online: 27-03-2024
Op maandag 04 februari 2002 21:28 schreef Gerco het volgende:
Dat kan niet, de Winsock Control MOET op een Form staan (beter gezegd: een ActiveX Container).

Je kunt niet een New Winsock() createn ofzo.
Tuurlijk kan dat wel, dat heb ik ook al een aantal keer gedaan...

En dat met die object variable is heel simpel, je hebt W het type Winsock gegeven maar nog geen Winsock object (in je garage past een auto maar dat wil nog nie zeggen dat er een auto in staat :D).

Dus dan doe je:
Set W = New Winsock()

P.S. Die () weet ik niet zeker maar ik heb me VB6 hier nog nie...

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Op maandag 04 februari 2002 21:34 schreef Cyberwizzard het volgende:
Tuurlijk kan dat wel, dat heb ik ook al een aantal keer gedaan...
Invalid use of keyword New...
Had ik trouwens al geprobeert :)

  • Cyberwizzard
  • Registratie: Juni 2001
  • Laatst online: 27-03-2024
Sorry maar ik was idd vergeten er ff bij te vermelden HOE je het moet doen dus ik wassem net aan het editten :D
Ow en die CreateObject kun je maar beter vergeten, die heb je hier niet bij nodig en ik vind het een kutfunctie....

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Op maandag 04 februari 2002 21:36 schreef XTerm89D het volgende:

[..]

Invalid use of keyword New...
Had ik trouwens al geprobeert :)
Sorry dat ik zo snel was :)

Maar, het is dus niet met New... (of in een andere vorm), New lukt enkel voor zelfdefineerde klassen.

  • Cyberwizzard
  • Registratie: Juni 2001
  • Laatst online: 27-03-2024
Ik haalt mijn VB cd wel ff weer op.... ik post zo wel de resultaten :D

  • Cyberwizzard
  • Registratie: Juni 2001
  • Laatst online: 27-03-2024
Al een andere oplossing ga maar eens naar:
http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=23371&lngWId=1
Daar staat een voorbeeld hoe je een Winsock object in een class propt :)

Have fun!

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Ik heb die klasse netjes gekopieert naar een clsWinsock en
dan
dim t as new clswinsock
set t = new clswinsock

Als ik een method uit die klasse gebruik krijg ik (wat ik ook al kreeg) "Invalid use of keyword new".

Ik ben best bereidt te accepteren dat het niet kan, maar zou dit wel spijtig vinden aangezien dat dan het hele nut van een klasse te gebruiken verloren gaat.

* XTerm mist zijn C++ :(

  • Cyberwizzard
  • Registratie: Juni 2001
  • Laatst online: 27-03-2024
Heb jij wel netjes het Winsock ocx-je geladen in op je components tab??? En anders draai het is om en gooi de control uit je project en maak een reference naar de ocx... Het MOET werken want bij mij doettie ut ook....

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Met een reference naar de OCX zou het best wel eens kunnen werken ja, maar het is onmogelijk om een CONTROL in CODE te instantieren zonder Container (iig in VB).

Maar met een reference zou het best wel eens kunnen lukken. Dan gaat we eens proberen (nu eerst werken).

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Beetje offtopic...

Hmmz, ik weet niet of het in VB6 kan, maar volgens mij kan het in VB.NET (VB7) wel. Ik ben er de laatste tijd een beetje mee aan 't kloten geweest, maar 't is nog wel wat wennen in vergelijking met VB6. Je kan er echter wel veel meer mee. Maar ehm, de Winsock control bestaat niet meer in VB.NET. Daar moet je nu System.Net.Sockets voor gebruiken. Beetje lastig, maar als je het eenmaal doorhebt is het redelijk eenvoudig.

Ennuhm, sterkte er nog mee.

  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Jmezach heeft gelijk, in VB6 is het object beheer waardeloos, ik hoop idd dat het in .NET beter wordt.

En mijn oneindige dank voor cyberwarrior, het moet idd als reference en niet als component geladen worden.

Werkt perfect nu.

Bedankt !

Verwijderd

Hmmm, zo gebruik ik het winsock-control al jaren. Zelfs in de tijd van Access95/VBA...
Wel inderdaad opletten op twee dingen:
1) De ocx moet als reference opgenomen worden.
2) De 'design' licentie-sleutel moet je altijd hebben.

Dit laatste omdat je een nieuw object maakt, welke niet herkent dat je in de run-time omgeving zit. Dus even de HKCL\Licenses\2c49f800-c2dd-11cf-9ad6-0080c7e7b78d key toevoegen in je setup (de waarde die bij Default moet staan, haal je zelf maar uit je registry).
Voor de (lite)mods die misschien denken dat dit piraterij is, het is gedocumenteerd in de MSKB en de oplossing is om de bovenstaande sleutel te maken. ;)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op dinsdag 05 februari 2002 17:55 schreef Debbus het volgende:
Voor de (lite)mods die misschien denken dat dit piraterij is, het is gedocumenteerd in de MSKB en de oplossing is om de bovenstaande sleutel te maken. ;)
Weet je toevallig welk artikel dat is? Ik kan het niet vinden in de KB (zoekterm: Winsock en Winsock control). Ik wil het wel lezen. Ik wist niet dat het maken van references naar .ocx'jes ook mocht :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!

Pagina: 1