Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Other Discussions
  3. The Weird and The Wonderful
  4. Why? Just why?

Why? Just why?

Scheduled Pinned Locked Moved The Weird and The Wonderful
helpquestioncareer
27 Posts 14 Posters 4 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Nagy Vilmos

    I know, lets keep re-comparing strings as it's cheap and easy. Thank you VB6; the gift that keeps on giving.

    Public Function sConvertCase(sInString, lType As VbStrConv) As String
    Dim sReturn As String
    Dim lPos As Long
    Dim lStart As Long
    Dim lNext As Long
    On Local Error Resume Next
    sReturn = StrConv(sInString, lType)
    If lType = vbProperCase Then
    'check for This-That, O'Sumin ,McSumin, von Sumin, MacName (must be input as MacN...)
    lPos = 0
    Do
    lStart = lPos + 1
    lPos = InStr(lStart, sReturn, "Mc")
    lNext = InStr(lStart, sReturn, "Mac")
    If lNext > 0 And (lNext < lPos Or lPos = 0) Then
    lPos = lNext
    End If
    lNext = InStr(lStart, sReturn, "O'")
    If lNext > 0 And (lNext < lPos Or lPos = 0) Then
    lPos = lNext
    End If
    lNext = InStr(lStart, sReturn, "Von ")
    If lNext > 0 And (lNext < lPos Or lPos = 0) Then
    lPos = lNext
    End If
    lNext = InStr(lStart, sReturn, "-")
    If lNext > 0 And lNext < lPos Or lPos = 0 Then
    lPos = lNext
    End If

            If lPos = 0 Then
            ElseIf Mid$(sReturn, lPos, 1) = "-" Then
                Mid$(sReturn, lPos + 1, 1) = UCase$(Mid$(sReturn, lPos + 1, 1))
            ElseIf Mid$(sReturn, lPos, 2) = "Mc" Then
                Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 1))
            ElseIf Mid$(sReturn, lPos, 3) = "Mac" Then
                If Mid$(sInString, lPos, 3) = "Mac" And Mid$(sInString, lPos + 3, 1) = UCase$(Mid$(sInString, lPos, 3)) Then
                    Mid$(sReturn, lPos + 3, 1) = UCase$(Mid$(sReturn, lPos + 3, 1))
                End If
            ElseIf Mid$(sReturn, lPos, 2) = "O'" Then
                Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 2))
            ElseIf Mid$(sReturn, lPos, 4) = "Von " Then
                Mid$(sReturn, lPos, 1) = "v"
            End If
        Loop While lPos > 0
    End If
    

    Done:
    sConvertCase = sReturn
    End Function

    B Offline
    B Offline
    Bernhard Hiller
    wrote on last edited by
    #13

    Well, you have to run that code at the speed of MacH 2.

    1 Reply Last reply
    0
    • B BobJanova

      MacAskill and (definitely) MacNamara look like they are real Macs. This kind of code just implies your input and/or requirements are crap, though. People should be trusted to type their own name as they want it.

      C Offline
      C Offline
      Chris Quinn
      wrote on last edited by
      #14

      I have a Scottish friend called Macaskill who definitely does not capitalise internally, and the others were ascertained by looking through the telephone directories of several major British cities, though I think Macnamara[^] is a special special case - some capitalise and some don't

      ========================================================= I'm an optoholic - my glass is always half full of vodka. =========================================================

      1 Reply Last reply
      0
      • N Nagy Vilmos

        I know, lets keep re-comparing strings as it's cheap and easy. Thank you VB6; the gift that keeps on giving.

        Public Function sConvertCase(sInString, lType As VbStrConv) As String
        Dim sReturn As String
        Dim lPos As Long
        Dim lStart As Long
        Dim lNext As Long
        On Local Error Resume Next
        sReturn = StrConv(sInString, lType)
        If lType = vbProperCase Then
        'check for This-That, O'Sumin ,McSumin, von Sumin, MacName (must be input as MacN...)
        lPos = 0
        Do
        lStart = lPos + 1
        lPos = InStr(lStart, sReturn, "Mc")
        lNext = InStr(lStart, sReturn, "Mac")
        If lNext > 0 And (lNext < lPos Or lPos = 0) Then
        lPos = lNext
        End If
        lNext = InStr(lStart, sReturn, "O'")
        If lNext > 0 And (lNext < lPos Or lPos = 0) Then
        lPos = lNext
        End If
        lNext = InStr(lStart, sReturn, "Von ")
        If lNext > 0 And (lNext < lPos Or lPos = 0) Then
        lPos = lNext
        End If
        lNext = InStr(lStart, sReturn, "-")
        If lNext > 0 And lNext < lPos Or lPos = 0 Then
        lPos = lNext
        End If

                If lPos = 0 Then
                ElseIf Mid$(sReturn, lPos, 1) = "-" Then
                    Mid$(sReturn, lPos + 1, 1) = UCase$(Mid$(sReturn, lPos + 1, 1))
                ElseIf Mid$(sReturn, lPos, 2) = "Mc" Then
                    Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 1))
                ElseIf Mid$(sReturn, lPos, 3) = "Mac" Then
                    If Mid$(sInString, lPos, 3) = "Mac" And Mid$(sInString, lPos + 3, 1) = UCase$(Mid$(sInString, lPos, 3)) Then
                        Mid$(sReturn, lPos + 3, 1) = UCase$(Mid$(sReturn, lPos + 3, 1))
                    End If
                ElseIf Mid$(sReturn, lPos, 2) = "O'" Then
                    Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 2))
                ElseIf Mid$(sReturn, lPos, 4) = "Von " Then
                    Mid$(sReturn, lPos, 1) = "v"
                End If
            Loop While lPos > 0
        End If
        

        Done:
        sConvertCase = sReturn
        End Function

        D Offline
        D Offline
        Dave Kreskowiak
        wrote on last edited by
        #15

        You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

        A guide to posting questions on CodeProject

        How to debug small programs
        Dave Kreskowiak

        N B Z C B 6 Replies Last reply
        0
        • D Dave Kreskowiak

          You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

          A guide to posting questions on CodeProject

          How to debug small programs
          Dave Kreskowiak

          N Offline
          N Offline
          Nagy Vilmos
          wrote on last edited by
          #16

          No, that hurt.

          1 Reply Last reply
          0
          • D Dave Kreskowiak

            You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

            A guide to posting questions on CodeProject

            How to debug small programs
            Dave Kreskowiak

            B Offline
            B Offline
            BobJanova
            wrote on last edited by
            #17

            Oh my word.

            1 Reply Last reply
            0
            • D Dave Kreskowiak

              You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

              A guide to posting questions on CodeProject

              How to debug small programs
              Dave Kreskowiak

              Z Offline
              Z Offline
              ZurdoDev
              wrote on last edited by
              #18

              I'm surprised that CP didn't give an "Out of memory exception" when the OP posted that code. Whew!

              There are only 10 types of people in the world, those who understand binary and those who don't.

              1 Reply Last reply
              0
              • D Dave Kreskowiak

                You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

                A guide to posting questions on CodeProject

                How to debug small programs
                Dave Kreskowiak

                C Offline
                C Offline
                Chris Quinn
                wrote on last edited by
                #19

                As I always say, it ain't the tool that is used that's the problem, but the tool that uses it.

                ========================================================= I'm an optoholic - my glass is always half full of vodka. =========================================================

                1 Reply Last reply
                0
                • C Chris Quinn

                  Here's my monkey giblets! I knew I still had it somewhere

                  Function Namecase(ByVal Sourcestring As String) As String
                  Dim ConvertChar As Integer, Jock As Integer
                  Dim StringLength As Integer, loopvar As Integer
                  Dim Newstring As String, Nextchar As String
                  Dim MacPos As Integer, Maclen As Integer, TestMac As String

                  On Error GoTo HandleErr
                  'Lowercase the whole string
                  
                  StringLength = Len(Sourcestring)
                  Sourcestring = LCase$(Sourcestring)
                  
                  For loopvar = 1 To StringLength
                      'loop through the string letter by letter and
                      'Convert the letter to uppercase if it is :-
                  
                      'The First Character in the text box
                      ConvertChar = (loopvar = 1)
                  
                      'or character following space, hypen or apostrophe
                      If Not ConvertChar Then ConvertChar = InStr(" -' ", Mid$(Sourcestring, (loopvar - 1), 1))
                  
                      ''or first character following a Mc for the Scots amongst us
                      '    If Not ConvertChar Then
                      '        If loopvar > 2 Then ConvertChar = (Mid$(SourceString, (loopvar - 2), 2) = "mc")
                      '    End If
                  
                      Nextchar = Mid$(Sourcestring, loopvar, 1)
                      If ConvertChar Then        'Convert character to uppercase if it meets the criteria
                          Nextchar = UCase$(Nextchar)
                      End If
                      Newstring = Newstring & Nextchar        'Concatenate to destination
                  Next loopvar
                  TestMac = "|" & Newstring & "|"
                  MacPos = (InStr("|Machin|Macaskill|Mack|Mackie|Macaly|Macy|Mace|Macari|Macley|Macnamara|Mackay|", TestMac))
                  Jock = (MacPos = 0)
                  If Jock Then
                      MacPos = InStr(Newstring, "Mac")
                      Maclen = Len(Newstring)
                      If MacPos > 0 Then
                          Newstring = left$(Newstring, MacPos + 2) & (UCase$(Mid$(Newstring, MacPos + 3, 1)) & right$(Newstring, (Maclen - (MacPos + 3))))
                      End If
                      MacPos = InStr(Newstring, "Mc")
                      If MacPos > 0 Then
                          Newstring = left$(Newstring, MacPos + 1) & (UCase$(Mid$(Newstring, MacPos + 2, 1)) & right$(Newstring, (Maclen - (MacPos + 2))))
                      End If
                  End If
                  Namecase = Newstring        'return the completed string
                  

                  ExitHere:
                  Exit Function

                  ' Error handling block added by Error Handler Add-In. DO NOT EDIT this block of code.
                  ' Automatic error handler last updated at 09-21-2004 10:35:07   'ErrorHandler:$$D=09-21-2004    'ErrorHandler:$$T=10:35:07
                  

                  HandleErr:
                  Select Case Err.Number
                  Case Else
                  MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritic

                  M Offline
                  M Offline
                  MarkTJohnson
                  wrote on last edited by
                  #20

                  Glad to see it takes care of MacHine

                  1 Reply Last reply
                  0
                  • N Nagy Vilmos

                    I know, lets keep re-comparing strings as it's cheap and easy. Thank you VB6; the gift that keeps on giving.

                    Public Function sConvertCase(sInString, lType As VbStrConv) As String
                    Dim sReturn As String
                    Dim lPos As Long
                    Dim lStart As Long
                    Dim lNext As Long
                    On Local Error Resume Next
                    sReturn = StrConv(sInString, lType)
                    If lType = vbProperCase Then
                    'check for This-That, O'Sumin ,McSumin, von Sumin, MacName (must be input as MacN...)
                    lPos = 0
                    Do
                    lStart = lPos + 1
                    lPos = InStr(lStart, sReturn, "Mc")
                    lNext = InStr(lStart, sReturn, "Mac")
                    If lNext > 0 And (lNext < lPos Or lPos = 0) Then
                    lPos = lNext
                    End If
                    lNext = InStr(lStart, sReturn, "O'")
                    If lNext > 0 And (lNext < lPos Or lPos = 0) Then
                    lPos = lNext
                    End If
                    lNext = InStr(lStart, sReturn, "Von ")
                    If lNext > 0 And (lNext < lPos Or lPos = 0) Then
                    lPos = lNext
                    End If
                    lNext = InStr(lStart, sReturn, "-")
                    If lNext > 0 And lNext < lPos Or lPos = 0 Then
                    lPos = lNext
                    End If

                            If lPos = 0 Then
                            ElseIf Mid$(sReturn, lPos, 1) = "-" Then
                                Mid$(sReturn, lPos + 1, 1) = UCase$(Mid$(sReturn, lPos + 1, 1))
                            ElseIf Mid$(sReturn, lPos, 2) = "Mc" Then
                                Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 1))
                            ElseIf Mid$(sReturn, lPos, 3) = "Mac" Then
                                If Mid$(sInString, lPos, 3) = "Mac" And Mid$(sInString, lPos + 3, 1) = UCase$(Mid$(sInString, lPos, 3)) Then
                                    Mid$(sReturn, lPos + 3, 1) = UCase$(Mid$(sReturn, lPos + 3, 1))
                                End If
                            ElseIf Mid$(sReturn, lPos, 2) = "O'" Then
                                Mid$(sReturn, lPos + 2, 1) = UCase$(Mid$(sReturn, lPos + 2, 2))
                            ElseIf Mid$(sReturn, lPos, 4) = "Von " Then
                                Mid$(sReturn, lPos, 1) = "v"
                            End If
                        Loop While lPos > 0
                    End If
                    

                    Done:
                    sConvertCase = sReturn
                    End Function

                    M Offline
                    M Offline
                    mikepwilson
                    wrote on last edited by
                    #21

                    Holy crap. Here's what you do. Install Strawberry Perl on that machine, and have that function shell out to a perl one-liner. It'll still be more efficient and less dain bramaged.

                    N 1 Reply Last reply
                    0
                    • M mikepwilson

                      Holy crap. Here's what you do. Install Strawberry Perl on that machine, and have that function shell out to a perl one-liner. It'll still be more efficient and less dain bramaged.

                      N Offline
                      N Offline
                      Nagy Vilmos
                      wrote on last edited by
                      #22

                      mikepwilson wrote:

                      Install Strawberry Perl

                      No, I don't think so...

                      mikepwilson wrote:

                      less dain bramaged

                      you were saying? :laugh:

                      M 1 Reply Last reply
                      0
                      • N Nagy Vilmos

                        mikepwilson wrote:

                        Install Strawberry Perl

                        No, I don't think so...

                        mikepwilson wrote:

                        less dain bramaged

                        you were saying? :laugh:

                        M Offline
                        M Offline
                        mikepwilson
                        wrote on last edited by
                        #23

                        I dunno man, consider it. Perl is the language for programmers who have actual work to get done.

                        1 Reply Last reply
                        0
                        • D Dave Kreskowiak

                          You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

                          A guide to posting questions on CodeProject

                          How to debug small programs
                          Dave Kreskowiak

                          B Offline
                          B Offline
                          Brisingr Aerowing
                          wrote on last edited by
                          #24

                          :wtf:

                          What do you get when you cross a joke with a rhetorical question?

                          1 Reply Last reply
                          0
                          • Kornfeld Eliyahu PeterK Kornfeld Eliyahu Peter

                            I can't see how it's connected to VB6 (or any language for that matter)...It's a pure human problem...

                            I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)

                            R Offline
                            R Offline
                            Rob Grainger
                            wrote on last edited by
                            #25

                            Actually string handling in VB6 is particularly dire. The "natural" syntax encourages you to build strings from smaller ones, but the implementation just reallocates. I remember seeing some code building particularly long strings that had exponentially increasing performance time on long input - entirely due to naive string-handling. There are workarounds, but the language has to take some blame here.

                            "If you don't fail at least 90 percent of the time, you're not aiming high enough." Alan Kay.

                            F 1 Reply Last reply
                            0
                            • D Dave Kreskowiak

                              You thought that code was bad?? How about this[^] little gem, written in C#?? I hate hearing crap about VB being the sole domain of horrible code.

                              A guide to posting questions on CodeProject

                              How to debug small programs
                              Dave Kreskowiak

                              R Offline
                              R Offline
                              Rob Grainger
                              wrote on last edited by
                              #26

                              Not the sole domain, but a particularly frequent one due to some bad language design decisions. JavaScript is similarly plagued, and of course one can always create bad code in any language, just some make it the default way of working for many.

                              "If you don't fail at least 90 percent of the time, you're not aiming high enough." Alan Kay.

                              1 Reply Last reply
                              0
                              • R Rob Grainger

                                Actually string handling in VB6 is particularly dire. The "natural" syntax encourages you to build strings from smaller ones, but the implementation just reallocates. I remember seeing some code building particularly long strings that had exponentially increasing performance time on long input - entirely due to naive string-handling. There are workarounds, but the language has to take some blame here.

                                "If you don't fail at least 90 percent of the time, you're not aiming high enough." Alan Kay.

                                F Offline
                                F Offline
                                Fueled By Decaff
                                wrote on last edited by
                                #27

                                Erm, isn't it the same as natural string handling in C#? Yes, I do know you should use a StringBuilder, but a new coder would not necessarily know that.

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • World
                                • Users
                                • Groups