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

    VISUAL BASIC 6 - invio file tramite winsock - parte 3 (e speriamo l'ultima)

    RIPRENDENDO DAL SECONDO POST (è inutile che commenti ulteriormente il moderatore...)

    conosco la funzione mod
    cosa fa di preciso? sareste così gentili da spiegarmelo (la parola gentile è riferita a tutti tranne che al moderatore... )?

    ricapitolando faccio

    n=int(lunghezza/4000)
    for i=1 to n (0 n-1??)
    .....
    next i
    redim s(lunghezza(mod 4000))
    winsock1.send s
    ...

    ho scritto bene?? (ti ripeto nn ho mai usato mod quindi nn so come vada scritto)

    Grazie mille Ciao

    p.s. ma tu nn dormi mai???

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da fpgiuliano
    RIPRENDENDO DAL SECONDO POST (è inutile che commenti ulteriormente il moderatore...)
    Ho rimosso ovviamente l'inutile commento ("speriamo l'ultima") dal titolo poiché ininfluente e, soprattutto, perché avrei dovuto scriverlo io, al massimo, e non tu.

    Sul moderatore credo non ci sia nulla da dire: hai visto che, a forza di chiudere discussioni, hai capito come si fa?

    Buona prosecuzione e mi raccomando per il futuro...

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Io posso essere gentile nel continuare a rispondere ma tu devi essere un momentino piu' "rispettoso" della comunita' e di chi contribuisce gratuitamente a tenerla ordinata ed efficiente affinche' anche tu possa usufruirne e risolvere i tuoi problemi ... ok ...?

    Detto questo, mod e' un operatore binario (inteso "che opera con due operandi", come la divisione ...).

    Il modulo (mod) e' il resto della divisione. Mentre la parte intera dell'operazione

    10/3

    e' 3 (10 diviso 3), il modulo

    10 mod 3

    e' 1 perche' il resto di tale divisione e' 1 (10 diviso 3 uguale 3 con resto 1).

    Per il codice

    codice:
    n=int(lunghezza/4000)
    for i=1 to n 
      ' leggi dal file nel buffer
      ' invia con winsock il buffer
    next i
    m=lunghezza mod 4000
    if m>0 then
      redim s(lunghezza(mod 4000))
      winsock1.send s
    end if
    devi controllare che il modulo sia maggiore di 0 (perche' puo' capitare che la lunghezza sia multipla di 4000 e non esiste un ultimo pezzo da inviare ...)

    P.S. Dormo quanto basta ...

  4. #4
    x il moderatore:
    Scusa hai ragione, ma il dente nero ( ) è proprio brutto!!
    forse per me era più indicato :berto:

    x il GENIO (e confermo genio, almeno per me)
    Grazie mille

    piu' tardi metto insieme le cose e ti faccio sapere

    bye
    Francesco

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Va be' ... comunque questa linea

    redim s(lunghezza(mod 4000))

    deve essere

    redim s(m)

  6. #6
    ho modificato le cose e alle fine ci sono riuscito

    il problema ora è che quando faccio

    open percorso for binary as #1
    ...
    close #1

    se, tenendo aperta l'applicazione , vado a cancellare o rinominare il file, mi esce errore il file è utilizzato da un altro programma

    Perchè fa così? una volta che faccio close #1 nn dovrebbe rilasciare il file??

    o devo settare un qualche cosa = nothing o roba simile??

    Thanks
    Francesco

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Solo dopo che fai il close il file puo' essere rinominato ... evidentemente pensi che il close venga eseguito ma, chissa' perche', non e' cosi' ...

  8. #8
    ma come diamine è possibile ho fatto il close
    l'ho messo anche più volte in sequenza
    però nn cambia nulla

    suggerimenti?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ci fai vedere il codice?

  10. #10
    Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
    Dim DATI As String
    Dim s() As String

    Winsock2.GetData DATI

    s = Split(DATI, "|")

    Select Case s(0)

    Case "GETFILE"
    Open PASDA For Binary As #5

    Case "RIC"
    IsReceived = True

    Case "END"
    Close #5
    DoEvents

    Case Else
    Put #5, , DATI
    DoEvents
    Winsock2.SendData "RIC|"
    ProgressBar1.Value = ProgressBar1.Value + 1

    End Select

    End Sub

    Public Function SendFile(NomeFile As String) As Boolean
    On Error GoTo errore
    Dim bytBuf() As Byte
    Dim z As Integer

    z = FreeFile

    ByteNow = 0
    'FILE|PERCORSO|DIMENSIONE
    Winsock2.SendData "GETFILE|" & NomeFile & "|" & CStr(FileLen(txtTrasfFile.Text))
    DoEvents

    Open txtTrasfFile.Text For Binary As #z


    ReDim bytBuf(1 To 4096) As Byte

    Do Until (FileLen(txtTrasfFile.Text) - ByteNow) < 4096

    DoEvents
    Get #z, ByteNow + 1, bytBuf()

    ByteNow = ByteNow + 4096

    DoEvents
    IsReceived = False
    Winsock2.SendData bytBuf
    While IsReceived = False
    DoEvents
    Wend

    Loop

    Dim LastChunkSize As Long
    LastChunkSize = FileLen(txtTrasfFile.Text) - ByteNow

    DoEvents
    ReDim bytBuf(1 To LastChunkSize) As Byte
    Get #z, ByteNow + 1, bytBuf()

    ByteNow = ByteNow + LastChunkSize

    DoEvents
    IsReceived = False
    Winsock2.SendData bytBuf
    While IsReceived = False
    DoEvents
    Wend

    Close #z
    DoEvents
    Winsock2.SendData "END|"
    DoEvents
    Exit Function

    SendFile = True
    errore:
    End Function

    Che ne dite io l'ho provato e funziona, o meglio i file me li trasferisce a parte quella seccatura della chiusura
    Un altro problema è sorto un con file pdf di 39 kb nn ne vuole sapere di inviarlo è l0unico file che nn riesco ad inviare, ho inviato file da 2 kb fino a 50mb e tutto ok ma cn questo di 39kb nada

    UFFA!

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.