[VB] Object toevoegen aan een collection crashed applicatie

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 19-09 08:47
Hallo Allemaal,

ik ben op dit moment in VB voor Word bezig om een object toe te voegen aan een bepaalde collection. Dit gaat allemaal goed met de volgende coden:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sub addNewServer(sServerName As String, sServerURL As String, sUserName As String)
    Dim userName As String
    Dim password As String
    Dim servers As QServerColl
    Dim server As QServer
    Stop
    'ask user for credentials
    'set credentials in new server object
    'save the server object and return it.
    
    Dim cForm As CredentialForm
    Set cForm = New CredentialForm
    
    Call cForm.Move(Application.Width / 2, Application.Height / 2, cForm.Width, cForm.Height)
    Call cForm.Show
    userName = cForm.userName
    password = cForm.password
    
    Set servers = prop_qSettings.GetServers
    

    Set server = servers.Add()
    Call server.SetName(sServerName)
    Call server.SetUrl(sServerURL)
    Call server.SetUserId(userName)
    Call server.SetPassword(password)
    Call server.SetBinaryUrl(SERVER_BINARYURL)
    Call server.SetAnonymousBinaryUrl(SERVER_ANONYMOUSBINARYURL)
    Call server.SetUnlistAble("1")
    Call server.SetSavePwd("1")
    Call server.Save
    
    
    Call servers.Reset
end sub


dit gaat allemaal goed tot op het moment dat de code uit de sub gaat dan crashed word. Heeft iemand enig idee waar dit aan kan liggen?

[ Voor 24% gewijzigd door Webgnome op 09-07-2009 15:29 ]

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 19-09 12:26

Dricus

ils sont fous, ces tweakers

Welke Word versie gebruik je?

Ik zie in ieder geval het volgende:
Visual Basic .NET:
1
2
    Call server.SetUserId(userName)
    Call server.SetPassword(password)

De variabelen userName en password zijn (zo te zien) nergens bekend. sUserName is een parameter van de functie, wellicht bedoel je die? Als dit niet-gedeclareerde variable zijn (en je gebruikt geen Option Explicit), dan wordt er volgens mij Nothing, Null of Empty ofzo aan SetUserId en SetPassword doorgegeven (afhankelijk van wat voor type de parameter van die functies is).

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 19-09 08:47
Dricus schreef op donderdag 09 juli 2009 @ 15:00:
Welke Word versie gebruik je?

Ik zie in ieder geval het volgende:
Visual Basic .NET:
1
2
    Call server.SetUserId(userName)
    Call server.SetPassword(password)

De variabelen userName en password zijn (zo te zien) nergens bekend. sUserName is een parameter van de functie, wellicht bedoel je die? Als dit niet-gedeclareerde variable zijn (en je gebruikt geen Option Explicit), dan wordt er volgens mij Nothing, Null of Empty ofzo aan SetUserId en SetPassword doorgegeven (afhankelijk van wat voor type de parameter van die functies is).
die variabelen haal ik op via een userformpje. Ik zal originele post eventjes aanpassen zodat het de situatie beter illustreert, en ik werk met office 2007 nu.

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 01:07

Reptile209

- gers -

Probeer eens twee dingen:
• gooi het hele server-deel eens weg (regels 19-34)
• gooi het hele credentials-form deel eens weg (regels 11-15, zet wat dummy-strings voor user en pass op regel 16 en 17)

Als één van deze twee dingen wel werkt, weet je al meer waar je probleem kan zitten (zou prop_qSettings.GetServers bijvoorbeeld leeg kunnen zijn? misschien een error veroorzaakt in het form dat je pas merkt bij het sluiten van de sub?) en kan je wat gerichter gaan zoeken.

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 19-09 08:47
Ik ben nu iets verder met dit stukje code wat eigenlijk vrij simpel is. Nu crashed Word helemaal op het laatst. Ik heb een test sub geschreven waar ik alles doe wat ik in de originele code ook doe maar dan met hardcoded variabelen om te kijken wat het probleem kan zijn. Ik heb bepaalde waarden naar dummy waardes gezet omdat die niet bekend hoeven te zijn voor dit topic

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    Dim c As QClientSettings
    Dim servers As QServerColl
    Dim server As QServer
    Dim libraries As QLibraryColl
    Dim lib As QLibrary
        
    Set c = New QClientSettings
    Set servers = c.GetServers()
    Call servers.Reset
    Set server = servers.Add()
    Call server.SetId("1")
    Call server.SetAnonymous("")
    Call server.SetBinaryUrl("dm/atom")
    Call server.SetAnonymousBinaryUrl("dm.anonymous/atom")
    Call server.SetUrl("serverurl")
    Call server.SetInstallUrl("serverurl/installpath")
    Call server.SetPassword("password")
    Call server.SetName("servername")
    Call server.SetUserId("userid")
    Call server.SetFullUserId("username/company")
    Call server.SetVersion("8.1.1")
    Call server.SetSavePwd("1")
    Call server.SetUnlistAble("1")
    Call server.SetUserCommonName("username")
    Call server.SetUserEmail("user@mail.com")
    
    Set libraries = server.GetLibraries()
    Call libraries.Reset
    
    Set lib = libraries.Add()
    Call lib.SetServerId(server.GetId)
    Call lib.SetAddDocument("2")
    Call lib.SetDescription("description")
    Call lib.SetDisplayName("descriptionon " + server.Name)
    Call lib.SetDoubleClick("2")
    Call lib.SetLocalDirectory("C:/temp/")
    Call lib.SetName("description")
    Call lib.SetOffline("0")
    Call lib.SetPath("@description/@RMain.nsf")
    Call lib.SetId("@description/@RMain.nsf")
    Call lib.SetTitle("description")
    Call lib.SetType("1")
    Call lib.Save
    Call server.Save
    
    Set lib = Nothing
    Set libraries = Nothing

    Set server = Nothing
    Set servers = Nothing
    Set c = Nothing


Dit script werkt in die zin dat door de aanroepen van de save functies de wijzigingen in het registry worden opgeslagen. Maar.... als ik deze code run in een macro dan crashed Word op regel 49. Zoals je kunt zien heb ik op het einde een aantal set nothing statements staan omdat ik dacht dat de crash werd veroorzaakt doordat word de objecten niet kan opruimen. Nu weet ik ook , denk ik, waar het probleem zit maar kan er nog steeds niks aan doen.

Hij kan dus op een of andere manier het server object niet clearen. Heeft iemand enig idee waar dat aan zou kunnen liggen?

offtopic:
heeft iemand enig idee of Word ergens logs bij houdt?

[ Voor 11% gewijzigd door Webgnome op 14-07-2009 10:50 . Reden: Made post bit more cleare ]

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22:02
Misschien moet je eerst even vertellen met welke libraries je bezig bent want ik kan me moeilijk voorstellen dat die Q... typen bij Word horen.

Een google levert dit op http://www-10.lotus.com/l...75590051C1CB?OpenDocument maar ik heb geen idee of dat ook is waarmee bezig bent.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 19-09 08:47
Dat is inderdaad het object waar ik mee bezig ben op dit moment.

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 01:07

Reptile209

- gers -

Misschien is het een beetje een long shot... In de voorbeelden op de site die farlane noemt wordt eerst de servercollection gedisposed en dan pas de server. In jouw geval wordt dat dus:
Visual Basic .NET:
1
2
    Set servers = Nothing 
    Set server = Nothing 

Je zou, voordat je dit aanpast, eens kunnen kijken of de objecten nog een inhoud hebben voordat je ze leegmaakt, misschien geeft dat nog een clue.

En misschien is deze hele API net zo bagger en onvriendelijk als Lotus Notes zelf, * Reptile209 is er geen fan van maar moet het nu helaas zelf ook gebruiken... |:(

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 19-09 08:47
Reptile209 schreef op dinsdag 14 juli 2009 @ 21:32:
Misschien is het een beetje een long shot... In de voorbeelden op de site die farlane noemt wordt eerst de servercollection gedisposed en dan pas de server. In jouw geval wordt dat dus:
Visual Basic .NET:
1
2
    Set servers = Nothing 
    Set server = Nothing 

Je zou, voordat je dit aanpast, eens kunnen kijken of de objecten nog een inhoud hebben voordat je ze leegmaakt, misschien geeft dat nog een clue.

En misschien is deze hele API net zo bagger en onvriendelijk als Lotus Notes zelf, * Reptile209 is er geen fan van maar moet het nu helaas zelf ook gebruiken... |:(
Dat heb ik al geprobeert maar dat hielp niets hij crashte zelfs nog sneller. Heb de vraag nu bij de ontwikkelaar van die API neer gedumpt met de vraag of dat opgelost kan worden want zo is het niet werkbaar. (nu weet ik wel wat die api doet dus kan ik het ook zelf gaan na bouwen in een eigen vb scriptje maar goed.. dat gaat weer extra tijd kosten en dat is altijd schaars)


offtopic:
lotus notes is niet bagger.. lotus notes is anders ..

Strava | AP | IP | AW

Pagina: 1