Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    21

    [vb6] Aiuto con istruzione PUT

    ciao
    ho una serie di file 'ordinati' in maniera crescente da un valore. Sto cercando di utilizzare l'istruzione PUT allo scopo di riordinare questi file scambiandone quel valore. Seguendo diverse guide con esempi sono arrivato ad una sequenza di istruzioni. Ho semplificato qui sotto la routine che nell'intero sembra funzionare tranne che per la parte in cui cambio il valore. Ho anche allegato un'immagine per far vedere qual è la posizione del valore usando un editor esadecimale. Quello 0454 (1108 in dec) dovrebbe diventare il valore che voglio inserire ma il file continua a sballare dopo tanti tentativi. Qualche aiuto per favore? Grazie mille!

    codice:
    ...
    For X = 0 To Listafiles - 1 
    iFile = FreeFile 
    Open "ListaFile.ext" For Binary As iFile 
    lByteLen = LOF(iFile) 
    MyValue = 1108 + X 
    MyPos= 25
    Put iFile, MyPos, MyValue
    Close iFile 
    Next X
    ...
    Immagini allegate Immagini allegate

  2. #2
    Non è molto chiaro..

    Listafiles che cos'è? Una variabile spero..

    Qual'è l'errore riscontrato? Non da errori ma non funziona?

    In ogni caso già c'è un errore: quando usi ifile , devi sempre anteporre a tale variabile il carattere "#", cioè:

    codice:
    Open "listafile.ext" for binary as #iFiles
    e poi:

    codice:
    Put #ifiles, ...
    Inoltre questa riga di codice
    codice:
    MyPos= 25
    può stare anche al di fuori del ciclo..


    Ciao

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non semplificare il codice ... mostralo tutto ... magari il problema è da qualche altra parte ...

    Anche perché così quel ciclo non ha senso, dato che l'ultimo valore sarà quello effettivamente scritto nel file.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    21
    ciao, Listafile è una listbox che contiene i nomi dei file da modificare. Dovrebbe essere infatti
    codice:
    For x= 0 to ListaFile.listcount-1
    errore mio nel trascrivere qui. Il codice sostanzialmente è questo, l'unica differenza sta nel percorso al file accorciato perchè montato dal contenuto di textbox e listbox quindi piuttosto lungo. Ho aggiunto "#" nell'open, credo che vada messo anche in Close a questo punto,

    codice:
    MyPos= 25
    For X = 0 To ListaFile.ListCount - 1 
    iFile = FreeFile 
    Open App.Path & "\Data\" & Combo1.Text & "\" & Text1.text & "\" & ListaFile.List(X) & ".jam" For Binary As #iFile
    lByteLen = LOF(iFile) 
    MyValue = 1108 + X
    Put #iFile, MyPos, MyValue 
    Close #iFile
    Next X
    in pratica ho questi 10 files che hanno un valore all'interno 0454, 0455, 0456... 045D, 045E che ne stabiliscono l'ordine. Mi occorre cambiare l'ordine di questi files, quindi in ListaFiles creo il nuovo ordine e con il ciclo reimposto la sequenza 0454, 0455, 0456... 045D, 045E da assegnare ad ognuno.

    L'idea era che in MyValue ad ogni ciclo ho il valore crescente (1108+0)(1108+1)...(1108+9) che in esadecimale diventano 0454 0455... e in MyPos la posizione nel file in cui scriverlo. Il ciclo termina senza errori ma il valore impostato nel file non è quello che mi aspettavo.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ... riporta il codice corretto senza fare modifiche ...

    In ogni caso, ho provato e funziona correttamente ... sei sicuro di controllare il file giusto nella cartella giusta dopo la scrittura?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    21
    la riga diversa è questa
    codice:
    Open App.Path & "\Data\" & Combo1.Text & "\" & Text1.text & "\" & ListaFile.List(X) & ".jam" For Binary As #iFile
    i file li modifica tutti ma non ritrovo il valore inserito. Che sbagli posizione o conversione?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    A questo punto restano da vedere tutte le dichiarazioni delle variabili ... ce le mostri?

    Sei sicuro che il nome completo del file sia formato correttamente? Nel nome del file manca l'estensione che aggiungi in seguito (.jam) o magari nel nome l'estensione c'è già ?

    Per tagliare la testa al toro, con una Msgbox, visualizza il nome completo del file passato alla Open per controllare che il file sia quello giusto ...


    P.S. La riga

    lByteLen = LOF(iFile)

    non mi pare ti serva a nulla
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    21
    codice:
    Dim iFile  As Integer
    Dim MyValue As Byte
    Dim lByteLen As Long
    ho dichiarato queste in testa alla pagina di codice

    lByteLen onestamente l'ho ereditata dal codice esempio, sembrava settasse qualcosa, la toglierò

    il percorso è corretto. ho usato il debug.print per testarlo e comunque a qual percorso i file effettivamente li trova

    mi sorge il dubbio quindi che la dichiarazione Dim MyValue As Byte sia in conflitto con
    MyValue= 1108+x che sarebbe un integer, può essere? Dovrebbe essere MyPos il byte. provo un attimo

  9. #9
    Ma il programma ha solo le righe di codice che hai postato? Altrimenti postalo tutto..

    Prova così:

    codice:
    myvalue = 1108 + CByte(x)
    Ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    21
    grande! adesso sembra stia funzionando. Ora si riesco a vedere il valore che voglio impostare. Finalmente!

    Questo mi ha fatto notare che il byte editato non è nella posizione giusta
    MyPos=25 segna il punto d'inizio ma il byte verrà scritto nelle 'caselle' seguenti, infatti me lo sono ritrovato nei due slot a fianco di quelli che ho evidenziato nell'immagine allegata.

    ho impostato MyPos=23 e ora funziona e il file riconosce la modifica!

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.