Page 1 of 1 1
Topic Options
#181829 - 2007-10-22 08:12 PM Casting String to Object - Possible?
pearly Offline
Getting the hang of it
*****

Registered: 2004-02-04
Posts: 92
Is it possible to cast a string to an object? I know KiXtart isn't a static type language, but I was wondering if this is possible somehow?

I'm trying to convert this VB7 function for my KF.NET application. Here is the code

 Code:
Function AddComPlusApplication(ByVal applicationName As String, _
    ByVal serverName As String) As Boolean
    Dim catalog As New COMAdmin.COMAdminCatalog
    catalog.Connect(serverName)
    ' get the Applications collection
    Dim apps As COMAdmin.COMAdminCatalogCollection = CType _
        (catalog.GetCollection("Applications"), _
        COMAdmin.COMAdminCatalogCollection)
    apps.Populate()
    If apps.AddEnabled Then
        'Check to ensure duplicate is not created
        Dim i As Integer
        For i = 0 To apps.Count - 1
            If applicationName = CType(apps.Item(i), _
                COMAdmin.COMAdminCatalogObject).Name.ToString() Then
                Return False
            End If
        Next i
        Dim application As COMAdmin.COMAdminCatalogObject = CType(apps.Add(), _
            COMAdmin.COMAdminCatalogObject)
        application.Value("Name") = CType(applicationName, Object)
        apps.SaveChanges()
        Return True
    End If
    Return False
End Function


Here's my KiXtart Function I have so far:

 Code:
Function AddComPlusApplication($applicationName, optional $serverName)
	Dim $objCat, $apps
	Dim $i, $app, $iFlag
	Dim $application

	$objCat = CreateObject("COMAdmin.COMAdminCatalog.1")
	If $serverName $ = $objCat.Connect($serverName) EndIf
	
	$apps = $objCatalog.GetCollection("Applications")
	$apps.Populate()	
	
	If $apps.AddEnabled = -1		
		For $i = 0 to $apps.Count() - 1
			$app = $apps.Item($i)
			If $applicationName = CStr($app.Name)
				$iFlag = $TRUE
				$i = $apps.Count() - 1
			EndIf
		Next
	EndIf
	
	If $iFlag <> $TRUE
		$application = $apps.Add()
		$application.Value("Name") = $applicationName ;cast to Object from String - how?
		$ = $apps.SaveChanges()
	EndIf		
EndFunction	


Is it possible to convert this to KiX?

 Code:
application.Value("Name") = CType(applicationName, Object)

Top
#181836 - 2007-10-23 02:18 AM Re: Casting String to Object - Possible? [Re: pearly]
Shawn Administrator Offline
Administrator
*****

Registered: 1999-08-13
Posts: 8611
Casting aside, this syntax here:

application.Value("Name") = CType(applicationName, Object)

Isn't supported by kixtart. Even if you could cast the string to an object (which is another matter altogether), kixtart won't let the assignment happen. The big question you have to answer is:

What does this:

$application.Value("Name")

resolve to. I usually do this to find out:

?"VarTypeName = " + VarTypeName($application.Value("Name"))

It will (should) either be a string or an object. If its a string - your probably dead. If its an object, you can probably make it work. Find this answer first.





Top
#181838 - 2007-10-23 07:07 AM Re: Casting String to Object - Possible? [Re: Shawn]
pearly Offline
Getting the hang of it
*****

Registered: 2004-02-04
Posts: 92
Thanks for replying Shawn.

Well it looks like I'm dead. VarTypeName returns String.

There's another way to call this code

 Code:
$application.Name = 


Here is the description of the property:

http://msdn2.microsoft.com/en-us/library/ms686107.aspx#_cos_applications_name

Top
#181839 - 2007-10-23 08:11 AM Re: Casting String to Object - Possible? [Re: pearly]
Shawn Administrator Offline
Administrator
*****

Registered: 1999-08-13
Posts: 8611
ok, found some more info after branching-off that great link you gave:

 Quote:

COMAdminCatalogObject.Value

The Value property method is used to set or get a specific named property exposed by this catalog object.

To get the value of a property, you provide a string naming the property, and a Variant containing the property value is returned.


So - this just retrieves a named property. So theoretically, you should be able to just use this:

$Name = $Object.Name



Top
#181864 - 2007-10-23 07:23 PM Re: Casting String to Object - Possible? [Re: Shawn]
pearly Offline
Getting the hang of it
*****

Registered: 2004-02-04
Posts: 92
Shawn,

I think you gave me code to get the .Name property value.

But how would you set a value to the .Name property?

Top
#181865 - 2007-10-23 07:44 PM Re: Casting String to Object - Possible? [Re: pearly]
Shawn Administrator Offline
Administrator
*****

Registered: 1999-08-13
Posts: 8611
I would just try:

$Object.Name = "Whatever"

And do an @SERROR to see what the complaint is.

Top
#181866 - 2007-10-23 08:01 PM Re: Casting String to Object - Possible? [Re: Shawn]
pearly Offline
Getting the hang of it
*****

Registered: 2004-02-04
Posts: 92
Hmmm, we're getting somewhere. The error I received when executing this code:

 Code:
$application.Name = $applicationName


is Invalid number of parameters.

Top
#181867 - 2007-10-23 08:02 PM Re: Casting String to Object - Possible? [Re: Shawn]
Benny69 Offline
Moderator
*****

Registered: 2003-10-29
Posts: 1036
Loc: Lincoln, Ne
With VB I have had some success with a structure like this;

change this:
 Code:
$application.Value("Name") = $applicationName

to this:
 Code:
$application.Value("Name",$applicationName)
_________________________
Wait don't order yet,... get KiXforms Designer .NET 2.0 (Beta)
KiXforms Designer .NET 2.0 (Beta)

Top
#181868 - 2007-10-23 08:11 PM Re: Casting String to Object - Possible? [Re: Benny69]
pearly Offline
Getting the hang of it
*****

Registered: 2004-02-04
Posts: 92
Thanks for chiming in Benny.

However when changing the code as indicated above, I'm still getting the same error message:

Invalid number of parameters

\:\(

Top
#181872 - 2007-10-23 10:56 PM Re: Casting String to Object - Possible? [Re: pearly]
NTDOC Administrator Offline
Administrator
*****

Registered: 2000-07-28
Posts: 11603
Loc: CA
It's looking for the specific entries associated with the object.

I've not looked it up but as an example

MyObject('date','time','year')

You would need to supply date,time,and year in that example.

You need to lookup and see what values (parameters) it's looking for and supply them. Often they could be like: 'name,,,,,8,) meaning that name and 8 were required and the others were optional.

Top
#181877 - 2007-10-24 01:09 AM Re: Casting String to Object - Possible? [Re: NTDOC]
Shawn Administrator Offline
Administrator
*****

Registered: 1999-08-13
Posts: 8611
Was reading more of your MSDN docs there. Looks like the Name property is read-only. Ok. And to set the name, you use the Value property, like you already have:

$Object.Value("Name") = "Whatever"

But basically if this is whats really required - then your dead. Kixtart just doesn't support this particular COM syntax. Sad I know. Wonder if we could get Ruud to comment on.

Top
#181907 - 2007-10-24 06:44 PM Re: Casting String to Object - Possible? [Re: Shawn]
pearly Offline
Getting the hang of it
*****

Registered: 2004-02-04
Posts: 92
I hope he can chime in!
Top
#181914 - 2007-10-24 11:34 PM Re: Casting String to Object - Possible? [Re: pearly]
Shawn Administrator Offline
Administrator
*****

Registered: 1999-08-13
Posts: 8611
Well, you might already know. He's on vacation right now. Have no idea when he will get back. I will email him and ask he he can comment on this syntax limitation. I remember having discussions about it. There might be some history on the board here. And this is about at least the forth COM object that has properties implemented this way , ... one of the others was an excel call ... let me search ...
Top
#187092 - 2008-04-18 07:16 PM Re: Casting String to Object - Possible? [Re: Shawn]
pearly Offline
Getting the hang of it
*****

Registered: 2004-02-04
Posts: 92
Bringing this back from the dead...Shawn have you talked to Ruud about this?
Top
Page 1 of 1 1


Moderator:  Shawn, ShaneEP, Ruud van Velsen, Arend_, Jochen, Radimus, Glenn Barnas, Allen, Mart 
Hop to:
Shout Box

Who's Online
0 registered and 197 anonymous users online.
Newest Members
dimi575, Drecksnacken, Nlill, webtools321, multiman
17734 Registered Users

Generated in 0.039 seconds in which 0.013 seconds were spent on a total of 13 queries. Zlib compression enabled.

Search the board with:
superb Board Search
or try with google:
Google
Web kixtart.org