|
I have hyperlink inside of my body, however whenever I launch outlook in the following way I don't have hyperlink but just simple text. I don't know if it is the function i am using for encoding or just shellexecute doesn't support.
strmail = "mailto:" & URLEncode(strEmailAddress) & "?Subject=" URLEncode(strsubject) & "&Body=" & URLEncode(strBody)
ShellExecute 0, "open", strmail , vbNull, vbNull, SW_SHOWNORMAL
Public Function URLEncode(URL As String) As String
Dim i As Long
For i = 1 To Len(URL)
Select Case Asc(UCase(Mid(URL, i, 1)))
Case Asc("A") To Asc("Z")
URLEncode = URLEncode & Mid(URL, i, 1)
Case Else
URLEncode = URLEncode & "%" & _
Right("00" & Hex(Asc(Mid(URL, i, 1))), 2)
End Select
Next
End Function
After the launching and see the source code I have <> converted to < and >. I think this is problem but i don't know how to fix this.
shin
|
|
|
|
|
I have succesfully serialized and array of objects into an xml-file. But I haven't successed in doing the reverse, deserializing - reading the xml-file and put it back into an array.
---
Here is the class, simplified without properties:
<serializable()> Public Class Job
' main settings
Private strName As String
Private strDescription As String
Private strCmdLine As String
End Class Job
---
Here is my array declared along with a hashtable I use:
Public Jobs As New Hashtable
Public JobArray() As Job
---
Here is my serialize-function:
'Call BinarySerialize()
Dim myArray() As Job
ReDim myArray(Jobs.Count - 1)
Dim objStreamWriter As New StreamWriter("job.xml")
Dim x As New XmlSerializer(myArray.GetType)
Dim i As Integer
' looping through a datagrid and loading the array
For i = 0 To lVirtualTable.Rows.Count - 1
Dim j As Job = DirectCast(Jobs(lVirtualTable.Rows(i).Item(0)), Job)
myArray(i) = j
Next
Try
x.Serialize(objStreamWriter, myArray)
Catch e As Exception
MsgBox(e.Message.ToString)
End Try
objStreamWriter.Close()
---
The above function works and saves the xml-file correctly. I just need help with a function that fílls the array from the xml-file. Any ideas?
Thanks / Henrik
--- neteject.com - Internet Solutions ---
|
|
|
|
|
I have no idea what your doing wrong, because I can't test the code and play with it here at work.
But, you could try this article on MSDN first: Troubleshooting Common Problems with the XmlSerializer
[^]
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I have read alot but to not understand. Here is an easy simplified example of my problem with deserializing. I would be very thankful if you looked at it!
http://neteject.com/example/serialize_example.zip
--- neteject.com - Internet Solutions ---
|
|
|
|
|
Ok, I have succesed without using Option Strict On but I would like some help to prevent having that Off. Here is the code:
Dim objStreamReader As New System.IO.StreamReader("jobs.xml")
Dim jobarray(0) As Job
Dim i As Integer
Dim x As New XmlSerializer(jobarray.GetType)
jobarray = x.Deserialize(objStreamReader)
The error is on the last line which says:
C:\Documents and Settings\Henrik Erlandsson\Skrivbord\VisualCron\2004-06-16\modMain.vb(74): Option Strict On disallows implicit conversions from 'System.Object' to '1-dimensional array of project.Job'.
Hope can I ctype or something to tell that jobarray is not 1-dimensional?
--- neteject.com - Internet Solutions ---
|
|
|
|
|
You night want to try something like this:
Dim objStreamReader As New System.IO.StreamReader("jobs.xml")
Dim jobarray() As Job
Dim i As Integer
Dim x As New XmlSerializer(jobarray.GetType)
jobarray = CType(x.Deserialize(objStreamReader), jobarray)
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I tried that but it says that jobarray is not defined (it won't show up in the list). I have no idea why because I just "dim:ed" it a few rows earlier.
any more ideas? thanks!
--- neteject.com - Internet Solutions ---
|
|
|
|
|
OK. Here's a quick little Console app that'll demonstrate what you looking for:
Imports System.Xml
Imports System.Xml.Serialization
Imports System.IO
Module Module1
Public Jobs() As Job
Private NUMJOBS As Integer = 10
Sub Main()
ReDim Jobs(NUMJOBS)
FillJobs()
XMLSerialize()
ReDim Jobs(NUMJOBS)
XMLDeserialize()
End Sub
Public Sub FillJobs()
For x As Integer = 0 To NUMJOBS
Jobs(x) = New Job
Jobs(x).strCmdLine = "CommandLine" & x.ToString
Jobs(x).strDescription = "Description" & x.ToString
Jobs(x).strName = "Name" & x.ToString
Next
End Sub
Public Sub XMLSerialize()
Dim objStreamWriter As New StreamWriter("jobs.xml")
Dim x As New XmlSerializer(Jobs.GetType())
x.Serialize(objStreamWriter, Jobs)
objStreamWriter.Close()
End Sub
Public Sub XMLDeserialize()
Dim objStreamReader As New StreamReader("jobs.xml")
Dim x As New XmlSerializer(Jobs.GetType())
Jobs = CType(x.Deserialize(objStreamReader), Job())
End Sub
End Module
Public Class Job
' main settings
Public strName As String
Public strDescription As String
Public strCmdLine As String
End Class
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
thank you very much! I forgot to add () to Job!
/ regards Henrik
--- neteject.com - Internet Solutions ---
|
|
|
|
|
Hiya, I'm in the middle of Mike Halvorson's Visual Basic Step By Step and there was a simple debugging problem where the ap prompts the user for their age and based upon this age, identifies them as either a teenager or not a teenager.
The ap has a probem because one of the lines includes:
If Age > 13 and Age < 20 Then
Textbox2.Text = "Your'e a teenager."
This creates a logic error in the fact that 13 is not included in the range of acceptable numbers. I simply made it > 12, but the book took the >=13 approach.
Only wanted to know if there was any reason why my solution wouldn't be just as viable as the book's.
Thanks.
Still coaxing software out of the can after all these years...
|
|
|
|
|
So long as your using Integers only, no there is no difference. But, what if Age was 12.5? Your code would set return true, while the authors code would not.
Never trust user input. Validate, Validate, Validate, Validate, and check it again before you use it.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I understand. When I saw the problem, I instinctively thought of 12 and couldn't think of an exception where this would not work, but you are correct, if someone used a decimal, the logic error would recur.
Still coaxing software out of the can after all these years...
|
|
|
|
|
Assuming that Age is an integer, there is absolutely no difference.
In programming, there is almost never one single right answer
|
|
|
|
|
David pointed out the integer issue. I hadn't thought of that. I'll have to check the code and see if it would allow decimal increments, if it would, then perhaps the >=13 would be a better solution for eliminating a potential logic error. I think I'll suggest that it be pointed out in future editions. It can make a big difference.
Still coaxing software out of the can after all these years...
|
|
|
|
|
I've got an implementation of a FTP which ought to work. But when I try to run it through this URL: (b221=my mashine name) "http://b211/FtpBrowser.asp" it sayss that there's too many users on the site at the same time - though it's only me. Sometimes I get an error in the code, too. Why doesn't the site work?
(the code should list the substance of a directory where the user is able to go deeper down the hieracy and back again)
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Sub skrivDrev()
set drv = fs.Drives
Response.Write "<IMG SRC=""folder_open.gif"" border=0 align=absmiddle vspace=3>" & f.path & "<br>"
for each d in drv
Response.Write d.Sharename
Response.Write "<a href=""FtpBrowser.asp?sti=" & d.DriveLetter & ":/"">" & d.DriveLetter & "</a> "
next
Response.Write "<a href=""FtpBrowser.asp?sti=" & server.MapPath("/") & """>ROOT</A> "
Response.write "<a href=""FtpBrowser.asp?sti="
if not f.IsRootFolder then
Response.write f.ParentFolder
end If
Response.Write """>[..]</a>"
End Sub
Sub skrivSubFolder()
i = 0
Response.Write "<table border=0 cellpadding=5><tr><td valign=top>"
For Each f1 in fc
if i mod 10 = 0 then
s = s & "</td><td valign=top>"
end If
i = i + 1
s = s & "<a href=""FtpBrowser.asp?sti=" & sti & "\" & f1.name & """><IMG SRC=""folder_closed.gif"" border=0 align=absmiddle vspace=3>" & f1.name & "</a>"
s = s & "<BR>"
Next
i = i - 1
while not i mod 10 = 0
s = s & "</TD><td></td>"
i = i + 1
wend
s = s & "</TR></TABLE>"
Response.write s
End Sub
Sub skrivfiler()
ReDim fileNames(f.files.count)
ReDim fileSize(f.files.count)
ReDim fileType(f.files.count)
ReDim fileDateLastModified(f.files.count)
i = 0
For Each fldr in f.files
fileNames(i) = fldr.name
fileSize(i) = fldr.size
fileType(i) = fldr.Type
fileDateLastModified(i) = fldr.DateLastModified
i = i + 1
Next
response.write "<table bgcolor=c3c3c3><TR class=buttons><td>Name:</TD><TD>Size</TD><TD>LastModified</TD><TD>Type</TD></TR>"
For i = f.files.count - 1 to 0 step -1
response.write "<TR><td bgcolor=FFFFFF>"
response.write fileNames(i) & "</TD>"
response.write "<TD class=buttons>" & fileSize(i) & "</TD>"
response.write "<TD bgcolor=FFFFFF>" & fileDateLastModified(i) & "</TD>"
response.write "<TD bgcolor=FFFFFF>" & fileType(i) & "</TD></TR>"
Next
response.write "</TABLE>"
end sub
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ftp</title>
<link rel="stylesheet" type="text/css" href="arkiv.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
abc
Testing!-
<%
'if Request.QueryString("sti") > "" then
' sti = Request.QueryString("sti")
'else
' sti = Server.MapPath(".")
'End IF
'Dim fs, f, fc ,sti
'set fs = CreateObject("Scripting.FileSystemObject")
'set f = fs.GetFolder(sti)
'Set fc = f.SubFolders
'skrivDrev
'skrivSubFolder
'Response.Write "</TD></TR></TABLE>"
'Response.Write "<p><table class=beskrivelse style=""font-size: 8px""><tr><TD>"
'skrivfiler
'Response.Write "</TD></TR></TABLE>"
%>
</body>
</html>
|
|
|
|
|
This question really belongs in the ASP.NET forum.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Are you able to run the code AT ALL? Are you able to run it, say 5-10 times, then it quits? Are you developing this on a 2000 Workstation or an XP machine? If so, you're probably running into the licensed connection limit. You're implementation is not using FTP, you're using the FileSystemObject, which is subject to the limitations of the machine's licensing, 10 connections maximum. Using ASP.NET, when you close the browser, your session (and connection) are still alive, and going to be alive for the next 20-30 minutes (I think), until the session times out on its own. Only then will your connection license be released.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Well...it's written in VB code - that's why I placed the question here.
I am able to run the code, but the only thing that gets out of it is the "testing"-string I put in the body-part. I have only put those strings there to debug the code, so I might find the problem myself...but no luck.
I'm using an XP Pro mashine. And I got this part of the code from another place where it (obviously) works fine.
|
|
|
|
|
hmshmsm wrote:
I am able to run the code, but the only thing that gets out of it is the "testing"-string I put in the body-part. I have only put those strings there to debug the code, so I might find the problem myself...but no luck.
You do realize that the code in the BODY tags is completely commented out?
hmshmsm wrote:
I'm using an XP Pro mashine. And I got this part of the code from another place where it (obviously) works fine.
You haven't answered all of my questions. If the comments in the BODY tags are removed, does the code run at all? Does it run about ten times, then quit? Does it not run at all? Does it work after a fresh reboot of the machine, then you try and run this?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
eh...it runs. But the only thing on the screen afterwards is:
abc
Testing!-
|
|
|
|
|
Yes, the body is commented out. I did that to test if the page is working at all. And as the remaining text in the boypart gets out I assume that the page is working.
|
|
|
|
|
In that case, take out the comments. When you load the page, go to View/Source in IE to see what HTML is being generated. You could also put in your own Response.Write("some message:" & somevariable) in places to see where the code is going and what the important variables are. Then just View/Source again to try and trace what's going on.
But, if you get that error again after running it about 10 times, you've run into the licensed connection limit.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I've tried another page now to test the server side:
This is HTML
<%
'This is Visual Basic code
Response.Write "This is Visual Basic code "
%>
<%
If Request.QueryString("id") = "1" Then
Response.Write "The parameter is equal to 1 " & vbNewLine
Else
Response.Write "The parameter is not equal to 1 " & vbNewLine
End If
%>
and the result of this side is:
"
This is HTML
This is Visual Basic code
The parameter is not equal to 1
"
And when I try to reload the page about 15-20 times it still says the same. So I quess that the server is working alright.
But what can be the matter with the first page then?
|
|
|
|
|
Your not getting it. The problem is not that fact that your getting an ASP page from the server. It is that fact that your page is using the FileSystemObject to connect back to the server (not through HTTP) to get its information. THAT is where you connection problem lies...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
That's probably true....but the FileSystemObject isn't used the right way then....?
|
|
|
|