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

    [VB.NET]Inserire contenuto file in textbox

    Come faccio a leggere il contenuto di un file non di testo(zip,bmp...) ed inserirlo in una textbox(multiriga ovviamente)?

  2. #2
    Praticamente vuoi ottenere lo stesso effetto che si avrebbe se si aprisse uno di questo file con il bloc notes di Windows?

  3. #3
    In poche parole si. Leggendo pochi byte da un file bmp riesco ad ottentere:
    66771181550000005400040000950001380
    utilizzando il codice:
    codice:
    For i = 0 To 23
                DATA &= ByteArrayTemp(i)
    
            Next
    Che sarebbero i codici ASCII di:
    BMv› 6 ( _ Š
    Se invece uso:
    codice:
    For i = 0 To 23
                DATA &= chr(ByteArrayTemp(i))
    
            Next
    Ottengo solo la stringa BMv› Cioè non mi inserisce nella variabile DATA(string) tutto, si ferma al primo carattere spazio. Non so se ho reso l'idea.

  4. #4
    Il codice che uso per la lettura del file è:
    codice:
       Dim DATA As String
       Dim fileTemp As New FileInfo("C:\prova.bmp") 
    
            Dim fsTemp As FileStream = fileTemp.OpenRead()
    
        Dim i As Integer
        Dim nBytes As Integer = 23 'numero dei byte da leggere,         Dim ByteArrayTemp(nBytes) As Byte 'array che contiene i byte letti
            Dim nBytesReadTemp As Integer = fsTemp.Read(ByteArrayTemp, 0, nBytes) 'effettuo la lettura del file ed inserisco i byte letti nell'array
    
            For i = 0 To 23
                DATA &= Chr(ByteArrayTemp(i))
            Next
    
            MsgBox(DATA)
    Quando faccio msgbox (Data) mi esce solo BMv›
    :master: :master:

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    codice:
            Dim DATA As String
    
            Dim fileTemp As New FileInfo(".....")
            Dim fsTemp As FileStream = fileTemp.OpenRead()
    
            Dim nBytes As Integer = fileTemp.Length 'numero dei byte da leggere, 
            Dim ByteArrayTemp(nBytes) As Byte 'array che contiene i byte letti
            Dim nBytesReadTemp As Integer = fsTemp.Read(ByteArrayTemp, 0, nBytes) 'effettuo la lettura del file ed inserisco i byte letti nell'array
    
            DATA = System.Text.Encoding.ASCII.GetString(ByteArrayTemp)
    
            For I As Integer = 0 To 23
                TextBox2.Text &= DATA.Chars(I).ToString
            Next
    così funziona, ma ci vuole troppo tempo per un file intero, qualcosa mi sfugge... :master:

    se si fa TextBox2.Text = DATA.ToString non funziona, se si legge carattere per carattere si .... :master:
    Ans.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    ma è ovvio

    Tra i byte vi è il carattere nullo che è un string termination; in conversione in stringa alla prima occorrenza si blocca il parser. L'unico modo (credo) per visualizzare in una textbox o messagebox è facendo dopo la conversione da byte in string:

    TextBox2.Text = DATA.Replace(Convert.ToChar(0), String.Empty)

    Quindi togliere il carattere null.
    Ans.

  7. #7
    Grazie mille per l'interessamento.
    Ho fatto diverse prove ma non riesco a far funzionare il codice che hai postato.
    Dovrebbe essere proprio un problema di lettura del file, perché se imposto manualmente la stringa tutto funziona bene:
    codice:
    Dim prova As String = "BMv›      6   (   _   Š         @›                  ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙"
    Dim prova2() As Byte = System.Text.Encoding.Default.GetBytes(prova)
    
           Dim i As Integer
           For i = 0 To prova.Length - 1
               TextBox1.Text &= Chr(prova2(i).ToString)
           Next
    Potrei anche evitare di inserire quello che leggo dal file in una textbox mi basterebbe inserirlo in una semplice variabile o in un Array. Qualche suggerimento?
    Il mio scopo è quello di inviare un file tramite socket, perciò mi serve leggere i singoli byte dal file.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ha senso inserire i dati binari convertiti in ASCII in una textbox quindi lascia perdere.

    Pero' mi sembra di capire che i dati stanno gia' in un array di byte ... quindi il problema qual e'? Perche' non utilizzi l'array?

  9. #9
    Io vorrei inviare via socket dei files, per i file di testo(txt,HTML,rtf...) non ho problemi. I problemi sorgono con i file BMP,ZIP,AVI... che evidentemente non posso leggerli come dei file di testo. Allora li devo aprire, leggere ed inviare byte per byte, perciò dicevo di inserire il loro contenuto in una textbox o un array. Spero di essermi spiegato.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... lo avevo capito ... ma perche' per fare quanto chiedi non utilizzi l'array di byte che impieghi per la lettura del file?

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.