alessandro_ Inserito: 8 novembre 2004 Segnala Inserito: 8 novembre 2004 Ciao a tutti,Qualcuno di voi mi sa indicare come posso caricare una variabile con il contenuto di un file txt partendo da una posizione ben precisa utilizzando il comando line input# ?(scavalcando per es: i primi dieci caratteri)esempio di lettura txt:abcdefghilmnopqrstuvz....etc.caricare la variabile partendo dalla M cosi avendo nella variabile mnopqrstuvz....etc. Alessandro
giorgioco2 Inserita: 8 novembre 2004 Segnala Inserita: 8 novembre 2004 Naturalmente devi prima aprire il file (OPEN "nome file" FOR (in/out/random) AS #1)poi devi decidere se aprire il file come input, random eccSe apri come random e quindi sai dove posizionarti (byte), prendi tutta la stringa e poimanipolala con MID/RIGHT/LEFT ecc..spero di esserti stato utile...
TRUNC Inserita: 8 novembre 2004 Segnala Inserita: 8 novembre 2004 (modificato) Prova così:Private Sub cmdStart_Click() Dim sStringa As String Dim iLunghezza As Integer Open "TuoFile.txt" For Input As #1 Line Input #1, sStringa iLunghezza = Len(sStringa) If iLunghezza > 10 Then sStringa = Right(sStringa, iLunghezza - 10) Else sStringa = "" 'la riga ha meno di 11 caratteri End If Close #1 End SubCiao! Modificato: 8 novembre 2004 da Gabriele Corrieri
STEU Inserita: 8 novembre 2004 Segnala Inserita: 8 novembre 2004 Public Sub prova()Open "f:\nomefile.txt" For Input As #1Do While Not EOF(1) Line Input #1, a$ If InStr(1, a$, "m") > 0 Then variabile = Right(a$, Len(a$) - (InStr(1, a$, "M") - 1)) End IfLoopClose #1End SubSe ho capito bene quello che vuoi con questa rutine dovresti ottenere quello che vuoichiaramente al posto di "M" dovresti mettere una variabile al cui interno è memorizzata la lettera che ti serve com inizio ricerca.Variabile viene sempre sovrascritta però tu potresti creare una matrice ed il valore immetterlo nella matrice aumentando di volta in volta l'indiceSpero di essere stato chiaro
alessandro_ Inserita: 8 novembre 2004 Autore Segnala Inserita: 8 novembre 2004 (modificato) Signori miei....Funziona!Grazie mille.Alessandro Modificato: 8 novembre 2004 da alessandro_
STEU Inserita: 8 novembre 2004 Segnala Inserita: 8 novembre 2004 quale soluzione funziona? tutte e due?
nll Inserita: 8 novembre 2004 Segnala Inserita: 8 novembre 2004 Le due funzioni realizzano entrambe quanto richiesto.La soluzione di Steu mi sembra più versatile, in quanto analizza, riga per riga, l'intero file, ma ricerca un carattere, anziché una posizione, questo funziona se ti interessa trovare la prima ricorrenza di quel carattere nella riga (mi era parso, invece, che ti interessasse proprio partire da una posizione ben definita).La soluzione di Trunc funziona solo sulla prima riga, tralasciando le successive, ma credo che sia quel che stavi cercando (salvo che l'infomazione si trovi su più linee e tu intenda non perderti il resto)Bisognerebbe capire quali siano le reali necessità e, con un mix tra le due soluzioni, tirar giù il codice più appropriato.Personalmente avrei inteso la soluzione di Steu (più record da analizzare, linea per linea), ma con dati da rilevare a partire da una posizione ben definita (a partire dall'undicesimo carattere di ciascuna linea, come ha scritto Trunc)Gli strumenti per realizzare questo ci sono tutti, non sto quindi a ripetere il codice.
alessandro_ Inserita: 8 novembre 2004 Autore Segnala Inserita: 8 novembre 2004 Ho provato solo la soluzione di Trunc ed avendo ottenuto cio che cercavo non ho provato la tua (premetto che essendo un semi neofita di Vb fatico non poco anche per le cose + banali!)grazie ancora per la gentile collaborazioneAle
alessandro_ Inserita: 8 novembre 2004 Autore Segnala Inserita: 8 novembre 2004 (modificato) Ho ancora Bisogno di Voi...(sarebbe la ciliegina sulla torta )Dunque...La mia necessità è:Aprire un file txt partendo sempre dalla testa del filecancellare N righe, traslare il contenuto rimanente del txt verso l'alto di N righe quante ne ho tolte.salvare e chiudere il tutto.Es:apro file che contiene:riga 1riga 2riga 3riga 4riga 5riga 6cancello sempre le prime tre righe in testa e recupero verso l'alto in modo da ottenere: (non devo lasciare righe vuote!) riga 4riga 5riga 6Come posso Fare?Grazie per il Tempo dedicatomiAleP.S: Domani Posto porzione di codice con le Vostre Modifiche e Spiego meglio cosa Sono Riuscito ad ottenere con i Vs. Preziosi consigli precedenti Modificato: 8 novembre 2004 da alessandro_
ifachsoftware Inserita: 8 novembre 2004 Segnala Inserita: 8 novembre 2004 (modificato) La via piu' semplice (e forse anche la piu' veloce) e' quella di aprire il file da compattare in lettura ed creare un secondo file.Man mano che leggi le righe che ti servono , le scrivi sul file in uscita.Una volta terminato cancelli il file source e rinomini il target come source.Ciao Modificato: 8 novembre 2004 da ifachsoftware
STEU Inserita: 8 novembre 2004 Segnala Inserita: 8 novembre 2004 Public Sub prova()Open "f:\file1.txt" For Input As #1For a = 1 To 3 Line Input #1, b$Next aOpen "f:\file2.txt" For Output As #2Do While Not EOF(1) Line Input #1, b$ Print #2, b$LoopClose #1Close #2End Subse è solo per questo non preoccuparti.Non puoi avere più file con lo stesso nome nella stessa cartella o cambi il nome del file o cambi path.
nll Inserita: 9 novembre 2004 Segnala Inserita: 9 novembre 2004 VisualBasic "tollera" quando non dichiari una variabile prima di utilizzarla e le assegna il tipo "Variant" di default, che ti occupa il maggior spazio di memoria, perché ammette la registrazione di dati di qualunque tipo.Per abituarti a lavorare correttamente, ti consiglio di dicharare le variabili sempre prima di utilizzarle, e di assegnar loro il tipo giusto, in modo da rendere il tuo programma snello ed affidabile (con poche righe di codice non ti accorgi della differenza, ma la cosa si fa evidente in programmi complessi).
alessandro_ Inserita: 9 novembre 2004 Autore Segnala Inserita: 9 novembre 2004 (modificato) citazione di 3 post precedenti (ifach sw)Una volta terminato cancelli il file source e rinomini il target come source.E come si fa ad ottenere Questo in Visual Basic?Ale Modificato: 9 novembre 2004 da alessandro_
STEU Inserita: 9 novembre 2004 Segnala Inserita: 9 novembre 2004 Public Sub prova()Open "f:\file1.txt" For Input As #1For a = 1 To 3 Line Input #1, b$Next aOpen "f:\file2.txt" For Output As #2Do While Not EOF(1) Line Input #1, b$ Print #2, b$LoopClose #1Close #2Kill "f:\file1.txt"Name "f:\file2.txt" As "f:\file1.txt"End SubL'istruzione Kill cancella il file , l'istruzione name lo rinominaquando esegui kill devi essere sicuro che il file esissta altrimenti ti genera l'errore e lo devi gestire con ON ERROR
alessandro_ Inserita: 9 novembre 2004 Autore Segnala Inserita: 9 novembre 2004 (modificato) Mi Manca ancora una cosa...Come si crea un file txt nuovo,vuoto, in una path specifica.Es:voglio creare c:\pippo\pluto\paperino.txt (creato e compleatamente vuoto)Grazie ancoraAlePs: Vi devo una cena! :-) Modificato: 9 novembre 2004 da alessandro_
STEU Inserita: 9 novembre 2004 Segnala Inserita: 9 novembre 2004 la path esiste già o la devi creare?
alessandro_ Inserita: 9 novembre 2004 Autore Segnala Inserita: 9 novembre 2004 la devo creare,Tutto questo mi serve per far si che il tuo esempio funzioni non solo una volta ma che mi esegua cancellazione e traslazione di N linee su mio comando e sempre sullo stesso file sino ala cancellazione dell'intero contenuto.
STEU Inserita: 9 novembre 2004 Segnala Inserita: 9 novembre 2004 (modificato) Devi darmi più dati e devi farmi degli esempi perchè il file che ti ho creato puo' tutte le volte che vuoi fino a cancellare completamente il file, non aver paura di scrivere ti posso aiutare meglio.Descrivimi esattamente quello che hai cosa devi fare e cosa vuoi ottenere alla fine. Modificato: 9 novembre 2004 da STEU
alessandro_ Inserita: 9 novembre 2004 Autore Segnala Inserita: 9 novembre 2004 okLa mia necessita è cancellare su di un trigger 10 linee (partendo sempre dalla testa del file) di un file di testo (es. pippo.txt) e di traslarne il contenuto verso l'alto di modo che il resto del file parta sempre dalla prima linea ed ogni qual volta si presenta questo trigger riaprire sempre lo stesso file (pippo.txt)e cancellare ulteriori 10 linee e ritraslare ancora il restante contenuto sino alla prima liea del file, e così via sino alla cancellazione totale del contenuto.questo mi serve perche' ho realizzato delle maschere di inserimento\visualizzazione dati (for append access), e quindi ogni nuovo inserimento accodo nel file dieci nuove linee di dati (un lotto dati). le stesse maschere mi visualizzano poi l'inserimento di dati + vecchio (solo le prime dieci linee visto che i successivi li accodo)cio che mi serve adesso è un comando per poter cancellare il lotto dati + vecchio (le prime dieci linee x l'appunto)e traslare il contenuto verso l'alto portando il pen'ultimo lotto dati in testa al file (posizione per la corretta visualizzazione).Spero di essere riuscito a spegarmi meglio..Ale
STEU Inserita: 9 novembre 2004 Segnala Inserita: 9 novembre 2004 Public Sub prova()Open "f:\pippo.txt" For Input As #1For a = 1 To 10 Line Input #1, b$ If EOF(1) Then Close #1 Kill "f:\pippo.txt" Open "f:\pippo.txt" For Output As #1 Print #1, "" Close #1 Exit Sub End IfNext aOpen "f:\pippo2.txt" For Output As #2Do While Not EOF(1) Line Input #1, b$ Print #2, b$LoopClose #1Close #2Kill "f:\pippo.txt"Name "f:\pippo2.txt" As "f:\pippo.txt"End SubSe ho capito la rutine dovrebbe fare il caso tuoDevo ancora capire cosa intendi con:Come si crea un file txt nuovo,vuoto, in una path specifica.Es:voglio creare c:\pippo\pluto\paperino.txt (creato e compleatamente vuoto)ti do un consigilo vai a vedere nell'. le istruzionimkdir creazione di directorychdir cambia directori (il "cd" del vecchio DOS)rmdir rimuovi la directory (fuziona solo se ladirectory è vuota)utilizza . del vba di excel se non hai vb6
alessandro_ Inserita: 9 novembre 2004 Autore Segnala Inserita: 9 novembre 2004 Grazie Di cuore SteuDomani la provo.Devo scappare!ciao Alessandro
alessandro_ Inserita: 10 novembre 2004 Autore Segnala Inserita: 10 novembre 2004 Funziona.Grazie Mille ancora
Br1degi Inserita: 18 giugno 2005 Segnala Inserita: 18 giugno 2005 Semplicemente digitando:Open "c:\paperino.txt" For Append As #1Close #1Se il file non esiste viene creato, ma non il percorso. Quindi applica un controllo con l'istruzione vb "dir" per accertarti che il PERCORSO ESISTA, altrimenti è errore!!!Bye
alessandro_ Inserita: 20 giugno 2005 Autore Segnala Inserita: 20 giugno 2005 Grazie anche a te br1. :-)
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora