Prev: ASASAS
Next: Passing an array of strings from VB to C
From: JPB on 22 Jan 2010 20:47 What happens if you change the <> to >? What's the return value that you are getting from InStr? On Jan 22, 7:34 pm, WB <W...(a)discussions.microsoft.com> wrote: > I'm trying to handle multiple exit codes when running an external app in VB6. > InStr doesn't work like I would expect it to. It says "-1" exists in the > string "1 1030", and also says "(-1)" exists in "(1) (1030)": > > ' Hard-coded the return value for this sample code: > strReturnValue = "-1" > strAlternateExitCodes = "1 1030" > If InStr(1, strReturnValue, strAlternateExitCodes) <> 0 Then > ' This says it found "-1" in "1 1030" > End If > > ' With parens: > strReturnValue = Chr(40) & "-1" & Chr(41) > strAlternateExitCodes = "(1) (1030)" > If InStr(1, strReturnValue, strAlternateExitCodes) <> 0 Then > ' This says it found "(-1)" in "(1) (1030)" > End If > > Am I missing something here? Is there a better way? > > -- > Bill Baker
From: DanS on 22 Jan 2010 22:10 Karl E. Peterson <karl(a)exmvps.org> wrote in news:eplR1w8mKHA.5696(a)TK2MSFTNGP04.phx.gbl: > DanS presented the following explanation : >> Karl E. Peterson <karl(a)exmvps.org> wrote in >> news:elxwBa8mKHA.5692(a)TK2MSFTNGP04.phx.gbl: >> >>> WB formulated on Friday : >>>> I'm trying to handle multiple exit codes when running an external >>>> app in VB6. InStr doesn't work like I would expect it to. It says >>>> "-1" exists in the string "1 1030", and also says "(-1)" exists in >>>> "(1) (1030)": >>>> >>>> ' Hard-coded the return value for this sample code: >>>> strReturnValue = "-1" >>>> strAlternateExitCodes = "1 1030" >>>> If InStr(1, strReturnValue, strAlternateExitCodes) <> 0 Then >>>> ' This says it found "-1" in "1 1030" >>>> End If >>>> >>>> ' With parens: >>>> strReturnValue = Chr(40) & "-1" & Chr(41) >>>> strAlternateExitCodes = "(1) (1030)" >>>> If InStr(1, strReturnValue, strAlternateExitCodes) <> 0 Then >>>> ' This says it found "(-1)" in "(1) (1030)" >>>> End If >>>> >>>> Am I missing something here? Is there a better way? >>> >>> I think we need to see some real code, to say for sure. What you >>> posted won't run "as is." Modified to look like this: >>> >>> Public Sub test() >>> Dim strReturnValue As String >>> Dim strAlternateExitCodes As String >>> ' Hard-coded the return value for this sample code: >>> strReturnValue = "-1" >>> strAlternateExitCodes = "1 1030" >>> Debug.Print InStr(1, strReturnValue, strAlternateExitCodes) >>> >>> ' With parens: >>> strReturnValue = Chr(40) & "-1" & Chr(41) >>> strAlternateExitCodes = "(1) (1030)" >>> Debug.Print InStr(1, strReturnValue, strAlternateExitCodes) >>> End Sub >>> >>> I get the expected results: >>> >>> 0 >>> 0 >>> >> >> Of course Karl....... >> >> .......you will *never* find the string "(1) (1030)" contained within >> the string "-1". > > As I said, the *expected* results... <eg> Yes, that is what you said, and that is in fact correct. Touche'.
From: WB on 26 Jan 2010 19:40
Sorry, this was a combination of the reversed InStr parameters that DanS mentioned, and also a logic error on my part. Thanks DanS (and everyone else). -- Bill Baker "DanS" wrote: > =?Utf-8?B?V0I=?= <WB(a)discussions.microsoft.com> wrote in > news:A967A23F-6FFD-4964-8C3C-C952174FCA1F(a)microsoft.com: > > > I'm trying to handle multiple exit codes when running an external app > > in VB6. InStr doesn't work like I would expect it to. It says "-1" > > exists in the string "1 1030", and also says "(-1)" exists in "(1) > > (1030)": > > > > ' Hard-coded the return value for this sample code: > > strReturnValue = "-1" > > strAlternateExitCodes = "1 1030" > > If InStr(1, strReturnValue, strAlternateExitCodes) <> 0 Then > > ' This says it found "-1" in "1 1030" > > End If > > > > ' With parens: > > strReturnValue = Chr(40) & "-1" & Chr(41) > > strAlternateExitCodes = "(1) (1030)" > > If InStr(1, strReturnValue, strAlternateExitCodes) <> 0 Then > > ' This says it found "(-1)" in "(1) (1030)" > > End If > > > > Am I missing something here? Is there a better way? > > Putting this in a command button procedure never says it found it. > > You've got the order of the strings wrong, but neither way said it found > it. It's......Instr(1,[StringToSearch],[FindThisString] > > Private Sub Command1_Click() > > Dim strReturnValue As String > Dim strAlternateExitCodes As String > ' Hard-coded the return value for this sample code: > strReturnValue = "-1" > strAlternateExitCodes = "1 1030" > If InStr(1, strReturnValue, strAlternateExitCodes) <> 0 Then > Debug.Print "-1 found" > ' This says it found "-1" in "1 1030" > End If > > End Sub > > Possibly your hard-coded value shown here as "-1" is *not* "-1" in the > production code ? > . > |