|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2003
Città: Varese
Messaggi: 331
|
Leggere un file...
E' possibile leggere un determinato campo "chiamandolo" per la posizione in cui si trova, in un file sequenziale?
Ho letto una sintassi di questo tipo: Input #numerofile, elencocampi "elencocampi" può essere una cosa tipo "riga-campo1" o "riga-campo12" o "riga-campo40"? Se si, com'è la sintassi corretta? In caso non fosse possibile come posso ottenere un risultato simile? tnx |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2002
Città: Biella
Messaggi: 1882
|
Prima di tutto nn è Elenco campi ma cosi:
Input #numerofile, elencovariabili c'è un po' di differenza ![]() Quello che vuoi fare tu fai in due metodi (almeno secondo me), il primo leggere in una varibile stringa tutto il file riga per riga con l'isctruzione "Line Input #numerofile, nomevariabile", l'istruzione successiva potrebbe essere cosi: sFile= sFile & nomevaribile & vbcrlf In questa maniera ti ricrei il file in una varibile e "giochi" con le stringhe...supponiamo che il tuo file sia del tipo: riga1=ciao1 riga2=ciao2 riga3=ciao3 Per leggere riga 2 fai una cosa del genere (ti riproduco un pezzo di codice) Codice:
Option Explicit Dim sFile As String Private Sub Form_Load() sFile = "" sFile = sFile & "riga1 = ciao1" & vbCrLf sFile = sFile & "riga2 = ciao2" & vbCrLf sFile = sFile & "riga3 = ciao3" & vbCrLf MsgBox (ValoreRiga("riga2")) End Sub Private Function ValoreRiga(ByVal sRiga As String) As String Dim lLen As Long lLen = InStr(sFile, sRiga) lLen = lLen + Len(sRiga) + 3 'tolgo il carattere " = " ValoreRiga = Mid(sFile, lLen, InStr(lLen, sFile, vbCrLf) - lLen) End Function Come seconda soluzione hai il metodo pià usato...cioè utilizzando le API di windows Codice:
Option Explicit Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long Public Sub WriteFileINI(ByVal sFile As String, ByVal sSezione As String, ByVal sChiave As String, ByVal sChiaveValore As String) 'scrittura file INI Call WritePrivateProfileString(sSezione, sChiave, sChiaveValore, sFile) End Sub Public Function ReadFileINI(ByVal sFile As String, ByVal sSezione As String, ByVal sChiave As String, Optional ByVal sChiaveValoreDefault As String = "") As String 'lettura file INI ReadFileINI = Space$(255) Call GetPrivateProfileString(sSezione, sChiave, sChiaveValoreDefault, ReadFileINI, Len(ReadFileINI), sFile) ReadFileINI = Left$(ReadFileINI, InStr(ReadFileINI, Chr$(0)) - 1) End Function ![]() ciaooooooooooooooo ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:42.