Home All Groups Group Topic Archive Search About

2 pieces of the same code doing different things

Author
31 Jul 2006 3:12 AM
iwdu15
hi, i have these 2 code snippets:

  Public Sub ImRec(ByVal IM As IAccIm, ByVal Sender As IAccUser)

        Dim str As String = IM.GetConvertedText(DECODE)

               Dim temp As String = str

            temp = temp.Remove(temp.IndexOf("<body>"), 6)
            temp = temp.Remove(temp.IndexOf("</body>"), 7)

            Me.webRecv.DocumentText += "<br>" & str

    End Sub

and

    Private Sub s_OnImReceived(ByVal session As AccCoreLib.AccSession, ByVal
imSession As AccCoreLib.IAccImSession, ByVal sender As
AccCoreLib.IAccParticipant, ByVal im As AccCoreLib.IAccIm) Handles
s.OnImReceived

        Dim str As String = im.GetConvertedText(decode)

        str = str.Remove(str.IndexOf("<body>"), 6)
        str = str.Remove(str.IndexOf("</body>"), 7)

        Me.webrecv.DocumentText += "<br>" & str

    End Sub


the bottom snippet works, the top one doesnt. the only thing different is
that the bottom one works directly in the event while the other snippet works
from a method called from that event.....all my objects and variables have a
value, these values are correct (after debugging it under every surcumstance
imaginable) i cant get the top snippet to work. im just curious why two
pieces of the same code dont work the same.....im using VB 2005 btw....ive
contacted the manufacturer of the SDK this is in to see if its a problem
there, so im also asking here to see if its something with my
code.....shouldnt these two snippets work the same? what am i missing? thanks

--
-iwdu15

Author
31 Jul 2006 9:00 AM
tommaso.gastaldi
in the first one you are not using temp:

            Me.webRecv.DocumentText += "<br>" & temp


-tom

iwdu15 ha scritto:

Show quoteHide quote
> hi, i have these 2 code snippets:
>
>   Public Sub ImRec(ByVal IM As IAccIm, ByVal Sender As IAccUser)
>
>         Dim str As String = IM.GetConvertedText(DECODE)
>
>                Dim temp As String = str
>
>             temp = temp.Remove(temp.IndexOf("<body>"), 6)
>             temp = temp.Remove(temp.IndexOf("</body>"), 7)
>
>             Me.webRecv.DocumentText += "<br>" & str
>
>     End Sub
>
> and
>
>     Private Sub s_OnImReceived(ByVal session As AccCoreLib.AccSession, ByVal
> imSession As AccCoreLib.IAccImSession, ByVal sender As
> AccCoreLib.IAccParticipant, ByVal im As AccCoreLib.IAccIm) Handles
> s.OnImReceived
>
>         Dim str As String = im.GetConvertedText(decode)
>
>         str = str.Remove(str.IndexOf("<body>"), 6)
>         str = str.Remove(str.IndexOf("</body>"), 7)
>
>         Me.webrecv.DocumentText += "<br>" & str
>
>     End Sub
>
>
> the bottom snippet works, the top one doesnt. the only thing different is
> that the bottom one works directly in the event while the other snippet works
> from a method called from that event.....all my objects and variables have a
> value, these values are correct (after debugging it under every surcumstance
> imaginable) i cant get the top snippet to work. im just curious why two
> pieces of the same code dont work the same.....im using VB 2005 btw....ive
> contacted the manufacturer of the SDK this is in to see if its a problem
> there, so im also asking here to see if its something with my
> code.....shouldnt these two snippets work the same? what am i missing? thanks
>
> --
> -iwdu15
Author
31 Jul 2006 11:42 AM
tomb
Your last line of code in the first piece:

Me.webRecv.DocumentText += "<br>" & str

Shouldn't you be using "temp"?  You haven't done anything with "str".

Tom


iwdu15 wrote:

Show quoteHide quote
>hi, i have these 2 code snippets:
>
>  Public Sub ImRec(ByVal IM As IAccIm, ByVal Sender As IAccUser)
>
>        Dim str As String = IM.GetConvertedText(DECODE)
>
>               Dim temp As String = str
>
>            temp = temp.Remove(temp.IndexOf("<body>"), 6)
>            temp = temp.Remove(temp.IndexOf("</body>"), 7)
>
>            Me.webRecv.DocumentText += "<br>" & str
>
>    End Sub
>
>and
>
>    Private Sub s_OnImReceived(ByVal session As AccCoreLib.AccSession, ByVal
>imSession As AccCoreLib.IAccImSession, ByVal sender As
>AccCoreLib.IAccParticipant, ByVal im As AccCoreLib.IAccIm) Handles
>s.OnImReceived
>
>        Dim str As String = im.GetConvertedText(decode)
>
>        str = str.Remove(str.IndexOf("<body>"), 6)
>        str = str.Remove(str.IndexOf("</body>"), 7)
>
>        Me.webrecv.DocumentText += "<br>" & str
>
>    End Sub
>
>
>the bottom snippet works, the top one doesnt. the only thing different is
>that the bottom one works directly in the event while the other snippet works
>from a method called from that event.....all my objects and variables have a
>value, these values are correct (after debugging it under every surcumstance
>imaginable) i cant get the top snippet to work. im just curious why two
>pieces of the same code dont work the same.....im using VB 2005 btw....ive
>contacted the manufacturer of the SDK this is in to see if its a problem
>there, so im also asking here to see if its something with my
>code.....shouldnt these two snippets work the same? what am i missing? thanks
>

>
Author
31 Jul 2006 12:26 PM
iwdu15
well in the second one i am creating a copy of the variable str and putting
it into temp. this is because later i will add code to manipulate temp and i
want to keep the original. the first one i wasnt planning on doing that. i
have tried it without using the temp variable and it does the same thing
--
-iwdu15
Author
31 Jul 2006 5:43 PM
Terry
Hmmmm.
as it has been pointed out, the 2 snipptes are not the same.  In the first
you apply the 2 remove calls to 'temp' but appent 'str'.  In the second, you
apply the 2 remove calls to 'str' and append 'str'.  Maybe this is just a
typo in the explanation (example) in which case it might help if you were to
explain in detail what 'doesn't work' means.
--
Terry


Show quoteHide quote
"iwdu15" wrote:

> well in the second one i am creating a copy of the variable str and putting
> it into temp. this is because later i will add code to manipulate temp and i
> want to keep the original. the first one i wasnt planning on doing that. i
> have tried it without using the temp variable and it does the same thing
> --
> -iwdu15
Author
31 Jul 2006 6:47 PM
iwdu15
sure, il explain. the first snippet is from one app where an event calls the
method, passing in all needed variables. i create an exact copy of the
variable which contains the text i want to add to the WebBrowser document.
Later i will add code to add in a username and Time received to the Temporary
variable, this is why i do that. So now i have two variables which are
exactly trhe same, str and temp. i remove the "<body>" tags so the text will
line up with the left side of the WebBrowser control and not be floating
around the middle. then i attempt to add the text to the WebBrowser.
occaisionally it will add the very first thing i pass it, but after that
nothing. The html is correct, i have triple checked it. what ends up almost
always happening is when it hits this line:

Me.webRecv.DocumentText += "<br>" & str

in the first code snippet, it goes over it like it does the code, but the
text is never added to the webbrowser. no error, nothing. I have changed it
to 

Me.webRecv.DocumentText += "<br>" & temp

but still nothing. now to the second snippet.

the second snippet is in a different application (and yes i have tried
putting my code in a new project, i have also tried completely recoding my
project but the first part of code still doesnt work). in this app, the code
is added directly from the event that is raised. the HTML code is exactly the
same as the first code snippets, but this time it is added to the WebBrowser
perfectly fine. The text shows up exactly how its supposed to.

in the first snippet, i am creating a copy and removing the body tags then
attempting to add it and it doesnt work, in the second one i cut the body
tags out of the first variable and add it to the WebBrowser and it works
perfectly. Would this be an issue? hope this makes a little more sense
now....thanks for your help
--
-iwdu15
Author
31 Jul 2006 8:16 PM
tommaso.gastaldi
Place a break on the line

Me.webRecv.DocumentText += "<br>" & temp

to see if it is executed at all.

-t
iwdu15 ha scritto:

Show quoteHide quote
> sure, il explain. the first snippet is from one app where an event calls the
> method, passing in all needed variables. i create an exact copy of the
> variable which contains the text i want to add to the WebBrowser document.
> Later i will add code to add in a username and Time received to the Temporary
> variable, this is why i do that. So now i have two variables which are
> exactly trhe same, str and temp. i remove the "<body>" tags so the text will
> line up with the left side of the WebBrowser control and not be floating
> around the middle. then i attempt to add the text to the WebBrowser.
> occaisionally it will add the very first thing i pass it, but after that
> nothing. The html is correct, i have triple checked it. what ends up almost
> always happening is when it hits this line:
>
>  Me.webRecv.DocumentText += "<br>" & str
>
> in the first code snippet, it goes over it like it does the code, but the
> text is never added to the webbrowser. no error, nothing. I have changed it
> to
>
>  Me.webRecv.DocumentText += "<br>" & temp
>
> but still nothing. now to the second snippet.
>
> the second snippet is in a different application (and yes i have tried
> putting my code in a new project, i have also tried completely recoding my
> project but the first part of code still doesnt work). in this app, the code
> is added directly from the event that is raised. the HTML code is exactly the
> same as the first code snippets, but this time it is added to the WebBrowser
> perfectly fine. The text shows up exactly how its supposed to.
>
> in the first snippet, i am creating a copy and removing the body tags then
> attempting to add it and it doesnt work, in the second one i cut the body
> tags out of the first variable and add it to the WebBrowser and it works
> perfectly. Would this be an issue? hope this makes a little more sense
> now....thanks for your help
> --
> -iwdu15
Author
31 Jul 2006 8:40 PM
iwdu15
it is executed, all variables have values, all variables have correct
values....everything should work but it doesnt
--
-iwdu15
Author
31 Jul 2006 11:36 PM
Terry
Ok, lets back up for a minute.  Do both methods work when placed directly in
the event?  Do both methods fail when placed in a called sub?
--
Terry


Show quoteHide quote
"iwdu15" wrote:

> it is executed, all variables have values, all variables have correct
> values....everything should work but it doesnt
> --
> -iwdu15
Author
1 Aug 2006 12:41 AM
iwdu15
no, the first one still does not work when placed in the event and the second
snippet still works when placed in a separate method and called from the event
--
-iwdu15
Author
1 Aug 2006 1:51 AM
Terry
Well you got me stumped!  Is option strict on?  I think that if I was you, I
would use ILDASM for the two snippits and see if I could spot what was
happening.

--
Terry


Show quoteHide quote
"iwdu15" wrote:

> no, the first one still does not work when placed in the event and the second
> snippet still works when placed in a separate method and called from the event
> --
> -iwdu15
Author
1 Aug 2006 2:38 AM
iwdu15
whats ILDASM? how would this help with my....unusual problem?
--
-iwdu15
Author
1 Aug 2006 1:47 PM
Chris Dunaway
ILDASM is the IL DisASseMbler.  It shows the IL code emitted by the
compiler.

Can you post a short but complete sample that demonstrates the problem?

iwdu15 wrote:
Show quoteHide quote
> whats ILDASM? how would this help with my....unusual problem?
> --
> -iwdu15
Author
1 Aug 2006 3:46 PM
iwdu15
my first post has everything thats involved in this....il try to fully
explain my situation..

im creating an AIM Custom Client using the SDK that AOL kindly provided.
When an IM is received, the event OnImReceived is fired. In one app (which is
very very basic) handles the IM and and enters the text into the WebBrowser
control (the AIM network formats text in an HTML like formatting, so i
figured this control would be best). this works fine, the text is added with
no difficulty. However, in my more complete application, the IM is received
in the same event in the same exact way. however, instead of beign added to a
control right away, the object is passed to the form that shows the Instant
Messages. this form then passes this same variable to a user control i made.
the object is not changed or even accessed in any way until it reaches my
custom control, where then my first snippet method is called. hope this helps
understand whats going on

i have copied and pasted the code form the working one to the not working
one and it still wont work....i have no idea whats going on here.....when i
get home il check the ILDASM stuff, but (Chris and anyone that was wondering)
i hope this helps in some way....
--
-iwdu15
Author
1 Aug 2006 9:36 PM
iwdu15
heres the ILDASM for setting the text

Broken App:

IL_00cc:  callvirt   instance class
[System.Windows.Forms]System.Windows.Forms.WebBrowser
AimCC.ctrlIM::get_webRecv()
  IL_00d1:  stloc.s    VB$t_ref$S0
  IL_00d3:  ldloc.s    VB$t_ref$S0
  IL_00d5:  ldloc.s    VB$t_ref$S0
  IL_00d7:  callvirt   instance string
[System.Windows.Forms]System.Windows.Forms.WebBrowser::get_DocumentText()
  IL_00dc:  ldstr      "<br>"
  IL_00e1:  ldloc.0
  IL_00e2:  call       string [mscorlib]System.String::Concat(string,
                                                              string,
                                                              string)
  IL_00e7:  callvirt   instance void
[System.Windows.Forms]System.Windows.Forms.WebBrowser::set_DocumentText(string)



working app:

IL_0054:  callvirt   instance class
[System.Windows.Forms]System.Windows.Forms.WebBrowser
WindowsApplication1.Form1::get_webrecv()
  IL_0059:  stloc.1
  IL_005a:  ldloc.1
  IL_005b:  ldloc.1
  IL_005c:  callvirt   instance string
[System.Windows.Forms]System.Windows.Forms.WebBrowser::get_DocumentText()
  IL_0061:  ldstr      "<br>"
  IL_0066:  ldloc.0
  IL_0067:  call       string [mscorlib]System.String::Concat(string,
                                                              string,
                                                              string)
  IL_006c:  callvirt   instance void
[System.Windows.Forms]System.Windows.Forms.WebBrowser::set_DocumentText(string)




the only difference seems to be this:

  IL_00d1:  stloc.s    VB$t_ref$S0
  IL_00d3:  ldloc.s    VB$t_ref$S0
  IL_00d5:  ldloc.s    VB$t_ref$S0


any ideas?

--
-iwdu15
Author
2 Aug 2006 1:29 PM
Chris Dunaway
iwdu15 wrote:
> my first post has everything thats involved in this....il try to fully
> explain my situation..
>

Yes, but your first post has a bug:

> Public Sub ImRec(ByVal IM As IAccIm, ByVal Sender As IAccUser)
>
>        Dim str As String = IM.GetConvertedText(DECODE)

Here you get a string

>
>            Dim temp As String = str
>

You assign the string to a temp variable

>            temp = temp.Remove(temp.IndexOf("<body>"), 6)
>            temp = temp.Remove(temp.IndexOf("</body>"), 7)
>

You manipulate the temp variable...

>            Me.webRecv.DocumentText += "<br>" & str
>
>    End Sub

But then you assign the original string back to DocumentText!!  You
should assign the temp variable back like this:

              Me.webRecv.DocumentText += "<br>" & temp