Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB] Dividere le Stringhe

    Ciao a tutti
    Per stampare un testo in un riquadro ben preciso, mi è sorta l'esigenza di mandare a capo il testo dopo un certo numero di caratteri, senza però tagliare la parola, ma andando a cercare lo spazio più vicino. Ad esempio se lo spazio successivo è più distante di 5 caratteri, cercare lo spazio precedente.

    Qualcuno mi può aiutare con il codice che devo scrivere??

    Grazie Mille!!!
    Paperina :-)

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ci sono diverse funzioni che anche usate insieme posso esserti utili:

    SPLIT()
    LENGHT()
    LEFT()
    RIGHT()
    INSTR()
    INSTREV()

  3. #3
    Grazie, Gentilissimo!!

    Solo che putroppo sono ancora alle primissime armi, e non conosco i metodi e non saprei come usarli.

    Potresti aiutarmi in tal senso con il codice?????

    Il codice che uso per ora è questo:



    Sub Stampa_Finale_Uno()

    Printer.Font = Form1.Finale_Tre_RegAttivita_Lista.Font
    Printer.FontSize = 12
    Printer.CurrentX = 1500
    Printer.CurrentY = 8900
    Dim Testo() As String
    Testo = Split(Form1.Finale_Uno_Risultato_Testo.Text, vbCrLf)
    For I = 1 To 4
    Printer.CurrentX = 1500
    Printer.Print Testo(I)
    Next I
    Printer.EndDoc

    End Sub



    Solo che la stampa del testo raggiunge il margine destro del foglio e questo mi crea problemi. Vorrei limitarlo a massimo 4 CM dal margine.

    GRAZIE!
    Paperina :-)

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    certo che ti aiuto, dimmi solo cosa vorresti ottenere...

    io cmq nella split, al posto di vbCrLf userei " " anche perchè CrLf indica CarriageReturn LineFeed cioè fine riga e ritorno a capo

  5. #5
    Si, Grazie!!!!! Allora:

    Devo stampare questo testo: -> Form1.Finale_Uno_Risultato_Testo.Text
    Questo testo è abbastanza lunghetto e si articola su più righe.
    Praticamente l'applicazione lo deve stampare in una area di stampa che ha queste misure:

    16 Cm dal margine superiore
    3 Cm dal margine Sinistro
    3 Cm dal margine Destro

    Ovviamente però dovrei mantenere i riporti a capo del testo originale ed evitare di Tagliare le parole quando spezo il testo a 3 CM dal margine destro.

    Solo che non so proprio come fare, mi servirebbe aiuto per il codice.
    Paperina :-)

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    uhm...quindi vorresti far si che la frase rientri nei margini e se una parola esce la deve stampare a capo per intero, senza tagliarla...

    adesso penso se c'è un modo che possa esserti utile...

    scusami ma non ho mai usato l'oggeto printer, vedrò cosa posso fare

  7. #7
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    niente da fare, mi dispiace

    ma sei di catania? l'ho visto solo adesso

  8. #8

    Re: [VB] Dividere le Stringhe

    Originariamente inviato da Paperina(l4p)
    Ciao a tutti
    Per stampare un testo in un riquadro ben preciso, mi è sorta l'esigenza di mandare a capo il testo dopo un certo numero di caratteri, senza però tagliare la parola, ma andando a cercare lo spazio più vicino. Ad esempio se lo spazio successivo è più distante di 5 caratteri, cercare lo spazio precedente.

    Qualcuno mi può aiutare con il codice che devo scrivere??

    Grazie Mille!!!
    In pratica il procedimento da fare dovrebbe essere questo:
    - Controlli quanti caratteri ci sono tra un invio e l'altro
    - Se lo spazio e maggiore di n caratteri(la lunghezza della riga) inserisci un invio al primo spazio disponibile prima della fine della riga (primo invio +n caratteri)
    - Se lo spazio e minori controlli il prossimo invio

    Ho provato a implementare questa funzione che ti ritorna la stringa impaginata:

    codice:
    Public Function Impagina(sSource As String) As String
    Const cpl = 30 'Caratteri per linea
    Impagina = sSource & " " & vbCrLf  'spazio e invio sono usati per editare le stringhe. Per effettuare l'operazione con successo lastringa deve finire per spazio + invio, in modo da far trovare sempre il carattere cercato.
    Dim x, x2 As Integer
    x = 1
    x2 = InStr(x, Impagina, vbCrLf)  'cerco primo invio
    'If x2 = 0 Then x2 = Len(Impagina) 'Se non ci sono più invii verifico fino alla fine
    While x2 > 0 'finchè trovo invii
    '  If x = x2 Then Exit Do
      If x2 - x > cpl Then             'Verifico lunghezza SubStringa
        'Da riimpaginare
        x = InStrRev(Impagina, " ", x + cpl) 'Cerco spazio prima di fine riga
        Impagina = Left(Impagina, x) & vbCrLf & Mid(Impagina, x + 1) 'e aggiungo invio
        x = x + 2       'continuo impaginazione dopo ultimo invio
      Else
        x = x2 + 1 'continuo la ricerca da l'ultimo invio trovato
      End If
      x2 = InStr(x, Impagina, vbCrLf)  'cerco prossimo invio
    fine
    Wend
    End Function
    P.S. :Per modifcare la lunghezza della riga devi cambiare il valore della costante cpl


  9. #9
    Grazie Mille!!!

    Credo di avere risolto il problema con questo codice.

    Grazie Ancora, finalmente potrò consegnare il programma!!!!

    Grazie, Paperina
    Paperina :-)

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.