Newsgroup: it.comp.lang.pascal
Titolo: aiuto per record!!!

Salve ragazzi,
sono un novellino sia di questo NG che di Pascal.
sino ad ora ho sviluppato piccoli prg con VB 6, però
ora vorrei passare al Pascal (Delphi) avendone constatato
sia la velocità che la facilità d'uso, anche se per un Basico:-)
è un pò difficile:-(
Veniamo al punto, ho un archivio, fatto con VB6 con  7221 record,
così formato:
Type RecordPasta
giorno as Integer : mese as Integer : anno as Integer
spaghetti as Integer : maccheroni as Integer
......
End Type
Public Pasta as RecordPasta
per leggere nell'archivio, il totale dei record e l'n record, ho scritto:
Open "pasta.dat" For Random As #1, Len=Len(Pasta)
ultimo = LOF(1) / Len(Pasta)   //mi ritorna il totale dei record
Get #1, ultimo, Pasta   // mi legge l'ultimo record
Close #1
Label1.caption= "Totale record =  "+ str(ultimo)+ "ultima data "+
str(giorno) +str(mese)+str(anno)
Fin qui con il VB, ora ho tradotto in Pascal
Type
   TPasta = packed record
  giorno, mese, anno : Integer;
  spaghetti, maccheroni,........ : Integer;
  end;
Procedure TForm1.lettura;
var
DataFile : file of TPasta ;
Pasta : TPasta;
FGiorno : Integer;
FMese : Integer;
FAnno : Integer;
ultimo : Integer;
begin
AssignFile(DataFile, 'd:\pasta.dat');
reset (DataFile);
ultimo := FileSize(DataFile);
seek (DataFile,ultimo);
read (DataFile, Pasta);
FGiorno := Pasta.giorno;
FMese := Pasta.mese;
FAnno := Pasta.anno;
label1.caption := ('Ultimo record n° ' + intToStr(ultimo));
label2.caption := ('Ultima data = ' + IntToStr(FGiorno)+' ' +
IntToStr(FMese)+' ' + IntToStr(FAnno));
end;
Ebbene, anzichè 7221 record me ne legge 3610, cioè la metà
e in ultima data mi da dei numeracci, tipo 196627 4917203 4849735.
Domanda:   dove sbaglio?????
Grassie a tutti quelli, anche uno solo:-))), che vorranno dipanare questo
mistero, almeno per me:-)))
Resto in trepppida attesa:-)))
Enrico

 
Il problema sono gli integer, che in VB6 e parenti sono numeri a 16bit (come nel
turbo pascal) mentre in delphi sono a 32bit, quindi leggi dal file la meta' dei
dati. Adesso non ho il delphi sottomano, ma nell'help dovresti trovare l'elenco
dei tipi numerici... c'e' credo shortint che e' 16bit signed... credo :-)
-- 
Dreadnaut
(Life would be easier if there weren't Squids)

 dei tipi numerici... c'e' credo shortint che e' 16bit signed... credo :-)
***** Ho risolto con lo smallInt( 16 bit), secondo quanto letto shortint è
un 8 bit signed.
Vorrei riproporre anche a te un msg che ho postato e che nessuno
mi ha risposto, ringraziandoti per un'eventuale risposta:-))))
Dato che anche voi avete dovuto studiare/imparare tale linguaggio,
vorrei rivolgervi una preghiera, un'anima pia mi può indicare:
1) al momento vado con Delphi 6 personal, trovato in un vecchio CD,
     se acquisto la versione 7 personal originale, i volumi che trovo nella
     confezione sono in lingua italiana? (l'inglese purtroppo lo mastico
    poco, solo  quello scolare:-(
2) qualche titolo di libro(in italiano), ancora in in vendita, che insegni i
    fondamenti di tale linguaggio???
aggiungo il 3) meglio ancora se ci fosse un libro tipo dal VB6 al Pascal:-)
Grazie
Enrico

 mi ha risposto, ringraziandoti per un'eventuale risposta:-))))
neanch'io avevo risposto... e purtroppo saprei cosa dirti neanche
adesso :-)  Non saprei cosa trovi dentro la scatola del Delphi
(leggici dietro se la vedi in qualche negozio... gia' ma quale nel
mondo di chl e comp. disc ??)... Per i libri non ho idea, pero' qua
escono un po' di titoli:
 
http://www.google.it/search?q=libro+delphi+7
La sintassi in fondo e' quella del pascal, gli oggetti sempre i soliti
che trovi in un ambiente visuale:  se l'help in linea fosse in ita-
secondo me e' ben fatto e dovrebbe bastarti... ma in fondo
l'inglese informatico, raccolto un sufficiente vocabolario, non e'
cosi' complesso... [io ho imparato prima quello inform. e poi l'ho
studiato a scuola...  si un po' di cose erano diverse, ma il senso
si capiva lo stesso :-) ]
-- 
Dreadnaut
(Life would be easier if I had the source code)

 cosi' complesso...
**** si certo, anch'io mi son dovuto arrangiare con quel poco di
inglese che conosco, diciamo che programmando con VB6 mi trovo
avvantaggiato, in quanto conosco come funziona la parte visuale, ma il
problema è che le parole chiavi cambiano, faccio un esempio stupido:
per leggere un file da disco, in Basic è molto semplice,
Open "nome" for input as #1
input #1,dati
in Pascal è un pò più, come dire, "logorroico", meno intuitivo,
DataFile : TextFile;
AssignFile(DataFile, 'nome') ;
reset(DataFile);
read(DataFile,dati);
e chi ci arrivava se non avessi letto l'Help in linea????
a proposito della scrittura/lettura dei file, non ho capito perchè il pascal
tratti i dati numerici sempre come testo, mentre in basic sono distinti,
oppure mi sbaglio io??
se per es, dovessi scrivere a=10, b=20, c=30:
in basic: write #1, a,b,c, la scrittura sarebbe 10 20 30 e ovviamente
             in lettura sarebbe a=10 b=20 c=30
in pascal: write(DataFile, a,b,c); la scrittura sarebbe 102030 e
             in  lettura a=102030 b=0 c=0, per leggere i dati esatti dovrei
scrivere con Writeln(DataFile,a,b,c);  la scrittura sarebbe 10
20
30
ti ringrazio
Enrico