Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Comando VB System.IO.File.ReadAllText - Problema con la codifica dei file letti

    Salve,
    Sto cercando di impratichirmi con Visual Studio. Mi son messo a seguire passo passo questo tutorial.

    http://youtu.be/RqCpOykpQl8

    Per creare un editor testo simile a notepad. Quindi aprire il contenuto di un file e poi salvarlo.

    Nel Form c' un pulsante chiamato "btnOpen", un'altro chiamato "btnSave" e un riquadro testo chiamato "TextBox1"
    __________________________________________________ __________________

    Public Class Form1
    Dim ContenutoFile As String
    Private Sub btnOpen_Click(sender As Object, e As EventArgs) Handles btnOpen.Click
    If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    ContenutoFile = System.IO.File.ReadAllText(OpenFileDialog1.FileNam e)
    TextBox1.Text = ContenutoFile
    End If
    End Sub
    Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
    If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    System.IO.File.WriteAllText(SaveFileDialog1.FileNa me, TextBox1.Text)
    End If
    End Sub
    End Class
    __________________________________________________ __________________

    Il risultato fedele a quello prodotto nel tutorial. Apre piccoli file TXT mostrando il contenuto nel TextBox, e poi puoi salvare un file nuovo salvando al suo interno il contenuto del TextBox

    Il problema che funziona solo con file di testo semplici.

    Se io per esempio voglio editare il contenuto di un file che contiene dei simboli complessi, ascii, ecc.. non funziona

    Se per esempio volessi editare questa immagine PNG

    http://forum.html.it/forum/images/mi...etin4_logo.png

    Mi dovrebbe mostrare:

    PNG
    IHDR 3 #U +IDATx흿3E ... e via discorrendo

    Ne tanto meno riesce al salvarlo. Se io invece di fargli salvare il contenuto della TextBox gli faccio salvare ci che ha letto col comando ReadAllText

    System.IO.File.WriteAllText(SaveFileDialog1.FileNa me, TextBox1.Text)

    Lui comunque mi produce un file con delle caratteristiche di codifica diverse da quello di partenza.

    Mi dareste una mano?

    PS: solo lingua italiana per favore niente link di lezioni complesse in inglese

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prova ad utilizzare la classe Encoding

    http://msdn.microsoft.com/it-it/libr...v=vs.110).aspx

    nella ReadAllText
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Effettivamente un miglioramento c'. Se scrivo questo per aprire il file:

    ContenutoFile = System.IO.File.ReadAllText(OpenFileDialog1.FileNam e, System.Text.Encoding.ASCII)

    E se nel salvarlo, salvo direttamente ContenutoFile senza farlo passare dalla TextBox

    System.IO.File.WriteAllText(SaveFileDialog1.FileNa me, ContenutoFile)

    Effettivamente il file ricavato di dimensioni identiche al file di origine. Per editato la simbologia non corrisponde


    Al simbolo
    ascii(255) fa corrispondere ? (punto interrogativo)

  4. #4
    Non sar che devo modificare questa parte?

    Dim ContenutoFile As String

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La questione pi articolata.

    Ogni file di testo fatto usando un set di caratteri specifico e quindi potresti avere semplici file di testo ASCII ma anche UNICODE.
    Devi quindi tenere conto del formato in ingresso magari fornendo al tuo prodotto la possibilit che l'utente lo indichi esplicitamente (vedi Notepad++)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Ringrazio sempre per le risposti celeri. Allora, se il problema questo dovrei risolvere. Praticamente sto provando a creare un editor per dei file savegame. Quindi, se riesco a capire che codifica usano questi savegame, risolvo praticamente? Solo quei file dovrei aprire. Hai citato Notepad++ ... io c' l'ho installato,... con quello posso vedere la codifica usata dal file.sav?

    Praticamente su un forum di videogiochi viene mostrato un trucco (che io ho adottato), dove editando il savegame con un editor HxD che lo mostra il contenuto anche in esadeciamale... andando la cifra 2D4C... bla bla .. e cambiandola da 1E a 0A la cifra ...bla bla... Vabbuo ora non la metto per le lunghe. ... Cmq il metodo funziona alla grande, ma io non posso uscire pazzo ogni volta a fare sto casino... Sto cercando di produrmi da me. un prodotto che legge il file .sav, cambia un simbolo ascii ad una certa altezza e poi lo risalva senza alterare tutto il resto.

    Se becco la codifica usata dal file.sav, pu darsi che risolvo con questo codice? E come faccio a beccarlo?

    www.actiontrip.com/cheats/beyond-good-evil.phtml

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Parliamo di un file di testo? Puoi postare un link ad un esempio di piccolo file da poter scaricare e controllare?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Io sto lavorando su questo file: slot0.sav

    http://digilander.libero.it/develope...load/slot0.sav
    Ultima modifica di ArgonautaWEB; 19-11-2014 a 03:21

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma quello un file binario ... non puoi trattarlo come se fosse del testo. Non puoi usare ReadAllText o simili ... cambia tutto il discorso che si fatto fino ad ora.

    Devi usare un oggetto

    BinaryReader (per leggere)
    http://msdn.microsoft.com/it-it/libr...v=vs.110).aspx

    e

    BinaryWriter (per scrivere)
    http://msdn.microsoft.com/it-it/libr...v=vs.110).aspx

    In seguito devi trattare i singoli byte/word/dword con i metodi opportuni delle due classi, a seconda di cosa ti serve.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Oregon ho risolto ^_^

    Imports System
    Imports System.IO
    Imports System.Text


    Dim myFile As IO.FileStream
    Dim Lettura As String

    myFile = New IO.FileStream("slot0.sav", IO.FileMode.Open, IO.FileAccess.Read)
    myFile.Seek(LaPosizioneCheMiServe, 0)
    Lettura = myFile.ReadByte
    MsgBox(Lettura)

    Praticamente con Seek si posiziona al punto che so io, e con ReadByte mi da la cifra che normalmente cambio usando quell'editor HxD che me li mostra esadecimali

    Poi per salvare il file col valore cambiato


    myFile = New IO.FileStream("slot0.txt", IO.FileMode.Open, IO.FileAccess.Write)
    myFile.Seek(LaPosizioneCheMiServe, 0)
    Dim bteWrite As Byte = LaNuovaCifraSceltaDaMe
    myFile.WriteByte(bteWrite)

    Funziona Benissimo

    GRAZIE PER LA PAZIENZA OREGON

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.