Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Programa che si blocca
Forum - C# / VB.NET - Programa che si blocca

Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 19:47
Lunedì, 18/08/2008
Buongiorno a tutti voi.
Sono ancora qui a chiedere aiuto alla gente del Forum.
Sono alle prese con un programma abbastanza elaborato che si compone di più Form.
Una Form mi costruisce un calendario che si trova all'interno di una cartella che ha, come nome, l'anno del calendario che deve costruire.
All'interno di questa cartella, crea 12 cartelle ognuna con un nome dei 12 mesi dell'anno.
All'interno di queste 12 cartelle, vengono create tante cartelle quanti sono i giorni di ogni mese con ognuna il giorno della settimana e il giorno del mese, (ES. Venerdì 2 Gennaio) e all'interno di ognuna di queste, crea un file.txt con lo stesso nome della cartella e lo stesso file contiene, come testo, lo stesso nome.
Fin qui tutto bene.
Una seconda Form serve per registrare nel file.txt
sotto la data, le varie fasi di lavorazione delle riviste compresa l'uscita in edicola.
Es.
Venerdì 2 Gennaio
Uscita in edicola (nome della testata) N.1
Il problema è che questo programma si blocca ad una riga che evidenzio in neretto all'interno di questo codice:

Codice sorgente - presumibilmente VB.NET

  1. Imports System.IO
  2. Public Class Form3
  3.     Dim Periodico As String
  4.     Dim DistanzaGiorni As Integer
  5.     Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
  6.         Periodico = "Bimestrale" : DistanzaGiorni = 60
  7.     End Sub
  8.  
  9.     Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
  10.         Periodico = "Mensile" : DistanzaGiorni = 30
  11.     End Sub
  12.  
  13.     Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
  14.         Periodico = "Quindicinale" : DistanzaGiorni = 15
  15.     End Sub
  16.  
  17.     Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged
  18.         Periodico = "Quattordicinale" : DistanzaGiorni = 14
  19.     End Sub
  20.  
  21.     Private Sub RadioButton5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton5.CheckedChanged
  22.         Periodico = "Settimanale" : DistanzaGiorni = 7
  23.     End Sub
  24.  
  25.     Private Sub RadioButton6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton6.CheckedChanged
  26.         Periodico = "Numero Unico" : DistanzaGiorni = 0
  27.     End Sub
  28.  
  29.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  30.         Dim NomeTestata As String = ""
  31.         Dim Periodicita As String = Periodico
  32.         Dim UscitaInEdicola As String = ""
  33.         Dim Giorno As String = ""
  34.         Dim Giorni(12) As Integer
  35.         Dim GiornoDellaSettimana(7) As String
  36.         Dim Mese As String = ""
  37.         Dim Mesi(12) As String
  38.         Dim Anno As String = ""
  39.         Dim Stringa As String = ""
  40.         Dim Stampa As Integer
  41.         Dim OK_SiStampi As Integer
  42.         Dim FoglioDiMacchina As Integer
  43.         Dim RestituzioneCianografiche As Integer
  44.         Dim ArrivoCianografiche As Integer
  45.         Dim RestituzioneSecondeBozze As Integer
  46.         Dim ArrivoSecondeBozze As Integer
  47.         Dim RestituzionePrimeBozze As Integer
  48.         Dim ArrivoPrimeBozze As Integer
  49.         Dim InvioRedazionaliInTipografia As Integer
  50.         Dim RicezioneRedazionaliDaImpaginare As Integer
  51.         Dim TimoneDelleRedazionali As Integer
  52.         Dim InvioFumettiInTipografia As Integer
  53.         Dim RicezioneFumettiDaLavorare As Integer
  54.         Dim ProgrammazioneTestata As Integer
  55.         Dim X As Integer
  56.         Dim I As Integer
  57.         Dim Y As Integer
  58.         Dim Z As Integer
  59.  
  60.         For I = 1 To 20
  61.             If I = 1 Then NomeTestata = NomeTestata + Me.Controls("TextBox" & I).Text
  62.             If I = 2 Then UscitaInEdicola = UscitaInEdicola + Me.Controls("TextBox" & I).Text : If UscitaInEdicola = "Lunedi" Then UscitaInEdicola = "Lunedì"
  63.             If I = 3 Then Giorno = Giorno + Me.Controls("TextBox" & I).Text
  64.             If I = 4 Then Mese = Mese + Me.Controls("TextBox" & I).Text
  65.             If I = 5 Then Anno = Anno + (Me.Controls("TextBox" & I).Text)
  66.             If I = 6 Then Stampa = Stampa + Val(Me.Controls("TextBox" & I).Text)
  67.             If I = 7 Then OK_SiStampi = OK_SiStampi + Val(Me.Controls("TextBox" & I).Text)
  68.             If I = 8 Then FoglioDiMacchina = FoglioDiMacchina + Val(Me.Controls("TextBox" & I).Text)
  69.             If I = 9 Then RestituzioneCianografiche = RestituzioneCianografiche + Val(Me.Controls("TextBox" & I).Text)
  70.             If I = 10 Then ArrivoCianografiche = ArrivoCianografiche + Val(Me.Controls("TextBox" & I).Text)
  71.             If I = 11 Then RestituzioneSecondeBozze = RestituzioneSecondeBozze + Val(Me.Controls("TextBox" & I).Text)
  72.             If I = 12 Then ArrivoSecondeBozze = ArrivoSecondeBozze + Val(Me.Controls("TextBox" & I).Text)
  73.             If I = 13 Then RestituzionePrimeBozze = RestituzionePrimeBozze + Val(Me.Controls("TextBox" & I).Text)
  74.             If I = 14 Then ArrivoPrimeBozze = ArrivoPrimeBozze + Val(Me.Controls("TextBox" & I).Text)
  75.             If I = 15 Then InvioRedazionaliInTipografia = InvioRedazionaliInTipografia + Val(Me.Controls("TextBox" & I).Text)
  76.             If I = 16 Then RicezioneRedazionaliDaImpaginare = RicezioneRedazionaliDaImpaginare + Val(Me.Controls("TextBox" & I).Text)
  77.             If I = 17 Then TimoneDelleRedazionali = TimoneDelleRedazionali + Val(Me.Controls("TextBox" & I).Text)
  78.             If I = 18 Then InvioFumettiInTipografia = InvioFumettiInTipografia + Val(Me.Controls("TextBox" & I).Text)
  79.             If I = 19 Then RicezioneFumettiDaLavorare = RicezioneFumettiDaLavorare + Val(Me.Controls("TextBox" & I).Text)
  80.             If I = 20 Then ProgrammazioneTestata = ProgrammazioneTestata + Val(Me.Controls("TextBox" & I).Text)
  81.         Next I
  82.  
  83.         'assegna i valori a Mesi e ad ogni Mese la quantità relativa di Giorni per la costruzione di altrettante cartelle
  84.         For I = 1 To 12
  85.             If I = 1 Then Mesi(I) = "Gennaio" : Giorni(I) = 31
  86.             If I = 2 Then Mesi(I) = "Febbraio" : Giorni(I) = 28
  87.             If I = 3 Then Mesi(I) = "Marzo" : Giorni(I) = 31
  88.             If I = 4 Then Mesi(I) = "Aprile" : Giorni(I) = 30
  89.             If I = 5 Then Mesi(I) = "Maggio" : Giorni(I) = 31
  90.             If I = 6 Then Mesi(I) = "Giugno" : Giorni(I) = 30
  91.             If I = 7 Then Mesi(I) = "Luglio" : Giorni(I) = 31
  92.             If I = 8 Then Mesi(I) = "Agosto" : Giorni(I) = 31
  93.             If I = 9 Then Mesi(I) = "Settembre" : Giorni(I) = 30
  94.             If I = 10 Then Mesi(I) = "Ottobre" : Giorni(I) = 31
  95.             If I = 11 Then Mesi(I) = "Novembre" : Giorni(I) = 30
  96.             If I = 12 Then Mesi(I) = "Dicembre" : Giorni(I) = 31
  97.         Next I
  98.  
  99.         Z = Val(Anno)
  100.         'controlla se l'Anno è un Anno bisestile e se lo è aumenta di 1 i giorni fi Febraio
  101.         If Int(Z / 4 * 4) = Val(Anno) Then Giorni(2) = 29
  102.  
  103.         'Memoriza in I i nomi dei giorni della settimana
  104.         For I = 1 To 7
  105.             If I = 1 Then GiornoDellaSettimana(I) = "Sabato"
  106.             If I = 2 Then GiornoDellaSettimana(I) = "Domenica"
  107.             If I = 3 Then GiornoDellaSettimana(I) = "Lunedì"
  108.             If I = 4 Then GiornoDellaSettimana(I) = "Martedì"
  109.             If I = 5 Then GiornoDellaSettimana(I) = "Mercoledì"
  110.             If I = 6 Then GiornoDellaSettimana(I) = "Giovedì"
  111.             If I = 7 Then GiornoDellaSettimana(I) = "Venerdì"
  112.         Next I
  113.  
  114.         X = Val(Giorno)
  115.         Y = 1
  116.         'Crea la stringa “Mese”
  117.         For I = 1 To 12
  118.             Mese = Mesi(I)
  119.  
  120.             'Crea la stringa “Stringa”
  121.             Stringa = Stringa + "Uscita in edicola " + NomeTestata + " N." + Str(Y) + Chr(13)
  122.  
  123.             'Crea la stringa "Giorno"
  124.             Giorno = UscitaInEdicola + Str(X) + " " + Mese
  125.  
  126.             Dim Percorso As String = ""
  127.             Percorso = "C:\" & Anno
  128.             Dim PercorsoFile As String = ""
  129.             PercorsoFile = "C:\" & Anno & "\" & Mese & " \" & Giorno & "\" & Giorno & ".txt"
  130.             'Crea la cartella “Anno” ed al suo interno la cartella "Mese", con al su interno la cartella “Giorno” se assente oppure lo apre in lettura e lo aggiorna attraverso la determinazione della sua esistenza (metodo fileExist)
  131.             System.IO.Directory.CreateDirectory(PercorsoFile)
  132.  
  133.             'È possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file. Se il file specificato non esiste, viene creato automaticamente.
  134.             [b]My.Computer.FileSystem.WriteAllText(PercorsoFile, Stringa + Chr(13), True)[/b]
  135.  
  136.             X = X + DistanzaGiorni
  137.             If Giorni(I) - X < DistanzaGiorni Then X = DistanzaGiorni - (Giorni(I) - X) : I = I + 1
  138.             Y = Y + 1
  139.         Next I
  140.         Close()
  141.     End Sub
  142.  
  143. End Class



Mi evidenzia la riga con una sottolineatura di colore giallo e l'errore che mi segnala in carattere neretto è:
UnauthorixedExceptionnon è stata gestita
mentre, con carattere normale prosegue :
Accesso al percorso 'C:\2009\Gennaio\Venerdì 2 Gennaio.txt' negato.

Purtroppo nel codice la riga in neretto non è stata evidenziata, ma la ripeto qui:
My.Computer.FileSystem.WriteAllText(PercorsoFile, Stringa + Chr(13), True)
Quello che trovo strano è che lo stesso "percorso", lo utilizzo nella Form che crea il calendario e tutto procede bene.
Qualcuno può aiutarmi a risolvere questo problema?
MI scuso per la lunghezza del messaggio ma ho cercato di spiegare nel migliore dei modi per essere il più chiaro possibile.
alpi39 (Alberto)

Ultima modifica effettuata da alpi39 il 18/08/2008 alle 19:59
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 10:06
Martedì, 19/08/2008
Al momento mi vengono in mente solo due possibilità:

1) controlla se hai i permessi di scrittura sul file...

2) controlla se hai aperto il file precedentemente con uno stream che non hai mai chiuso

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 16:05
Martedì, 19/08/2008
Testo quotato

Postato originariamente da lorenzo:

Al momento mi vengono in mente solo due possibilità:

1) controlla se hai i permessi di scrittura sul file...

2) controlla se hai aperto il file precedentemente con uno stream che non hai mai chiuso



Grazie lorenzo.
Ho effettuato tutte e due le operazioni, ma il problema è sempre lo stesso, il programma si blocca sempre su quella riga.
Ad ogni modo, grazie per il tuo intervento.
alpi39 (Alberto)

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:40
Mercoledì, 20/08/2008
Metti una pausa di un centianio di millisecondi tra un accesso e l'altro e riprova.

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 16:18
Domenica, 24/08/2008
Ciao Totem
Innanzitutto grazie per aver tolto la ripetizione del mio messaggio a Lorenzo, ripetizione non voluta da me che ho cliccato un sola volta sul bottone "Send" e non capisco come mai sia avvenuta la ripetizione del messaggio e, devi credermi, nel vedere la ripetizione sono rimasto abbastanza sconcertato. Non so se altre volte è successo anche a qualcun altro.
Ti ringrazio del tuo consiglio di dare una pausa di alcuni millisecondi tra un accesso e l'altro, ma la cosa non sarebbe stata possibile, visto che prima formo il calendario con una Form e poi, con un'altra Form vado ad inserire le uscite in edicola.
Comunque, rileggendo attentamente tutto il codice, sono riuscito ad apportare quelle modiche che mi hanno consentito di effettuare perfettamente ciò che desideravo.
Ora ho un altro problema con un'altra Form, ma di questo ne parlerò in un altro Topic.
Ciao e grazie nuovamente
alpi39 (Alberto)

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 8:09
Lunedì, 25/08/2008
posta le modifiche, magari se qualcun altro ha il tuo stesso problema può risolverlo leggendo il topic;)

PM Quote
Avatar
alpi39 (Normal User)
Pro


Messaggi: 63
Iscritto: 07/03/2008

Segnala al moderatore
Postato alle 13:27
Lunedì, 25/08/2008
Testo quotato

Postato originariamente da lorenzo:

posta le modifiche, magari se qualcun altro ha il tuo stesso problema può risolverlo leggendo il topic;)



Ciao lorenzo
Chiedo scusa, ma io non so esattamente qual è la riga o le righe dove sono intervenuto, perché ho riscritto quasi tutto il codice tranne le "Dim" che qui vado ad omettere per non utilizzare troppo spazio, visto che le stesse sono riportate nel primo messaggio della mia richiesta di aiuto.

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.  
  3.         'qui evidenzia, con un messaggio l'anno che è stato digitato
  4.         MsgBox("Sto per creare il Calendario del " & Anno & " dare OK")
  5.  
  6.         'Algoritmo per stabilire la data della Pasqua============================================
  7.  
  8.         For N = 1 To 12
  9.             If N = 1 Then Mesi(N) = "Gennaio"
  10.             If N = 2 Then Mesi(N) = "Febbraio"
  11.             If N = 3 Then Mesi(N) = "Marzo"
  12.             If N = 4 Then Mesi(N) = "Aprile"
  13.             If N = 5 Then Mesi(N) = "Maggio"
  14.             If N = 6 Then Mesi(N) = "Giugno"
  15.             If N = 7 Then Mesi(N) = "Luglio"
  16.             If N = 8 Then Mesi(N) = "Agosto"
  17.             If N = 9 Then Mesi(N) = "Settembre"
  18.             If N = 10 Then Mesi(N) = "Ottobre"
  19.             If N = 11 Then Mesi(N) = "Novembre"
  20.             If N = 12 Then Mesi(N) = "Dicembre"
  21.         Next N
  22.  
  23.         Z = Int(Anno / 19) '=105-102-102
  24.         A = Anno - Z * 19 '=13-12-14  'ANNO/19 A=resto
  25.         B = Int(Anno / 100) '=20-19-19  'ANNO/100 B=quoziente C=resto
  26.         C = Anno - B * 100 '=8-50-52
  27.         D = Int(B / 4) '=5-4-4 'B/4 Dquoziente E1=resto
  28.         E1 = B - D * 4 '=0-3-3
  29.         F = Int((B + 8) / 25) '=1-1-1  '(B+8)/25 F=quoziente -il resto non si utilizza
  30.         G = Int((B - F + 1) / 3) '=6-6-6  '(B-F+1)/3 G -il resto non si utilizza
  31.         Z = Int((19 * A) + B - D - G + 15) '=271-252-290  19A+B-D-G+15/30 -   H-resto
  32.         Z1 = Int(Z / 30) '=9-8-9
  33.         H = (Z - Z1 * 30) '=1-12-20(19)
  34.         I = Int(C / 4) '=2-12-13  'C/4 I=quoziente K=resto
  35.         K = (C - I * 4) '=0-2-0
  36.         Z = 32 + (2 * E1) + (2 * I) - H - K '=35-48-42(43)
  37.         Z1 = Int(Z / 7) '=5-6-6  '(32+2E1+2I-H-K)/7 -il quoziente non si utilizza L=il resto
  38.         L = Z - (Z1 * 7) '=0-6-0(1)
  39.         M = A + 11 * H + 22 * L '=24-276-234(245)  '(A+11H+22L)/451 =M -il resto non si utilizza
  40.         M = Int(M / 451) '=0-0-0
  41.         Z = H + L - 7 * M + 114 '=115-132-134(134)'H+L-7M+114/31 N=quoziente (Mese della Pasqua)P=resto(+1=giorno della Pasqua)
  42.         N = Int(Z / 31) '=3-4-4 Mese della Pasqua
  43.         P = (Z - N * 31) + 1 '23-9-10'giorno della Pasqua
  44.  
  45.         ''N=numero del mese P+1=giorno del mese in cui cade la Pasqua
  46.         GiornoDiPasqua = Str(P) + " " + Mesi(N)
  47.  
  48.         'Fine algoritmo per stabilire la data della Pasqua============================================
  49.  
  50.         'assegna i valori a Mesi e ad ogni Mese la quantità relativa di Giorni
  51.         For I = 1 To 12
  52.             If I = 1 Then Mesi(I) = "Gennaio" : Giorni(I) = 31
  53.             If I = 2 Then Mesi(I) = "Febbraio" : Giorni(I) = 28
  54.             If I = 3 Then Mesi(I) = "Marzo" : Giorni(I) = 31
  55.             If I = 4 Then Mesi(I) = "Aprile" : Giorni(I) = 30
  56.             If I = 5 Then Mesi(I) = "Maggio" : Giorni(I) = 31
  57.             If I = 6 Then Mesi(I) = "Giugno" : Giorni(I) = 30
  58.             If I = 7 Then Mesi(I) = "Luglio" : Giorni(I) = 31
  59.             If I = 8 Then Mesi(I) = "Agosto" : Giorni(I) = 31
  60.             If I = 9 Then Mesi(I) = "Settembre" : Giorni(I) = 30
  61.             If I = 10 Then Mesi(I) = "Ottobre" : Giorni(I) = 31
  62.             If I = 11 Then Mesi(I) = "Novembre" : Giorni(I) = 30
  63.             If I = 12 Then Mesi(I) = "Dicembre" : Giorni(I) = 31
  64.         Next I
  65.  
  66.         'Memoriza in t(I) i nomi dei giorni del settimana
  67.         For I = 1 To 7
  68.             If I = 1 Then t(I) = "Sabato"
  69.             If I = 2 Then t(I) = "Domenica"
  70.             If I = 3 Then t(I) = "Lunedì"
  71.             If I = 4 Then t(I) = "Martedì"
  72.             If I = 5 Then t(I) = "Mercoledì"
  73.             If I = 6 Then t(I) = "Giovedì"
  74.             If I = 7 Then t(I) = "Venerdì"
  75.         Next I
  76.  
  77.         'Memoriza in TotaleGiorni(Y) il totale dei giorni trascorsi fino alla fine di ogni mese
  78.         For Y = 1 To 12
  79.             If Y = 1 Then TotaleGiorni(Y) = 31
  80.             If Y = 2 Then TotaleGiorni(Y) = 59
  81.             If Y = 3 Then TotaleGiorni(Y) = 90
  82.             If Y = 4 Then TotaleGiorni(Y) = 120
  83.             If Y = 5 Then TotaleGiorni(Y) = 151
  84.             If Y = 6 Then TotaleGiorni(Y) = 181
  85.             If Y = 7 Then TotaleGiorni(Y) = 212
  86.             If Y = 8 Then TotaleGiorni(Y) = 243
  87.             If Y = 9 Then TotaleGiorni(Y) = 273
  88.             If Y = 10 Then TotaleGiorni(Y) = 304
  89.             If Y = 11 Then TotaleGiorni(Y) = 334
  90.             If Y = 12 Then TotaleGiorni(Y) = 365
  91.         Next Y
  92.  
  93.         'Cerca in che giorno della settimana cadeva il 1° Ottobre dell'Anno precedente
  94.         ' Nemorizza nelle vaiabili g, m, ed Anno,
  95.         'rispettivamente il giorno, il mese e l'Anno del'anno precedente
  96.         G = 1
  97.         M = 10
  98.         Anno = Anno
  99.  
  100.         'X= sarà uguale all'anno digitato
  101.         X = Anno
  102.         'Y sarà il numero del mese precdente a quello digitato
  103.         Y = M - 1
  104.         'Aggiunge ai giorni trascorsi fino al mese precedente, i giorni del mese digitato
  105.         GiorniTrascorsi = TotaleGiorni(Y) + G
  106.  
  107.         '============================================================================
  108.         'Stabilisce se l'anno da costruire è bisestile
  109.         If Int(X / 4 * 4 = X) And M >= 2 Then
  110.             GiorniTrascorsi = GiorniTrascorsi + 1
  111.         End If
  112.         '============================================================================
  113.  
  114.         A = Anno - 1
  115.         q = Int(A / 4)
  116.         B = Int(A / 100)
  117.         D = Int(A / 400)
  118.         X = Anno
  119.         X = X + q
  120.         X = X - B
  121.         X = X + D
  122.         X = X + GiorniTrascorsi
  123.         A = Int(X / 7)
  124.         A = A * 7
  125.         X = X - A - 1
  126.         'Fine ricerca in che giorno della settimana cadeva il 1° Ottobre dell'Anno precedente
  127.         '_____________________________________________________________________________________
  128.  
  129.  
  130.         'Qui registra gli ultimi 3 mesi dell'anno precedente
  131.         Anno = Val(Anno - 1)
  132.  
  133.         'Crea il percorso per arrivare alla Directory
  134.         'che chiamerà con il nome dell'anno del quale formare il calendario
  135.         Dim Percorso As String = "C:\" & Anno
  136.         Y = X '(giorno della sttimana del 1° Ottobre dell'Anno Precedente
  137.         'Crea la stringa “Mese”
  138.         For I = 10 To 12
  139.             Mese = Mesi(I)
  140.             'Crea la stringa “Giorno”
  141.             For X = 1 To Giorni(I)
  142.                 'Crea la stringa “Giorno della settimana”
  143.                 Day = t(Y)
  144.                 'Nome che darà alle cartelle che conterranno i file .txt
  145.                 'e che scriverà all'interno dello stesso file .txt
  146.                 Giorno = Str(X) + " " + Mese
  147.  
  148.                 'Crea il percorso che deve fare per creare le cartelle e sottocartelle
  149.                 'ognuna con il proprio nome
  150.                 Dim PercorsoFile As String = ""
  151.                 PercorsoFile = "C:\" & Anno & "\" & Mese & " \" & Giorno
  152.                 System.IO.Directory.CreateDirectory(PercorsoFile)
  153.  
  154.                 'È possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file.
  155.                 'Se il file specificato non esiste, viene creato automaticamente.
  156.                 My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", Giorno, True)
  157.  
  158.                 If Mese = "Novembre" And X = 1 Then Stringa = "Tutti i Santi: Festivo"
  159.                 If Mese = "Dicembre" And X = 8 Then Stringa = "Immacolata Concezione: Festivo"
  160.                 If Mese = "Dicembre" And X = 25 Then Stringa = "Nascita del Signore: Festivo"
  161.                 If Mese = "Dicembre" And X = 26 Then Stringa = "Santo Stefano: Festivo"
  162.                 If Day = "Domenica" Then Stringa = "Festivo"
  163.  
  164.                 'È possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file.
  165.                 'Se il file specificato non esiste, viene creato automaticamente.
  166.                 My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", " " + Day + Chr(13), True)
  167.                 If Stringa = "" Then GoTo Salta1
  168.                 My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", Stringa + Chr(13), True)
  169. Salta1:
  170.                 Y = Y + 1
  171.  
  172.                 If Y = 8 Then Y = 1
  173.                 Stringa = ""
  174.             Next X
  175.  
  176.         Next I
  177.         '_________________________________________________________________________________________________________
  178.  
  179.         Anno = Anno + 1
  180.  
  181.         'Crea il percorso per arrivare alla Directory
  182.         'che chiamerà con il nome dell'anno del quale formare il calendario
  183.         'Dim  Percorso As String = "C:\" & Anno
  184.         'Crea la stringa “Mese”
  185.         For I = 1 To 12
  186.             Mese = Mesi(I)
  187.             'Crea la stringa “Giorno”
  188.             For X = 1 To Giorni(I)
  189.                 'Crea la stringa “Giorno della settimana”
  190.                 'Nome che darà alle cartelle che conterranno i file .txt
  191.                 'e che scriverà all'interno dello stesso file .txt
  192.                 'Crea il percorso che deve fare per creare le cartelle e sottocartelle
  193.                 'ognuna con il proprio nome
  194.                 Day = " " + t(Y)
  195.                 Giorno = Str(X) + " " + Mese
  196.  
  197.                 Dim PercorsoFile As String = ""
  198.                 PercorsoFile = "C:\" & Anno & "\" & Mese & "\" & Giorno
  199.                 System.IO.Directory.CreateDirectory(PercorsoFile)
  200.  
  201.                 Giorno = Str(X) + " " + Mese
  202.  
  203.                 'È possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file.
  204.                 'Se il file specificato non esiste, viene creato automaticamente.
  205.                 My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", Giorno, True)
  206.  
  207.                 If I = MeseDiInizioFerie And X >= PartenzaFerie Then Stringa = "Chiuso per Ferie"
  208.                 If I = MeseDiFineFerie And X <= TermineFerie Then Stringa = "Chiuso per Ferie"
  209.                 If Mese = "Gennaio" And X = 1 Then Stringa = "Maria, Madre di Dio: Festivo"
  210.                 If Mese = "Gennaio" And X = 6 Then Stringa = "Epifania di Nostro Signore: Festivo"
  211.                 If Mese = Mesi(N) And X = P Then Stringa = "Pasqua di Resurrezione: Festivo"
  212.                 If Mese = Mesi(N) And X = P + 1 Then Stringa = "Lunedì dell'Angelo (Pasquetta): Festivo"
  213.                 If Mese = "Maggio" And X = 1 Then Stringa = "San Giuseppe artigiano/Festa del Lavoro: Festivo"
  214.                 If Mese = "Giugno" And X = 2 Then Stringa = "Festa della Repubblica: Festivo"
  215.                 If Mese = "Giugno" And X = 29 Then Stringa = "SS. Pietro e Paolo: Festivo"
  216.                 If Mese = "Agosto" And X = 15 Then Stringa = Stringa + Chr(13) + "Assunzione della Santa Vergine: Festivo"
  217.                 If Mese = "Novembre" And X = 1 Then Stringa = "Tutti i Santi: Festivo"
  218.                 If Mese = "Dicembre" And X = 8 Then Stringa = "Immacolata Concezione: Festivo"
  219.                 If Mese = "Dicembre" And X = 25 Then Stringa = "Nascita del Signore: Festivo"
  220.                 If Mese = "Dicembre" And X = 26 Then Stringa = "Santo Stefano: Festivo"
  221.                 If Day = "Domenica" Then Stringa = "Festivo"
  222.  
  223.  
  224.                 'È possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file.
  225.                 'Se il file specificato non esiste, viene creato automaticamente.
  226.                 My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", " " + Day + Chr(13), True)
  227.                 If Stringa = "" Then GoTo Salta2
  228.                 My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", Stringa + Chr(13), True)
  229. Salta2:
  230.                 Y = Y + 1
  231.  
  232.                 If Y = 8 Then Y = 1
  233.                 Stringa = ""
  234.             Next X
  235.  
  236.         Next I
  237.         Me.Close()
  238.     End Sub


loremzo, non so se questo codice potrà servire a qualcuno, ma l'ho postato seguendo il tuo giusto consiglio.
Ciao
Alberto
P.S.
I numeri riportati in verde accanto alle istruzioni per cercar il giorno in cui cade la Pasqua, sono le prove che ho fatto stoppando riga per riga il programma per controllare il risultato
delle operazioni.
Di nuovo Ciao

Ultima modifica effettuata da alpi39 il 25/08/2008 alle 13:36
PM Quote