L
LuigiB
Guest
a grandi line si , fai i tuoi test su questa finestra e vedi se funziona bene
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Ieri attraverso il debug avevo già intuito il problema dell'archivio ed ho già risolto comunque grazie davvero. Ho risolto anche per la scrollbar eliminando limite massimo 100 dalla schermata proprietà. Non ho ripostato il progetto perchè tra poco implementerò l'usercontrollciao Edoardo ho provato a vedere i tuoi sorgenti ma ci sono dei problemi.
Per poter funzionare l'a'rchivio deve essere composto da record tutti della stessa lunghezza , percio ho rimesso lo script per produrlo da spaziometria , ma mi sa che non lo hai cambiato o ti sei sbagliato.
Se apri l'archivio presente nei sorgenti che hai postato ha l'indice annuale che non è formattato questo genera righe di lunghezza differente
pertanto quando uno va a fare i lcalcolo dell'offset non potra mai funzionare visto che moltiplichiamo la lunghezza del record per il numero di riga meno 1 ..
Quindi è per questo che non riesci a editare estrazioni in mezzo. Lancia lo script che ho messo per rigenerare il file csv dell'archivio e aprilo verifica che sia qeullo giusto.
seconda cosa l'array dei campi testo della finestra browser andava dichiarato globale alla form non all'intero progetto quindi va levato dal modulo e va dichiarato nel form
per la scrollbar hai notato che non ti punta correttamente l'ultima estrazione ? per ora metti la proprietà largechange = 1 come quella smallchange.
conqueste poche modifiche gia ti dovrebbe funzionare la scrittura delle estrazioni.
Friend Function ScriviEstrazione(idEstr As Integer, strctEst As StrEstrazione) As Boolean
Dim nOffset As Integer
Dim sRiga As String
Dim nLenRiga As Integer
sRiga = StructArchivioToRecordArchivio(strctEst) & vbCrLf
nLenRiga = Len(sRiga)
nOffset = ((idEstr - 1) * nLenRiga) + 1
Dim aB() As Byte = System.Text.Encoding.ASCII.GetBytes(sRiga)
Dim objFile = IO.File.Open(GetPercorsoArchivio, IO.FileMode.OpenOrCreate, FileAccess.ReadWrite)
objFile.Seek(nOffset - 1, IO.SeekOrigin.Begin)
objFile.Write(aB, 0, aB.Length)
objFile.Close()
objFile.Dispose()
If idEstr > UBound(Estrazioni) And idEstr = UBound(Estrazioni) + 1 Then
ReDim Preserve Estrazioni(idEstr)
Estrazioni(idEstr) = strctEst
Else
Estrazioni(idEstr) = strctEst
End If
End Function
Friend Function ScriviEstrazione(idEstr As Integer, strctEst As StrEstrazione) As Boolean
Dim nOffset As Integer
Dim sRiga As String
Dim nLenRiga As Integer
sRiga = StructArchivioToRecordArchivio(strctEst) & vbCrLf
nLenRiga = Len(sRiga)
nOffset = ((idEstr - 1) * nLenRiga) + 1
Dim aB() As Byte = System.Text.Encoding.ASCII.GetBytes(sRiga)
Dim objFile = IO.File.Open(GetPercorsoArchivio, IO.FileMode.OpenOrCreate, FileAccess.ReadWrite)
objFile.Seek(nOffset - 1, IO.SeekOrigin.Begin)
objFile.Write(aB, 0, aB.Length)
objFile.Close()
objFile.Dispose()
If idEstr > UBound(Estrazioni) And idEstr = UBound(Estrazioni) + 1 Then
ReDim Preserve Estrazioni(idEstr)
End If
Estrazioni(idEstr) = strctEst
End Function
Friend Function ScriviEstrazione(idEstr As Integer, strctEst As StrEstrazione) As Boolean
Dim nOffset As Integer
Dim sRiga As String
Dim nLenRiga As Integer
Try
sRiga = StructArchivioToRecordArchivio(strctEst) & vbCrLf
nLenRiga = Len(sRiga)
nOffset = ((idEstr - 1) * nLenRiga) + 1
Dim aB() As Byte = System.Text.Encoding.ASCII.GetBytes(sRiga)
Dim objFile = IO.File.Open(GetPercorsoArchivio, IO.FileMode.OpenOrCreate, FileAccess.ReadWrite)
objFile.Seek(nOffset - 1, IO.SeekOrigin.Begin)
objFile.Write(aB, 0, aB.Length)
objFile.Close()
objFile.Dispose()
If idEstr > UBound(Estrazioni) And idEstr = UBound(Estrazioni) + 1 Then
ReDim Preserve Estrazioni(idEstr)
Estrazioni(idEstr) = strctEst
Else
Estrazioni(idEstr) = strctEst
End If
Catch ex As Exception
MessageBox.Show("Estrazione non presente o non consecutiva rilevata,impossibile proseguire", "Rilevato errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Function
Private Sub ButtonSalva_Click(sender As Object, e As EventArgs) Handles ButtonSalva.Click
Dim strEst As StrEstrazione
strEst.DimensionaRuote()
Dim i As Integer
strEst.identifier = Convert.ToInt32(LabEstrTot.Text)
strEst.Data.Numero = Convert.ToInt32(TextNum.Text)
If TextData.Text.Length > 0 Then
strEst.Data.Data = Convert.ToDateTime(TextData.Text)
Else
MessageBox.Show("Devi inserire una data", "Rilevata assenza dati", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
For r As Integer = 1 To 11
For es As Integer = 1 To 5
i += 1
strEst.Ruote(r).Estratto(es) = aTxtNumeri(i).Text
Next
Next
If IsEstrazioneValida(strEst) Then
cArchivio.ScriviEstrazione(Convert.ToInt32(LabEstrTot.Text), strEst)
ImpostaLimitiScrollBar()
AlimentaContenutiForm()
MessageBox.Show("Estrazione salvata correttamente", "Salvataggio concluso", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Dati non inseriti correttamente", "Rilevato errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
End Sub
Function ConvertToInt(ByRef sRecord As String) As Integer
Dim ValStr As Integer
If sRecord <> "" Then
ValStr = Convert.ToInt32(sRecord)
Else
ValStr = 0
End If
Return ValStr
End Function
Private Sub ButtonSalva_Click(sender As Object, e As EventArgs) Handles ButtonSalva.Click
Dim strEst As StrEstrazione
strEst.DimensionaRuote()
Dim i As Integer
strEst.identifier = ConvertToInt(LabEstrTot.Text)
strEst.Data.Numero = ConvertToInt(TextNum.Text)
If TextData.Text.Length > 0 Then
strEst.Data.Data = Convert.ToDateTime(TextData.Text)
Else
MessageBox.Show("Devi inserire una data", "Rilevata assenza dati", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
For r As Integer = 1 To 11
For es As Integer = 1 To 5
i += 1
strEst.Ruote(r).Estratto(es) = ConvertToInt(aTxtNumeri(i).Text)
Next
Next
If IsEstrazioneValida(strEst) Then
cArchivio.ScriviEstrazione(ConvertToInt(LabEstrTot.Text), strEst)
ImpostaLimitiScrollBar()
AlimentaContenutiForm()
MessageBox.Show("Estrazione salvata correttamente", "Salvataggio concluso", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
MessageBox.Show("Dati non inseriti correttamente", "Rilevato errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
End Sub