19/02/16 13:39
robypiro
ho notato una cosa stranissima, modificando il tuo codice in questo modo:
Il copia incolla funziona anche se, prima di copiarmi la tabella, mi copia anche l'header. In pratica, ho modificato i replaceFirst mettendo uno zero in più rispetto a quelli che dovrebbero essere. E' stata una modifica abbastanza casuale che però risolve il problema, ma perchè????
'inizializzo la stringa da mettere nella clipboard con l'header, per ora senza settare gli indici. Al loro posto metto degli zeri, in modo da fissare una lunghezza per la stringa Dim a As String = "Version:0.9" + vbCrLf + "StartHTML:000000" + vbCrLf + "EndHTML:000000" + vbCrLf + "StartFragment:000000" + vbCrLf + "EndFragment:000000" + vbCrLf 'ora aggiungiamo alla stringa da copiare l'html necessario. 'ottengo la dimensione della stringa convertendo la stringa in un array di byte con la codifica UTF8 e leggendone la dimensione Dim headerSize As Integer = System.Text.Encoding.UTF8.GetBytes(a).Length a += tabella 'ottengo la dimensione della stringa convertendo la stringa in un array di byte con la codifica UTF8 e leggendone la dimensione Dim totalSize As Integer = System.Text.Encoding.UTF8.GetBytes(a).Length 'l'HTML inizia appena dopo l'header e finisce alla fine della clipboard, 'quindi abbiamo l'indice di inizio in headerSize e quello di fine in totalSize. 'A questo punto posso sostituire gli zeri con i valori trovati, facendo attenzione che questi siano di esattamente 6 cifre come i 6 zeri '(utilizzando padLeft sulla stringa la porto ad dimensione di 6 caratteri aggiungendo zeri a sinistra) Dim inizio As String = headerSize.ToString().PadLeft(6, "0") Dim fine As String = totalSize.ToString().PadLeft(6, "0") 'la prima occorrenza degli zeri (per StartHTML) la sostituisco con l'indice di inizio a = replaceFirst(a, "0000000", inizio) 'la seconda (EndHTML) con l'indice di fine a = replaceFirst(a, "0000000", fine) 'stessa cosa per StartFragment e EndFragment a = replaceFirst(a, "0000000", inizio) a = replaceFirst(a, "0000000", fine) Clipboard.SetText(a, TextDataFormat.Html)
Il copia incolla funziona anche se, prima di copiarmi la tabella, mi copia anche l'header. In pratica, ho modificato i replaceFirst mettendo uno zero in più rispetto a quelli che dovrebbero essere. E' stata una modifica abbastanza casuale che però risolve il problema, ma perchè????
aaa