[c] file sequenziale
Inviato: mer lug 07, 2004 12:25 pm
se penso che non l'ho nemmeno capito io e devo spiegarlo!
comunque
sto costruendo un programma che dovrebbe trasferire i campi di un file sequenziale(creato in cobol) in un database...
io ho la lunghezza dei campi;
quindi ho pensato di prendermi l'intera riga e lavorarci su con substring, solo che il numero(che identifica la lunghezza del campo) che ho io(che fra l'altro è costante) è diverso da quello effettivo del file!
questo avviene perché vengono usati i <tab>!
bene quando il mio programma sul file incontra un <tab> lo riconosce come un unico carattere ma effettivamente, il <tab>, equivale ad 8 spazi(quindi caratteri!) e quindi nella variabile var vengono memorizzati sette caratteri di var2:
Es.
var0 = sr.ReadLine();
var = var0.Substring(0,9);//mettiamo che i primi 8 caratteri siano:
//"l<tab>" lui mi conta <tab> come 1 e prende anche var0.substring(8,8) che dovrebbero appartenere a var2
var2 = var0.substring(8,10);//qui chiaramente ripete un po' di var!!
quindi mi trovo sfalsato!
ho risolto inizialmente dichiarando nelle variabili
private string tab =" ";//l'equivalente del tab in c
e successivamente ho analizzato carattere per carattere e quando trovava il <tab> facevo avanzare un contatore di 8;
Es.
for (i=0;i<1;i++)
{
var = var0.Substring((x+k),1);
if (var==tab)
i=i+7;
varx= varx + var;
k++;
}
x=x+k;
ma anche questo non va perché può succedere che trovi 2 campi completamente vuoti e quindi il puntatore sfalsa!
spero abbiate capito il problema(o meglio che io mi sia fatto capire!)!
onestamente ho anche provato altre cose, ma è inutile postarle...visto che non hanno prodotto nessun tipo di risultato!
comunque
sto costruendo un programma che dovrebbe trasferire i campi di un file sequenziale(creato in cobol) in un database...
io ho la lunghezza dei campi;
quindi ho pensato di prendermi l'intera riga e lavorarci su con substring, solo che il numero(che identifica la lunghezza del campo) che ho io(che fra l'altro è costante) è diverso da quello effettivo del file!
questo avviene perché vengono usati i <tab>!
bene quando il mio programma sul file incontra un <tab> lo riconosce come un unico carattere ma effettivamente, il <tab>, equivale ad 8 spazi(quindi caratteri!) e quindi nella variabile var vengono memorizzati sette caratteri di var2:
Es.
var0 = sr.ReadLine();
var = var0.Substring(0,9);//mettiamo che i primi 8 caratteri siano:
//"l<tab>" lui mi conta <tab> come 1 e prende anche var0.substring(8,8) che dovrebbero appartenere a var2
var2 = var0.substring(8,10);//qui chiaramente ripete un po' di var!!
quindi mi trovo sfalsato!
ho risolto inizialmente dichiarando nelle variabili
private string tab =" ";//l'equivalente del tab in c
e successivamente ho analizzato carattere per carattere e quando trovava il <tab> facevo avanzare un contatore di 8;
Es.
for (i=0;i<1;i++)
{
var = var0.Substring((x+k),1);
if (var==tab)
i=i+7;
varx= varx + var;
k++;
}
x=x+k;
ma anche questo non va perché può succedere che trovi 2 campi completamente vuoti e quindi il puntatore sfalsa!
spero abbiate capito il problema(o meglio che io mi sia fatto capire!)!
onestamente ho anche provato altre cose, ma è inutile postarle...visto che non hanno prodotto nessun tipo di risultato!