Convertir array del 1 al 30 en dias de la semana
Publicado por jose (33 intervenciones) el 09/05/2020 21:38:21
Buenas tardes,
Estoy haciendo una subrrutina que guarda en un archivo dos valores, uno un valor de un NumericUpDown.Value que lo guardará en la linea correspondiente al día del més. Ejemplo el día 10 lo escribirá el día 10.
El problema viene en que en otra subrrutina lee el archivo que guarda los valores de las líneas en un array y luego hace una suma, si está vació da error dado que el array es de tipo integer.
Estoy buscando la forma de que en un bucle rellene todos los fines de semana a 0. Lo he intentado con algo parecido a esto:
Sin embargo en el bucle donde esta empieza en 1 y acaba en el día en el que estamos. Superando los días del 0 al 6, cuando el bucle llega a 7 el día de la semana empieza en 0.
Este es el código que tengo es el siguiente:
Gracias,
Estoy haciendo una subrrutina que guarda en un archivo dos valores, uno un valor de un NumericUpDown.Value que lo guardará en la linea correspondiente al día del més. Ejemplo el día 10 lo escribirá el día 10.
El problema viene en que en otra subrrutina lee el archivo que guarda los valores de las líneas en un array y luego hace una suma, si está vació da error dado que el array es de tipo integer.
Estoy buscando la forma de que en un bucle rellene todos los fines de semana a 0. Lo he intentado con algo parecido a esto:
1
2
3
4
5
6
If Today.DayOfWeek = DayOfWeek.Saturday Or DayOfWeek.Saturday Then
FicheroAEscribir.WriteLine(festivo)
Else
LineaLeida = FicheroALeer.ReadLine ' Lectura para nada hacer
FicheroAEscribir.WriteLine(NumericUpDown.Value) ' Escribir la linea nueva
End If
Sin embargo en el bucle donde esta empieza en 1 y acaba en el día en el que estamos. Superando los días del 0 al 6, cuando el bucle llega a 7 el día de la semana empieza en 0.
Este es el código que tengo es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Private Sub rellenarlog()
Dim dia As String = Now.Day
Dim mes As String = Now.Month
Dim Año As String = Now.Year
Dim strInforme As String = "%AppData%\Ascii\Informes\" & Año & "\"
Dim strInformeENV As String = Environment.ExpandEnvironmentVariables(strInforme)
Dim StrFileInformes As String = strInformeENV & mes & ".log"
Dim LineaLeida As String = Nothing
Dim NumeroLineaACambiar As Integer = 40
Dim festivo As Integer = 0
Dim contadorDias As Integer = 1
Dim FicheroALeer As System.IO.StreamReader
Dim FicheroAEscribir As System.IO.StreamWriter
FicheroALeer = New System.IO.StreamReader(StrFileInformes, System.Text.Encoding.Default)
FicheroAEscribir = New System.IO.StreamWriter(StrFileInformes & "TMP", False, System.Text.Encoding.Default)
' Escribe en la ultima linea vacia correspondiente al día del mes el 1 al 31
For L As Integer = 1 To dia - 1
LineaLeida = FicheroALeer.ReadLine
FicheroAEscribir.WriteLine(LineaLeida)
'### AÑADIR O A TODOS LOS DÍAS SABADOS Y DOMINGOS ENTRE EL DÍA 1 AL DÍA DE HOY
'If days = DayOfWeek.Saturday Or DayOfWeek.Sunday Then
'FicheroAEscribir.WriteLine(festivo)
'End If
'#######
'If diasSemanas.DayOfWeek = DayOfWeek.Saturday OrElse diasSemanas.DayOfWeek = DayOfWeek.Sunday Then
contadorDias += 1
Next
' Cuando sea Sábado o Domingo escribirá 0
If Today.DayOfWeek = DayOfWeek.Saturday Or DayOfWeek.Saturday Then
FicheroAEscribir.WriteLine(festivo)
Else
LineaLeida = FicheroALeer.ReadLine ' Lectura para nada hacer
FicheroAEscribir.WriteLine(NumericUpDown.Value) ' Escribir la linea nueva
End If
'Poner suma total
contadorDias = contadorDias + 1
For L As Integer = 1 To NumeroLineaACambiar - contadorDias '7 el numero leido
LineaLeida = FicheroALeer.ReadLine
FicheroAEscribir.WriteLine(LineaLeida)
Next
LineaLeida = FicheroALeer.ReadLine ' Lectura para nada hacer
Dim ValorActualMes As Integer = NumericUpDown.Value + valorMes
FicheroAEscribir.WriteLine(ValorActualMes)
' Copiar el resto de las lineas del fichero temporal al nuevo archivo log
Do Until FicheroALeer.Peek = -1
LineaLeida = FicheroALeer.ReadLine
FicheroAEscribir.WriteLine(LineaLeida)
Loop
'Close the file.
FicheroAEscribir.Close()
FicheroAEscribir.Dispose()
FicheroALeer.Close()
FicheroALeer.Dispose()
valorMes = ValorActualMes
' Eliminar el fichero incial
System.IO.File.Delete(StrFileInformes)
' Renombrar el fichero nuevo
System.IO.File.Move(StrFileInformes & "TMP", StrFileInformes)
End Sub
Gracias,
Valora esta pregunta
0