JavascriptProva

venerdì 6 gennaio 2012

Convertitore di parentesi angolari completato!

Ecco il codice definitivo, bello e aggiustato, del mio convertitore di parentesi angolari in sequenze di escape:
Module Module1
    Sub main()
        Dim variabile As Byte
        FileOpen(1, "C:\Users\Io\Documents\file.txt", OpenMode.Binary)
        FileOpen(2, "C:\Users\Io\Documents\output.txt", OpenMode.Binary)
        Dim n As Integer = 1, k As Integer = 1
        Do Until EOF(1)
            FileGet(1, variabile, n)
            Debug.Print(variabile)
            If variabile = 60 Then
                variabile = 38
                FilePut(2, variabile, k)
                k = k + 1
                variabile = 108
                FilePut(2, variabile, k)
                k = k + 1
                variabile = 116
                FilePut(2, variabile, k)
                k = k + 1
                variabile = 59
                FilePut(2, variabile, k)
            Else
                FilePut(2, variabile, k)
            End If
            n = n + 1
            k = k + 1
        Loop
    End Sub
End Module
Questo è il file output.txt che sul web appare con le giuste parentesi angolari:
<html>
<head>
<title>
Pagina di prova
</title>
</head>
<body>
<div style="color:red">Questo è un testo di prova</div>
</body>
</html></html>
E questo è il file output.txt come è realmente sullo schermo del computer:



Ottimo!
Adesso devo ristudiare il modo di usarlo dalla linea di comando!

Ma un momento! Perchè mi ha scritto due volte </html> alla fine?

Rifacciamo... mmmhhh... no, era perchè in precedenza avevo usato un numero di caratteri più lungo, e le nuove scritture hanno sovrascritto tutto tranne l'ultimo tag che ci avanzava.
Questo pone il problema di cancellare tutto il file prima di sovrascriverlo...
L'ho sistemato in breve!
Module Module1
    Sub main()
        Dim variabile As Byte
        My.Computer.FileSystem.DeleteFile("C:\Users\Io\Documenti\output.txt")
        FileOpen(1, "C:\Users\Io\Documents\file.txt", OpenMode.Binary)
        FileOpen(2, "C:\Users\Io\Documents\output.txt", OpenMode.Binary)
        Dim n As Integer = 1, k As Integer = 1
        Do Until EOF(1)
            FileGet(1, variabile, n)
            Debug.Print(variabile)
            If variabile = 60 Then
                variabile = 38
                FilePut(2, variabile, k)
                k = k + 1
                variabile = 108
                FilePut(2, variabile, k)
                k = k + 1
                variabile = 116
                FilePut(2, variabile, k)
                k = k + 1
                variabile = 59
                FilePut(2, variabile, k)
            Else
                FilePut(2, variabile, k)
            End If
            n = n + 1
            k = k + 1
        Loop
        FileClose(2)
        FileClose(1)
    End Sub
End Module
Il file output.txt precedente viene cancellato e quindi ricreato.
Facile!

Nessun commento:

Posta un commento