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.
Option Explicit
Sub Main
Dim idClasse,idArc,i
idClasse = GetClasse
idArc = Int(InputBox("Quanti Archivi Vuoi Creare?","Numero Archivi",25))
ReDim aKey(idArc)
Call CreaArch(aKey,idClasse)
For i = 1 To UBound(aKey)
Scrivi Format2(i) & ") " & aKey(i)
Next
End Sub
Sub CreaArch(aKey,idClasse)
Dim Numeri
Dim nTrov
Dim i,sFile
ReDim aNum(idClasse)
Set Numeri = GetNewCollection
nTrov = 0
Do While nTrov < UBound(aKey)
Call GetColonnaCasuale(idClasse,aNum)
If AddItemColl(Numeri,"h",StringaNumeri(aNum,,True))Then
nTrov = nTrov + 1
aKey(nTrov) = StringaNumeri(aNum,,True)
End If
Loop
' ogni volta che la lancio non riesco ad eliminare le vecchie chiavi si accodano
' le chiavi le ottengo splittando il nome del file tra le parentesi
Call EliminaFile(sFile)
For i = 1 To UBound(aKey)
sFile = CreaDirectory(GetDirectoryAppData & "ARCH_Virt_Enigma\Chiave_" & i & "(" & aKey(i) & ")")
Next
End Sub
Function GetClasse
Dim aClasse(15)
Dim i
For i = 0 To UBound(aClasse)
aClasse(i) = i + 5
Next
GetClasse = ScegliOpzioneMenu(aClasse,0,"SelezionaClasseChiavi") + 5
End Function
Option Explicit
Sub Main
Dim aKey ' array delle chiavi per creare gli archivi virtuali
Dim nQArchivi ' quantita degli archivi da creare
Dim nEstrIni ' estrazione dalla quale iniziare a creare le corrispondenti virtuali
Dim nClasseChiave ' classe per la chiave degli archivi
Dim sFileChiavi ' file che memorizza le chiavi per gli n archivi virtuali
Dim aEstAR ' matrice estrazioni archivio reale (Tot,Ruota,Pos)
Dim sDirArcVirt ' directory dove vengono creati gli archivi virtuali
nQArchivi = ScegliQuantitaArchivi
nClasseChiave = ScegliClasse
nEstrIni = ScegliInizio
sDirArcVirt = GetDirectoryAppData & "ArcVirtEnigma\"
If VerificaCoerenza(nQArchivi,nClasseChiave,nEstrIni) Then
' creo la directry dove salvo gli archivi
If CreaDirectory(sDirArcVirt) Then
' legge le estrazioni dell'archivio reale e le mette in memoria
If AlimentaMatriceEst(aEstAR) Then
' inizializza le chiavi per la creazione dell'archivio virtuale
Call InitChiavi(aKey,nQArchivi,nClasseChiave,sDirArcVirt,nEstrIni)
End If
End If
End If
End Sub
Function VerificaCoerenza(nQArchivi,nClasseChiave,nEstrIni)
Dim sMsg
If nQArchivi <= 0 Then sMsg = "Specificare la quantita di archivi da creare"
If nClasseChiave <= 4 Then sMsg = "Specificare la classe per le chiavi di generazione"
If nEstrIni <= 0 Then sMsg = "Specificare l'estrazione di partenza per la generazione degli archivi"
If sMsg <> "" Then
MsgBox sMsg,vbCritical
Else
VerificaCoerenza = True
End If
End Function
Function ScegliInizio()
ReDim aV(EstrazioniArchivio)
Dim k
For k = 1 To UBound(aV)
aV(k) = GetInfoEstrazione(k)
Next
ScegliInizio = ScegliOpzioneMenu(aV,1,"Inizio archivio virtuale")
End Function
Function ScegliClasse
ReDim aV(16)
Dim k
For k = 5 To 20
aV(k - 4) = k
Next
ScegliClasse =(ScegliOpzioneMenu(aV,1,"Classe chiavi di generazione")) + 4
End Function
Function ScegliQuantitaArchivi
ScegliQuantitaArchivi= Int(InputBox("Quanti archivi virtuali creare ?","Quantita archivi virtuali","25"))
End Function
Function AlimentaMatriceEst(aEst)
' alimenta la matrice con tutte le estrazioni dell'archivio reale
Dim k,r,e,nTot
nTot = EstrazioniArchivio
ReDim aEst(nTot,11,5)
For k = 1 To nTot
ReDim aNumEst(0)
Call GetEstrazioneCompleta(k,aNumEst)
aEst(k,0,0) = DataEstrazione(k,,,"/") & "-" & IndiceAnnuale(k)
For r = 1 To 11
For e = 1 To 5
aEst(k,r,e) = aNumEst(r,e)
Next
Next
Next
AlimentaMatriceEst = nTot > 0
End Function
Function GetFileCfgArchivio(sDirArc,nIdEstrIni,nClasse,nQArc)
GetFileCfgArchivio = sDirArc & "CFG_" & nIdEstrIni & "_" & nClasse & "_" & nQArc & ".dat"
End Function
Sub InitChiavi(aKey,nQ,nLenChiave,sDirArc,nIdEstrIni)
' inizializza le chiavi per creeare gli archivi virtuali
' le chiavi vengono prima cercate nel file delle chiavi
' se questo non esiste le chiavi vengono create daccapo
' e verra scritto il file in modo datrovarle la prossima volta
Dim k,coll,sTmpCol
Dim sFileChiavi
sFileChiavi = GetFileCfgArchivio(sDirArc,nIdEstrIni,nLenChiave,nQ)
ReDim aKey(nQ)
If FileEsistente(sFileChiavi) Then
ReDim aRighe(0)
Call LeggiRigheFileDiTesto(sFileChiavi,aRighe)
For k = 0 To UBound(aRighe)
aKey(k + 1) = aRighe(k)
Next
Else
Set coll = GetNewCollection
For k = 1 To nQ
ReDim aCol(0)
Call GetColonnaCasuale(nLenChiave,aCol)
sTmpCol = StringaNumeri(aCol)
Do While AddItemColl(coll,sTmpCol,"k" & sTmpCol) = False
Call GetColonnaCasuale(nLenChiave,aCol)
sTmpCol = StringaNumeri(aCol)
Loop
aKey(k) = sTmpCol
Next
Set coll = Nothing
For k = 1 To UBound(aKey)
Call ScriviFile(sFileChiavi,aKey(k),False)
Next
Call CloseAllFileHandle
End If
End Sub
Sub Main
Dim aKey ' array delle chiavi per creare gli archivi virtuali
Dim nQArchivi ' quantita degli archivi da creare
Dim nEstrIni ' estrazione dalla quale iniziare a creare le corrispondenti virtuali
Dim nClasseChiave ' classe per la chiave degli archivi
Dim sFileChiavi ' file che memorizza le chiavi per gli n archivi virtuali
Dim aEstAR ' matrice estrazioni archivio reale (Tot,Ruota,Pos)
Dim sDirArcVirt ' directory dove vengono creati gli archivi virtuali
Dim nQDaProc ' quantita di combinazioni da processare di quelle tornate dl metodo
nQDaProc = 3 ' le prime tre combinazioni tornate dal metodo
nQArchivi = GetQuantitaArchivi
nClasseChiave = ScegliClasse
nEstrIni = ScegliInizio
sDirArcVirt = GetDirectoryAppData & "ArcVirtEnigma\"
If VerificaCoerenza(nQArchivi,nClasseChiave,nEstrIni) Then
' creo la directry dove salvo gli archivi
If CreaDirectory(sDirArcVirt) Then
' legge le estrazioni dell'archivio reale e le mette in memoria
If AlimentaMatriceEst(aEstAR) Then
' inizializza le chiavi per la creazione dell'archivio virtuale
Call InitChiavi(aKey,nQArchivi,nClasseChiave,sDirArcVirt,nEstrIni)
[COLOR=#FF0000] Call CreaArchiviVirtuali(aKey,nQArchivi[/COLOR] [COLOR=#FF0000],nEstrIni,aEstAR,EstrazioniArchivio,sDirArcVirt)[/COLOR]
End If
End If
End If
End Sub