+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

rileva caratteri nelle parole o frasi

  1. #1
    Marchino89 non  in linea Scolaretto
    Post
    80
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao a tutti, volevo sapere se era possibile in una parola o frase rilevare un determinato carattere, ad esempio se io scrivo 'C:\Documents and settings\Marco\File1.txt' posso con vb6 partendo da destra della parola eliminare tutto cio che prima del carattere ''\''? cioe dovrebbe rimanere solo 'File1.txt'... Nel caso si possa, si pou fare la stessa cosa, pero partendo dal secondo? cioe fare in modo che rimanga 'Marco\file1.txt'. Grazie a tutti!

  2. #2
    L'avatar di gibra
    gibra non  in linea Very Important Person
    Post
    6,239
    Like Inviati  
    21
    Like Ricevuti  
    11
    Quote Originariamente inviato da Marchino89 Visualizza il messaggio
    Ciao a tutti, volevo sapere se era possibile in una parola o frase rilevare un determinato carattere, ad esempio se io scrivo 'C:\Documents and settings\Marco\File1.txt' posso con vb6 partendo da destra della parola eliminare tutto cio che prima del carattere ''\''? cioe dovrebbe rimanere solo 'File1.txt'... Nel caso si possa, si pou fare la stessa cosa, pero partendo dal secondo? cioe fare in modo che rimanga 'Marco\file1.txt'. Grazie a tutti!
    Guarda sulla guida la funzione InStrRev

    Ciao
    ℹ️ Leggi di pi su gibra ...

  3. #3
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Post
    16,830
    Like Inviati  
    0
    Like Ricevuti  
    25
    Quote Originariamente inviato da Marchino89 Visualizza il messaggio
    Ciao a tutti, volevo sapere se era possibile in una parola o frase rilevare un determinato carattere, ad esempio se io scrivo 'C:\Documents and settings\Marco\File1.txt' posso con vb6 partendo da destra della parola eliminare tutto cio che prima del carattere ''\''? cioe dovrebbe rimanere solo 'File1.txt'... Nel caso si possa, si pou fare la stessa cosa, pero partendo dal secondo? cioe fare in modo che rimanga 'Marco\file1.txt'. Grazie a tutti!
    Ci sono le funzioni Stringa ben documentate nell'Help...
    Nel tuo caso vedi INSTRREV:
    Function InStrRev(StringCheck As String, _
              StringMatch As String, [Start As Long = -1], _
              [Compare As VbCompareMethod = vbBinaryCompare]) As Long
        Membro di VBA.Strings
        Returns the position of the last occurrence of one string within another
    
    ℹ️ Leggi di pi su @Alex ...

  4. #4
    L'avatar di dolcissimo
    dolcissimo non  in linea Scribacchino
    Post
    1,267
    Like Inviati  
    0
    Like Ricevuti  
    0
    Oppure puoi provare con uno Split
    hai solo da segliere...
    ℹ️ Leggi di pi su dolcissimo ...

  5. #5
    Post
    10
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao!

    Ecco una possibile soluzione (funzionante!)
    Ho aperto una label sul form per vedere l'output
    poi nella sub del form1_load scrivi

    Dim nome1, nome2 As String
    nome1 = "C:\Documents and settings\Marco\File1.txt"
    Dim pt1, pt2 As Integer
    
    pt1 = 1
    pt2 = InStr(pt1, nome1, Chr(92))
    nome2 = Mid(nome1, pt1, pt2 - pt1)
    
    pt1 = pt2 + 1
    pt2 = InStr(pt1, nome1, Chr(92))
    nome2 = Mid(nome1, pt1, pt2 - pt1)
    
    pt1 = pt2 + 1
    pt2 = InStr(pt1, nome1, Chr(92))
    nome2 = Mid(nome1, pt1, Len(nome1) + 1 - pt1)
    
    Label1.Text = nome2
    
    marco\file1.txt compare su label1 nel form1

    I primi due modulini mettono in nome2 rispettivamente "c:"
    e "document and settings"

    il terzo modulino mette in nome2 due marco\file1.txt

    il chr(92) il codice asci della "\"

    La logica in se non semplicissima

    nel primo modulo la instr inserisce in pt2 la distanza tra il primo caratter (pt1=1) e la "\" pi vicina all'interno di nome1 (si viaggia da sinistra verso destra.
    Poi la mid inserisce in nome2 il contenuto che parte da pt1 ed lungo pt2

    La stessa cosa il secondo modulo solo che avendo caricato pt1=pt2+1 va aprendere il secondo blocco

    nell'ultimo modulo la mid mette in mome2 quello che rimane di nome1 a partire da pt1

    So che un p complesso ma funziona!
    Comunque secondo me non era un problema tanto semplice!

    PS: nell'utimo modulo
    pt2 = InStr(pt1, nome1, Chr(92))
    
    inutile ma potrebbe diventarlo in altri casi in cui pt2=0
    (se vuoi leggere un file con separatori, l'utimo campo quello con pt2=0 e puoi usare un ciclo per leggere i campi fino a che non trovi pt2=0 poi usi la len e aquisisci l'utimo campo)
    Ultima modifica di TheTruster; 19-09-2008 07:03  Motivo: Mancato utilizzo dei tag [CODE][/CODE]

  6. #6
    L'avatar di dolcissimo
    dolcissimo non  in linea Scribacchino
    Post
    1,267
    Like Inviati  
    0
    Like Ricevuti  
    0
    Salve a tutti, a mio avviso la soluzione migliore al tuo problema potrebbe essere questa:
    Dim sDaDividere() As String
    Dim sTotale As String
    Dim sFirst, sSecond As String
    Dim I As Integer
    
    sTotale = "C:\Documents and settings\Marco\File1.txt"
    
    sDaDividere = Split(sTotale, "\")
    
    For I = 0 To UBound(sDaDividere)
        Debug.Print sDaDividere(I)
    Next I
    
    facci sapere qualcosa.
    spero che sia quello che cercavi.
    ℹ️ Leggi di pi su dolcissimo ...

  7. #7
    Marchino89 non  in linea Scolaretto
    Post
    80
    Like Inviati  
    0
    Like Ricevuti  
    0
    ok l'ultimo messaggio di dolcissimo funziona, pero mi elimina tutto cio che viene prima di file1.txt, ora pero come faccio a tenere fino a Marco\File1.txt...?

  8. #8
    Post
    10
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao Marco!

    A me sembra che il programmino che ti ho scritto funzioni e l'ho ricontrollato per sicurezza

    forse devi definire separatamente le variabili nome1 e nome2 as econda della versione di visual basic che stai usando
    comunque ti ho riportato per sicurezza tutto il codice del form1 su cui ho aperto una label (label1)


     
    Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
    'ho definito le due variabili separatamente
    Dim nome1 As String
    Dim nome2 As String
     
    nome1 = "C:\Documents and settings\Marco\File1.txt"
    Dim pt1, pt2 As Integer
     
    pt1 = 1
    pt2 = InStr(pt1, nome1, Chr(92))
    nome2 = Mid(nome1, pt1, pt2 - pt1)
     
    pt1 = pt2 + 1
    pt2 = InStr(pt1, nome1, Chr(92))
    nome2 = Mid(nome1, pt1, pt2 - pt1)
     
    pt1 = pt2 + 1
    pt2 = InStr(pt1, nome1, Chr(92))
    nome2 = Mid(nome1, pt1, Len(nome1) + 1 - pt1)
     
    Label1.Text = nome2
     
    'oppure in output sulla finestra di controllo immediato come suggerisce dolcissimo
    Debug.Print(nome2)
     
    End Sub
    End Class
    

  9. #9
    Post
    10
    Like Inviati  
    0
    Like Ricevuti  
    0
    Salve ancora!

    Questa la versione generalizzata del programma che vale indipendentemente dalla lunghezza del percorso

     
    Dim nome1 As String
    Dim nome2 As String
    Dim nomefin As String
    Dim pt1, pt2, x As Short
    nome1 = "c:\pippo\pluto\paperino\minni\zio paperone\qui\quo\qua\marco.txt"
    pt1 = 1
     
    Do
    x = x + 1
    pt2 = InStr(pt1, nome1, Chr(92))
    If pt2 = 0 Then Exit Do
    nome2 = Mid(nome1, pt1, pt2 - pt1)
    pt1 = pt2 + 1
    Loop
     
    nomefin = Mid(nome1, pt1, Len(nome1) + 1 - pt1)
    x = 0
    Label1.Text = nome2 + "\" + nomefin
    Debug.Print(nome2 + "\" + nomefin)
    

  10. #10
    L'avatar di spikexx84
    spikexx84 non  in linea Scribacchino
    Post
    1,164
    Like Inviati  
    0
    Like Ricevuti  
    0
    Scusate, io stamattina ho la febbre quindi potrei scrivere baggianate, ma mi sorge un dubbio, a cosa vi serve un ciclo?

    Private Sub Elabora(ByVal s_stringa As String, ByRef s_stringaNessunSlash As String, ByRef s_stringaUnSlash As String)
     
        'Calcolo il nome file senza nessun slash
        s_stringaNessunSlash = Right(s_stringa, Len(s_stringa) - InStrRev(s_stringa, "\"))
        'rimuovo il nome file e l'ultimo slash
        s_stringa = Left(s_stringa, Len(s_stringa) - (Len(s_stringaNessunSlash) + 1))
        'Calcolo il nome file con uno slash
        s_stringaUnSlash = Right(s_stringa, Len(s_stringa) - InStrRev(s_stringa, "\")) & "\" & s_stringaNessunSlash
     
    End Sub
    
    Per provarla sufficente far cos:

     
        Dim s_stringaNessunSlash As String
        Dim s_stringaUnSlash As String
     
        Elabora "c:\pippo\pluto\paperino\minni\zio paperone\qui\quo\qua\marco.txt", s_stringaNessunSlash, s_stringaUnSlash
     
        MsgBox s_stringaNessunSlash
        MsgBox s_stringaUnSlash
    
    Sbaglio? C' qualcosa che mi sfugge? Ripeto potrebbe anche darsi visto che stamattina non sono in posseso di tutte le mie facolt mentali....




    Edit:

    Un ultima cosa non avevo notato, attenzione scrivere
    Dim pt1, pt2, x As Short
    
    Ecquivale a:
    Dim pt1 As Variant
    Dim pt2 As Variant
    Dim x As Short
    
    Bisogna scrivere

    Dim pt1 As Short
    Dim pt2 As Short
    Dim x As Short
    
    Oppure

    Dim pt1 As Short, pt2 As Short, x As Short
    
    Magari avete scritto cos solo perch era un esempio, ma io finche non l'ho letto sul forum non lo sapevo quindi ho preferito scriverlo....
    Ultima modifica di spikexx84; 15-10-2008 10:10 

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Impedire l'inserimento di caratteri jolly nelle textbox
    Da ArmandoVBA nel forum Microsoft Access
    Risposte: 9
    Ultimo Post: 12-10-2015, 15:13
  2. Risposte: 4
    Ultimo Post: 18-11-2010, 15:25
  3. Risposte: 4
    Ultimo Post: 28-04-2009, 13:08
  4. il masterizzatore non rileva cd/dvd vergi
    Da PINO1 nel forum Microsoft Windows
    Risposte: 31
    Ultimo Post: 27-03-2005, 19:31
  5. non mi rileva l’hardisk
    Da floriana nel forum Microsoft Windows
    Risposte: 2
    Ultimo Post: 22-11-2004, 09:32