Newsgroup: it.comp.lang.visual-basic
Titolo: Creare un nuovo file prendendo alcuni campi di un altro...

Salve,
devo creare un file partendo da uno già esistente, datemi una
mano...precisamente, da quello esistente devo prendere dei pezzi ben
precisi. Faccio un esempio. Ammettiamo che io ho un file testuale come
questo:
AAAABBBBCCDDD00000   EFFFGGG001
AAAABBBBCCDDD00010   EFFFGGG002
-
-
AAAABBBBCCDDD00100   EFFFGGG009
il contenuto del file non è poi importantissimo, questo è solo un
esempio (in quello che userò io ci sono altre cose). Tutte le righe
sono però incolonnate in modo da creare una sorta di tabella. Se io
volessi prendere solo alcune parti di ogni riga e scriverle su un
nuovo file che appaia come questo:
AAAADD00000   GGG001
AAAADD00010   GGG002
-
-
AAAADD00100   GGG009
com' è che devo fare? Non ho idea di dove poter cominciare...che mi
consigliate?


leggi dal file una riga per volta in una stringa, fai le operazioni che
ti servono per creare la nuova stringa e la sctivi in un file.
ti servono i seguenti comandi/istruzioni:
1) open
2) line input 
3) print
4) while/wend
5) eof
6) un po' di manipolazione di stringhe : mid$() left$() &
a te trovare il modo di combinarli

 com' è che devo fare? Non ho idea di dove poter
cominciare...che mi consigliate?
Un sistema potrebbe essere,per esempio:
Type VECCHIO
  Campo01 As String * 4
  Campo02 As String * 4
  Campo03 As String * 2
  Campo04 As String * 3
  Campo05 As String * 5
  Campo06 As String * 3
  Campo07 As String * 1
  Campo08 As String * 3
  Campo09 As String * 3
  Campo10 As String * 3
End Type
Type NUOVO
  Campo01 As String * 4
  Campo04 As String * 3
  Campo05 As String * 5
  Campo06 As String * 3
  Campo09 As String * 3
  Campo10 As String * 3
End Type
... poi leggi "VECCHIO", aggiorni "NUOVO":
  With udtNuovo
    Let .Campo01 = udtVecchio.Campo01
    Let .Campo04 = udtVecchio.Campo04
    Let .Campo05 = udtVecchio.Campo05
    Let .Campo06 = udtVecchio.Campo06
    Let .Campo09 = udtVecchio.Campo09
    Let .Campo10 = udtVecchio.Campo10
  End With
e scrivi nel nuovo file.
Sono stato troppo sintetico?
--
Ciao.
Maurizio

...


 2) mi piacerebbe anche capire cosa vuol dire tutto ciň,
ossia, come si potrebbe utilizzare praticamente: un esempio di
codice di contesto.
Tirato un po' via ma piu` o meno potrebbe essere cosi`:
Option Explicit
Type VECCHIO
  Campo01 As String * 5
  Campo02 As String * 5
  Campo03 As String * 5
  Campo04 As String * 5
  Campo05 As String * 5
End Type
Type NUOVO
  Campo01 As String * 5
  Campo03 As String * 5
  Campo05 As String * 5
End Type
Sub Main( _
)
  Dim udtVecchio  As VECCHIO
  Dim udtNuovo    As NUOVO
  Dim intVecchio%, intNuovo%
  Call CreaVecchio
  Let intVecchio = FreeFile(0)
  Open "c:\vecchio.dat" For Binary Access Read As #intVecchio
  Let intNuovo = FreeFile(0)
  Open "c:\nuovo.dat" For Binary Access Write As #intNuovo
  While Not EOF(intVecchio)
    Get #intVecchio, , udtVecchio
    With udtNuovo
      Let .Campo01 = udtVecchio.Campo01
      Let .Campo03 = udtVecchio.Campo03
      Let .Campo05 = udtVecchio.Campo05
    End With
    Put #intNuovo, , udtNuovo
  Wend
  Close
End Sub
Sub CreaVecchio( _
)
  Dim udt As VECCHIO
  Dim i%, j%
  Let i = FreeFile(0)
  Open "c:\vecchio.dat" For Binary Access Write As #i
  With udt
    Let .Campo01 = "AAAAA"
    Let .Campo02 = "BBBBB"
    Let .Campo03 = "CCCCC"
    Let .Campo04 = "DDDDD"
    Let .Campo05 = "EEEEE"
  End With
  For j = 1 To 1000
    Put #i, , udt
  Next
  Close
End Sub
--
Ciao.
Maurizio

 pero'...).
[...]
--
Ciao e scusa.
Maurizio

Ok ok...oggi devo cominciare a vedere questa cosa...quindi arriveranno
tutti i mie messaggi con domande stupide sul come fare questo...o
perchè non funziona questo altro :))
Ho letto i tuoi messaggi...qualcosa l' ho capita...altre non c' ho
capito niente, ma ora vedo di studiarmi il tutto con calma. Devo
riseguire un attimo il discorso.