Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Substring e PadRight
lunedì 13 agosto 2012 - 16.02
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 3.5
|
Visual Studio 2008
|
MySQL 5.5
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
lun 13 ago 2012 - 16:02
Ciao al forum,
in questa parte di codice che vi mostro dovrei inserire il substring per delimitare il testo da immettere e la lungheza (padright) per il prossimo campo da scrivere, il problema che se inserisco solo due stringhe con substring e padright il programma non mi genera errore appena aumento le stringhe mi genera il seguente errore:
"Index e Lenght devono fare riferimento a una posizione nella stringa. nome Parametro: lenght"
Questo è il codice
''---- codice 20000000X -----
tmp = " " & "2" & idCount.ToString().PadLeft(8, Char.Parse("0"))
tmp = tmp & CStr("" & rigaOrdinante("DescrizioneOrdinante").Substring(0, 30)).ToString().PadRight(30, Char.Parse(" "))
tmp = tmp & CStr("" & rigaOrdinante("IndirizzoAccredito").Substring(0, 30)).ToString().PadRight(30, Char.Parse(" "))
tmp = tmp & CStr("" & rigaOrdinante("DescrizioneOrdinante1")).ToString().PadRight(30, Char.Parse(" "))
tmp = tmp & CStr("" & rigaOrdinante("CodiceFiscale")).ToString().PadRight(20, Char.Parse(" "))
wrf.WriteLine(tmp)
totRow = totRow + 1
''---------------------------
''---- codice 30000000X -----
tmp = " " & "3" & idCount.ToString().PadLeft(8, Char.Parse("0"))
tmp = tmp & CStr("" & rigaCorr("Cognome")) & " " & CStr("" & rigaCorr("Nome"))
tmp = tmp & rigaCorr("CodiceFiscale").ToString().PadLeft(87, Char.Parse(" ")) ''Questo codice Fiscale è relativo al beneficiario
wrf.WriteLine(tmp)
totRow = totRow + 1
''---------------------------
come posso ovviare all'errore perchè io in tutte le stringhe devo delimitare i caratteri e la distanza con il prossimo campo?
Grazie in anticipo
Mau67
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
lun 13 ago 2012 - 20:02
Un po' di corsa, cerco di capire.....
l'errore che ricevi praticamente ti dice che presumi di avere più caratteri nella stringa di quanti tu effettivamente ne abbia. Non ho capito quali sono le stringhe che riesci ad inserire e su quale ti dà invece errore. Così di getto, direi che potrebbe essere il metodo substring a cui indichi di selezionare 30 caratteri, in una stringa in cui i 30 caratteri non ci sono. Blocca il codice dove ti dà errore e conta i caratteri, oppure esegui il metodo substring nella finestra di debug e vedi che ti dice. Io penso sia una stringa più corta del previsto e se non mi sfugge qualche altra cosa, penso che il problema ti venga sul substring, che applichi prima del pad
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
lun 13 ago 2012 - 20:38
si effettivamente l'errore me lo da quando metto il substring in questa stringa
tmp = tmp & CStr("" & rigaOrdinante("DescrizioneOrdinante1")).ToString().PadRight(30, Char.Parse(" "))
come faccio ad ovviare a questo anche perchè se i caratteri aumentano mi sposta di posizione la stringa successiva, invece le stringhe devono rimanere sempre nella stessa posizione.
grazie
Mau67
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mar 14 ago 2012 - 10:19
Scusa se intervengo sempre come se la sedia mi scottasse, ma ho una serie di cose ancora da sistemare e dedico poco tempo ai forum e alla programmazione, purtroppo.
Se ho capito bene, generalizzando il problema, tu vuoi che, qualora il contenuto di una riga ecceda i 30 caratteri, questa venga tagliata al massimo, a 30 caratteri.
Se è così, devi controllare la lunghezza della stringa, mi pare sia la proprietà count e se questa eccede i 30 caratteri, applichi il substring, altrimenti no.
Se non ho capito, ritenterò con qualche informazione in più che vorrai passarmi
Se devi fare operazioni ripetitive su più stringhe, valuta la possibilità di utilizzare una funzione alla quale passi la stringa come argomento, che su di essa esegue i controlli e le operazioni necessarie, restituendoti poi la stringa pronta all'uso come serve a te.
Ciao
Mau67
Profilo
| Expert
917
messaggi | Data Invio:
mar 14 ago 2012 - 15:21
grazie ho risolto se serve a qualcuno
If rigaOrdinante("DescrizioneOrdinante1").Length.ToString() < 30 Then
tmp = tmp & CStr("" & rigaOrdinante("DescrizioneOrdinante1")).ToString().PadRight(30, Char.Parse(" "))
Else
tmp = tmp & CStr("" & rigaOrdinante("DescrizioneOrdinante1").Substring(0, 30)).ToString().PadRight(30, Char.Parse(" "))
End If
cia grazie alla prossima, buon ferragosto a tutti
Mau67
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !