Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. Visual Studio 6.0
[VB.NET] File di testo
giovedì 15 settembre 2005 - 12.13
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
redman83
Profilo
| Newbie
16
messaggi | Data Invio:
gio 15 set 2005 - 12:13
Salve a tutti,vi spiego il mio problema:
ho due file di testo: file1 di origine
file2 di backup
Devo fare in modo di copiare il contenuto del file uno nel file due seguendo queste direttive:
Leggere i due file:
- se nel file 1 è presente una riga non presente nel file 2 inseriscila/aggiungila nel file 2;
- se nel file 1 è presente una riga uguale a quella nel file 2 sovrascrivila nel file 2;
- se nel file 1 è presente una riga parzialmente uguale a quella nel file 2 sovrascrivila nel file 2;
il file di testo è strutturato in questo modo:
Ho notato inoltre che leggendo il file alcune righe non vengono copiate per intero ma il puntatore viene mandato a capo in maniera casuale.
ESEMPIO FILE1 & FILE2:
022 scavo su ls per tubolare 06/13/96* - - M úD HD BÓQ ° N N
023 scont.+scan.lat.ls battut 04/15/97* Õ Õ M E `D BÓQ© ° S N
024 scont.+scan.lat.is battut 04/15/97* ë ë M E `D BÓQ© ° S N
0244ARCLSSZ5 lav. est. ls spizzura 02/08/05* M @E @SD B¸Q© ° A N
0244ARCPCSZ5 lav. est. pc spizzura 02/08/05* ñðM @E GD B¸Q© ± N N
025 serratura di sicurezza 12/20/95* ; ; M ÈC C BÓQÿ ¡ A N
0251PCINT5 pc int bascultech 05/02/05* ¨©M ÀâD GD BÝQ ½ N N
026 scont.+scan.lat.cs-is.... 06/19/96* ± ² M E `D BÓQ© ° S N
0261 PANNEST5 centrale std vip 01/0104/27/05* . . M úD kD AÝQ ° A N
027 scont.+scan.lat.per ls 06/19/96* M E DffBÓQ© ° S N
le posizioni dei caratteri sono ovviamente sballate....se qualcuno mi potrebbe aiutare ne sarei grato!
Sono a disposizione per chiarimenti e specifiche dei due file...in caso ne invio una copia via mail.
Grazie
redman83
Profilo
| Newbie
16
messaggi | Data Invio:
gio 15 set 2005 - 13:00
E mi puoi indirizzare a qualche esempio di utilizzo? grazie.
redman83
Profilo
| Newbie
16
messaggi | Data Invio:
gio 15 set 2005 - 14:03
Scusa ma non ce ne capisco molto, ho sentito perlare dei filestream e ho appreso qualche esempio, mi sai dare qualche indicazione in merito?
Mi potresti aiutare in qualcosina anche nel codice?
grazie...mille
redman83
Profilo
| Newbie
16
messaggi | Data Invio:
gio 15 set 2005 - 14:35
Allora quello che devo fare in pertenza:
leggere il file 1
leggere il file 2
while not EOF file 1
leggi riga 1
salvala temporaneamente in una variabile A
while not EOF file 2
leggi riga1
salvala temporaneamente in una variabile B
#confronto# A con B
if A=B then riga1.B = riga1.A
elseif A<>B then (insert riga1.A in riga1.B)
'il controllo dell'uguaglianza deve venir fatto attraverso il confonto di determinati caratteri presenti ad una data posizione all'interno della riga.
loop
loop
close file 1
close file2
Questa è una pseudo-codifica aspetto un aiuto o correzione.
Grazie Mille
redman83
Profilo
| Newbie
16
messaggi | Data Invio:
gio 15 set 2005 - 15:39
ma il codice riportato è per VB .NET??????
mi sembra di no :-(
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
gio 15 set 2005 - 16:22
Se fai questa domanda mi sorge il dubbio che tu stia postando nella sezione sbagliata (lo voglia fare con vb6 e non con vb.net) oppure in alternativa che tu non abbia la più pallida idea di come realizzarlo con vb.net e aspetti che qualcuno ti scriva l'intero programma.
redman83
Profilo
| Newbie
16
messaggi | Data Invio:
gio 15 set 2005 - 16:43
Il programma lo voglio fare in vb .NET ma sono alle prime armi e non capisco molto.
il textreade e il textwriter mi vengono segnalati come errori nel compilatore.
Grazie.
redman83
Profilo
| Newbie
16
messaggi | Data Invio:
mer 21 set 2005 - 16:43
Penso ci siamo,dopo un pò di pazienza a leggere e studiare un po.
il codice è il seguente.:
Private Const FILE_NAME As String = "c:\dati\origine0.txt"
Private Const FILE_NAME2 As String = "c:\dati\backup0.txt"
Public Sub readtext()
If File.Exists(FILE_NAME) Then 'se il file esiste
Dim sr As StreamReader = File.OpenText(FILE_NAME) 'inizializzo il file origine dichiarato in sr
Dim sr1 As StreamWriter = File.CreateText(FILE_NAME2) 'inizializzo il file backup dichiarato in sr1
Dim input As String
input = sr.ReadLine() 'inizializza la variabile a contenere il valore di readline
While Not input Is Nothing 'finchè il valore non è nullo
Console.WriteLine(input) 'scrive nella console il valore della variabile
input = sr.ReadLine() 'legge la riga assegnando il valore alla variabile input
sr1.WriteLine(input) 'scrive le righe nel file di output
End While 'fine ciclo
Console.WriteLine("Fine del file") 'scrivi in console il mess fine del file
sr.Close() 'chiudi file
sr1.Close()
Else : MessageBox.Show("Il file origine non esiste!")
End If
End Sub
ora il problema sembra sia che nella copia dal file 1 al file 2 mi salta la prima riga e quando copia riga per riga dal primo file al secondo file non tiene presente dei caratteri speciali.
Esempio:
FILE1
0 *** server primary ******03/24/05* M zD zD zD hyÿ N N
00 *** storico programmi****03/24/05* M zD zD zD hyÿ N N
000 *** backup pgm **********03/24/05* M zD zD zD hyÿ N N
0000 *** server rete b1 ******12/21/01* M zD zD zD f¤ÿ N N
00000 *** server rete b2 ******12/21/01* M zD zD zD f¤ÿ N N
000000 *** server rete b3 ******12/21/01* M zD zD zD f¤ÿ N N
0000000 *** server rete b4 ******12/21/01* M zD zD zD f¤ÿ N N
020 old 1fase fr.diam.24 m1 03/10/99* M úD HD BÅQÿ ° S N
021 scavo lat.post.mdf fr.75 06/14/96* _ _ M úD HD BÓQ ° S N
022 scavo su ls per tubolare 06/13/96* - - M úD HD BÓQ ° N N
023 scont.+scan.lat.ls battut04/15/97* Õ Õ M E `D BÓQ© ° S N
024 scont.+scan.lat.is battut04/15/97* ë ë M E `D BÓQ© ° S N
0244ARCLSSZ5 lav. est. ls spizzura 02/08/05* M @E @SD B¸Q© ° A N
0244ARCPCSZ5 lav. est. pc spizzura 02/08/05* ñðM @E GD B¸Q© ± N N
0284PBLPINT5 pbl int optima eletta 22/03/05* j j M @E TD AÝQ© ° N N
FILE2
00 *** storico programmi****03/24/05* M zD zD zD hy N N
000 *** backup pgm **********03/24/05* M zD zD zD hy N N
0000 *** server rete b1 ******12/21/01* M zD zD zD f N N
00000 *** server rete b2 ******12/21/01* M zD zD zD f N N
000000 *** server rete b3 ******12/21/01* M zD zD zD f N N
0000000 *** server rete b4 ******12/21/01* M zD zD zD f N N
020 old 1fase fr.diam.24 m1 03/10/99* M D HD BQ S N
021 scavo lat.post.mdf fr.75 06/14/96* _ _ M D HD BQ S N
022 scavo su ls per tubolare 06/13/96* - - M D HD BQ N N
023 scont.+scan.lat.ls battut04/15/97* M E `D BQ S N
024 scont.+scan.lat.is battut04/15/97* M E `D BQ S N
0244ARCLSSZ5 lav. est. ls spizzura 02/08/05* M @E @SD BQ A N
0244ARCPCSZ5 lav. est. pc spizzura 02/08/05* M @E GD BQ N N
0284PBLPINT5 pbl int optima eletta 22/03/05* j j M @E TD AQ N N
grazie mille a tutti per la collaborazione!!!!
cmarco15
Profilo
| Newbie
1
messaggi | Data Invio:
dom 30 set 2007 - 18:32
Nuovo della community
Utente dal: 30-09-2007
Messaggi: 1
Ciao ragazzi,
ho bisogno di aiuto per esportare dei dati da un file .LIS (consideriamo come se fosse .TXT)
Dunque:
All'interno del file che dobbiamo analizzare ho i dati che si trovano o dopo la stringa A o dopo la stringa B entrambe in una riga sconosciuta ma comunque dopo la 100esima riga.
Quindi dovrei iniziare la ricerca dei dati (o meglio della stringa A o B) dalla 100edima riga.
Una volta trovata A o B, nella riga successiva si trovano 5 colonne di numeri leggermente spostati rispetto al'inizio delle riga, come ad esempio (uso il carattere _ come se fosse lo spazio):
_________456.982_______ 98345.44_______ 8875.3
________-548.980________ -393.730_________ -9.3
____________ 5.0_____________ 45__________ 45
C
Tali dati devono essere letti fino a quando non si incontra la stringa C
In realtà non so a priori la lunghezza di questi numeri so solo che sono incolonnati a destra.
Bene, secondo voi come posso estrarre le colonne con una macro VBA in excel
e poi scriverli su un file di testo nuovamente incolonnati in questo modo?
Potete aiutarmi, è veramente urgente per la mia tesi!!
Grazie,
potete rispondere anche sulla mia e-mai: ge-vt@libero.it
CIAO
MArco
icchio
Profilo
| Newbie
8
messaggi | Data Invio:
ven 19 ott 2007 - 07:48
Chiedo scusa...non ho capito molto di cosa devi fare....cmq ho capito che devi lavorare su le stringhe...
ti posto un apio di righe che io utilizzo spesso....magari ti sono d'aiuto...
app = Mid(setread, InStr(setread, "-") + 1) ----> questa è per spezzare la stringa mid('nomevariabile','posizione inizio','posizionefinale') l'InStr staper identificare un carattere da cui iniziare nella parentesi trovi il nome della variebile e il carattere da cercare.
in poche parole quella che vedi sopra scrive in app il contenuto dellla stringa setread a partire dal carattere successivo(+1) al primo '-' che trova......
naturalemte se avessi messo mid(setread,1,instr(setread,"-")) avrebbe scritto dall'inizio della stringa fino al primo meno incontrato.
If System.IO.File.Exists("pathfile") Then --> controllo che verifica l'esistenza di un file
System.IO.File.WriteAllText(Application.StartupPath + "filepath", 1) ------>scrive in un file la variabile o il valore dopo la virgola
setread = System.IO.File.ReadAllText("path") ---> legge il contenuto di un file e lo inserisce in una variabile.
non so se ti sono stato di aiuto.....
cmq ci sono moltissime altre cose su le stringhe che sicuramente tanti altri sanno molto meglio di me!
CIAO!!
Stay Safe.
suabrio
Profilo
| Newbie
7
messaggi | Data Invio:
lun 3 ago 2009 - 23:24
Buongiorno a tutti,
io stò cercando di leggere delle righe da un file txt, splittare i vari campi e inserirle in un db sql..
Sono riuscito a realizzare tutte queste operazioni, ma ho un problemino, Streamreader mi legge una riga si e una no... non riesco a capire perchè..
qualcuno ha qualche idea?
Grazie
' Conto il numero di righe del file
Dim lines As String() = IO.File.ReadAllLines(nomefiletemp)
num_righe = lines.Length()
' Connessione a DB
Dim DS As DataSet
Dim MyConnection As SqlConnection
Dim MyDataAdapter As SqlDataAdapter
'Create a connection to the SQL Server.
MyConnection = New SqlConnection("Data Source=ancia;Initial Catalog=test_db;Integrated Security=True")
'Richiamo la sp che legge l'ID dell'ultimo record inserito avente anno uguale all'attuale
MyDataAdapter = New SqlDataAdapter("sp_NCampi", MyConnection)
MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pANNO", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters("@pANNO").Value = Now.Year
DS = New DataSet() 'Create a new DataSet to hold the records.
MyDataAdapter.Fill(DS, "sp_NCampi") 'Fill the DataSet with the rows returned.
' Numero di record restituiti
num_ID = CInt(DS.Tables(0).Rows.Count().ToString())
' Valore record ordinato
If num_ID = 0 Then
val_ID = 0
Else
val_ID = CInt(DS.Tables(0).Rows(0).Item(0))
End If
MyDataAdapter.Dispose() 'Dispose of the DataAdapter.
MyConnection.Close() 'Close the connection.
' Ora conosco il valore di riga da cui iniziare a leggere..
' Testo se il valore di righe del file è maggiore del numero di record in DB +1
' se non lo è non serve aggiungere
If num_righe > (val_ID + 1) Then
' eseguo aggiornamento
Try
Using sr1 As StreamReader = New StreamReader(nomefiletemp)
i = 0
' temp1 = sr1.ReadLine()
Do Until i = (val_ID + 1)
temp1 = sr1.ReadLine()
i = i + 1
Loop
Do Until sr1.ReadLine Is Nothing
temp1 = sr1.ReadLine()
If i > 0 And temp1 <> Nothing Then
COLNU = CInt(call_class.ExtractWords(temp1, ";")(0))
QUALI = CInt(call_class.ExtractWords(temp1, ";")(1))
ANNO = CInt(call_class.ExtractWords(temp1, ";")(2))
MESE = CInt(call_class.ExtractWords(temp1, ";")(3))
GIORNO = CInt(call_class.ExtractWords(temp1, ";")(4))
DIA_NOM = CInt(call_class.ExtractWords(temp1, ";")(5))
DIA_REAL = CInt(call_class.ExtractWords(temp1, ";")(6))
'LINEA = CInt(call_class.ExtractWords(temp1, ";")(7))
FmN = CInt(call_class.ExtractWords(temp1, ";")(9))
Reh = CInt(call_class.ExtractWords(temp1, ";")(11))
Rm = CInt(call_class.ExtractWords(temp1, ";")(12))
Feh = CInt(call_class.ExtractWords(temp1, ";")(13))
Rm_Re = CInt(call_class.ExtractWords(temp1, ";")(14))
PESO_M = CInt(call_class.ExtractWords(temp1, ";")(17))
End If
'Create a DataAdapter, and then provide the name of the stored procedure.
MyDataAdapter = New SqlDataAdapter("sp_InsData", MyConnection)
'Set the command type as StoredProcedure.
MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
'Create and add a parameter to Parameters collection for the stored procedure.
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pID", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pTIMESTAMP", SqlDbType.DateTime))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pCOLNU", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pQUALI", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pANNO", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pMESE", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pGIORNO", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pDIA_NOM", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pDIA_REAL", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pFmN", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pReh", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pRm", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pFeh", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pRm_Re", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@pPESO_M", SqlDbType.Int))
MyDataAdapter.SelectCommand.Parameters("@pID").Value = i
MyDataAdapter.SelectCommand.Parameters("@pTIMESTAMP").Value = Now
MyDataAdapter.SelectCommand.Parameters("@pCOLNU").Value = COLNU
MyDataAdapter.SelectCommand.Parameters("@pQUALI").Value = QUALI
MyDataAdapter.SelectCommand.Parameters("@pANNO").Value = ANNO
MyDataAdapter.SelectCommand.Parameters("@pMESE").Value = MESE
MyDataAdapter.SelectCommand.Parameters("@pGIORNO").Value = GIORNO
MyDataAdapter.SelectCommand.Parameters("@pDIA_NOM").Value = DIA_NOM
MyDataAdapter.SelectCommand.Parameters("@pDIA_REAL").Value = DIA_REAL
MyDataAdapter.SelectCommand.Parameters("@pFmN").Value = FmN
MyDataAdapter.SelectCommand.Parameters("@pReh").Value = Reh
MyDataAdapter.SelectCommand.Parameters("@pRm").Value = Rm
MyDataAdapter.SelectCommand.Parameters("@pFeh").Value = Feh
MyDataAdapter.SelectCommand.Parameters("@pRm_Re").Value = Rm_Re
MyDataAdapter.SelectCommand.Parameters("@pPESO_M").Value = PESO_M
MyDataAdapter.SelectCommand.Parameters("@pID").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pTIMESTAMP").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pCOLNU").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pQUALI").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pANNO").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pMESE").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pGIORNO").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pDIA_NOM").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pDIA_REAL").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pFmN").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pReh").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pRm").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pFeh").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pRm_Re").Direction = ParameterDirection.Input
MyDataAdapter.SelectCommand.Parameters("@pPESO_M").Direction = ParameterDirection.Input
DS = New DataSet() 'Create a new DataSet to hold the records.
MyDataAdapter.Fill(DS, "sp_InsData") 'Fill the DataSet with the rows returned.
MyDataAdapter.Dispose() 'Dispose of the DataAdapter.
MyConnection.Close() 'Close the connection.
val_ID = val_ID + 1
i = i + 1
Loop
sr1.Close()
End Using
Catch ex As Exception
Dim strMsg As String
strMsg = "Errore di Sistema!" & vbCrLf
strMsg += ex.Message
MsgBox(strMsg)
End Try
End If
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !