Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [VB6] Formattazione stringhe: otiimizzare una fuzione

    codice:
    Private Function formatNumStringa(prms_Input As String, prml_NumChar As Long, _
        Optional prms_FormatChar As String = "0") As String
    
    '###############################################################################
    '# Parametri:                                                                  #
    '#     prms_Input: Stringa da formattare                                       #
    '#     prml_NumChar: Numero dei caratteri per i quali formattare               #
    '#     prms_FormatChar: Carattere usato per formattare                         #
    '# Valore restituito:                                                          #
    '#     stringa che formatta i numeri in maniera che siano sia numericamente    #
    '#     che alfabeticamente ordinati                                            #
    '#   "10 - Padova Arcella" -> "0000000010 - Padova Arcella                     #
    '###############################################################################
    
    Dim a() As String
    Dim i As Integer
    Dim ls_temp As String
    Dim ls_Str000 As String
    Dim ll_numericiconsecutivi As Long
    
        ls_Str000 = String$(prml_NumChar, prms_FormatChar)
        ReDim a(0 To Len(prms_Input) + 1)
        
        For i = UBound(a) - 1 To LBound(a) + 1 Step -1
            a(i) = Mid$(prms_Input, i, 1)
            If IsNumeric(a(i)) Then
                ls_temp = a(i) * (10 ^ ll_numericiconsecutivi)
                ll_numericiconsecutivi = ll_numericiconsecutivi + 1
                a(i) = Format$(Val(ls_temp) + Val(a(i + 1)), ls_Str000)
                If (Val(a(i + 1))) > 0 Then
                    a(i + 1) = ""
                End If
                If Replace(a(i + 1), prms_FormatChar, vbNullChar) = String$(prml_NumChar, vbNullChar) Then
                    a(i + 1) = ""
                End If
            Else
                ll_numericiconsecutivi = 0
            End If
        Next i
        For i = LBound(a) + 1 To UBound(a)
            formatNumStringa = formatNumStringa + a(i)
        Next i
    End Function

    in pratica voglio evitare di fare il secondo ciclo devo trovare il modo di farne uno solo
    p.s.:
    non è detto che il numero sia in testa alla stringa può essere in mezzo o alla fine
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  2. #2
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    A parte che non ho capito bene cosa fa' questa funzione, ho notato chese passi un valore diverso da 0 per l'ultimo parametro, fa' qualche casino (sostituisce i valori numerici all'interno della stringa con il valore del parametro)
    ...and I miss you...like the deserts miss the rain...

  3. #3
    vabbè togliamo il paramteo opzionale deve essere "0"

    io voglio che da una stringa così: "10 - padova 12 arcella15"
    diventi così: "0000000010 - padova 0000000012 arcella0000000015"
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  4. #4
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    ah, ora ho capito
    ...and I miss you...like the deserts miss the rain...

  5. #5
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    cosi' ti puo' andare bene?
    codice:
    Private Function formatNumStringa(prms_Input As String, prml_NumChar As Long, _
        Optional prms_FormatChar As String = "0") As String
    
     '#######################################
    
    '# Parametri:                                                                  #
    '#     prms_Input: Stringa da formattare                                       #
    '#     prml_NumChar: Numero dei caratteri per i quali formattare               #
    '#     prms_FormatChar: Carattere usato per formattare                         #
    '# Valore restituito:                                                          #
    '#     stringa che formatta i numeri in maniera che siano sia numericamente    #
    '#     che alfabeticamente ordinati                                            #
    '#   "10 - Padova Arcella" -> "0000000010 - Padova Arcella                     #
     '#######################################
    
    
    Dim i As Integer
    Dim ls_temp As String
    Dim ls_Str000 As String
    Dim strDummy    As String
    
        ls_Str000 = String$(prml_NumChar, prms_FormatChar)
        For i = 1 To Len(prms_Input)
            If IsNumeric(Mid$(prms_Input, i, 1)) Then
                ls_temp = ls_temp + Trim(Mid$(prms_Input, i, 1))
            Else
                If ls_temp <> "" Then
                    strDummy = strDummy + formatNumStringa + Right(ls_Str000 + ls_temp, Len(ls_Str000))
                    formatNumStringa = ""
                    ls_temp = ""
                End If
                formatNumStringa = formatNumStringa + Mid$(prms_Input, i, 1)
            End If
        Next i
        formatNumStringa = strDummy + formatNumStringa + Right(ls_Str000 + ls_temp, Len(ls_Str000))
    End Function
    ...and I miss you...like the deserts miss the rain...

  6. #6
    perfetto
    grazie
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  7. #7
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    Originariamente inviato da xegallo
    perfetto
    grazie
    ...and I miss you...like the deserts miss the rain...

  8. #8
    Originariamente inviato da vonkranz
    rettifico mica tanto bene
    alla fine se non finisce con un numero mi lascia della porcheria
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  9. #9
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    Originariamente inviato da xegallo
    rettifico mica tanto bene
    alla fine se non finisce con un numero mi lascia della porcheria
    ...ops...

    modifica

    codice:
    formatNumStringa = strDummy + formatNumStringa + Right(ls_Str000 + ls_temp, Len(ls_Str000))
    con

    codice:
    formatNumStringa = strDummy + formatNumStringa + IIf(ls_temp <> "", Right(ls_Str000 + ls_temp, Len(ls_Str000)), "")
    ...pardon...
    ...and I miss you...like the deserts miss the rain...

  10. #10
    vabbè bastava mettere un if alla fine per valutare se l'ultimo è numerico
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.