Newsgroup: it.comp.lang.delphi
Titolo: [D5] Creare un campo Array in un Database

Ciao a tutti.
Ho questo problema: utilizzando D5, utilizzando il BDE di D5, utilizzando
database di tipo ttParadox, dovrei creare un archivio con un campo di tipo
array di word di lunghezza da me stabilito (es. 100). Dovrei poi memorizzare
un array normale (ovviamente stesse dimensioni di quello del database) nel
mio archivio.
Potete postarmi la sintassi per la creazione dell'archivio e la sintassi per
la memorizzazione?
Scusate la "brutalita' " della mia richiesta ma da solo non ci sono
riuscito.
Grazie
  Fodox

 dimensioni di quello del database) nel mio archivio.
[cut]
Tutto questo va contro le regole di normalizzazione.
Invece di creare un array, crea una tabella detail con relazione 1 a
molti.
Saluti.
-- 
I'am what I'am, I do what I can

 molti.
Buio completo, non ti seguo. Puoi chiarirmi con un esempio di come creare
tale archivio? E come utilizzarlo poi?
Grazie!
  Fod.

Fodox wrote:

Scusa, sviluppi un programma Delphi con database e non sai creare una
tabella di dettaglio con una relazione uno a molti?
Ora non ho tempo di farti una lezione su cosa sono e come si utilizzano
i database, cercati un buon libro ed approfondisci l'argomento.


 i database, cercati un buon libro ed approfondisci l'argomento.
per vari motivi non ho tempo e modo di documentarmi su libri, appunto ho
postato qui.
Grazie ugualmente
  Ciao ciao

non voglio mettere in dubbio cio che stai dicendo, ma dire "conosco i db" e
postare una richiesta per creare una relazione 1:n  è un tantino
contradditorio.
Una relazione 1:n viene in genere esemplificata con il classico esempio
della fattura:
1 testata - n righe
almeno un campo della tabella testata deve essere duplicato nella tabella
righe per creare il collegamento.
Quindi, nel tuo caso avresti una tabella testata:
IdTestata
...
una tabella dettaglio:
Id
IdTestata
Valorearray
Infine, una precisazione è d'obbligo: il problema del tempo lo abbiamo
tutti.
Bye
A
--
Per rispondere non usare il reply ma scrivere al seguente indirizzo:
alsalvati(at)
supereva.it

 postato qui.
i newsgroup tecnici sono adatti per risposte-lampo a domande-lampo, oppure
per discussioni su tecniche, algoritmi, ecc.
NON sono adatti, invece, per fare lezioni di informatica.
Ciao, Sandro

array di word di lunghezza da me stabilito (es. 100). 
Se specifichi, esattamente, che problema stai cercando di risolvere,
forse si può trovare una strada migliore.  

 1 testata - n righe
Ok. Adesso mi e' chiaro, semplicemente non avevo capito cosa intendesse
Setec Astronomy.
Grazie
Ciao

 forse si può trovare una strada migliore.
Ok, ci provo:
ho un array semplice semplice, lunghezza fissa di tipo word;
lo voglio memorizzare in un database cosi' come e'. Ho pensato di definire
un campo del mio database come TArrayField ma non so come farlo:non conosco
le istruzioni, ecco.
Chiedevo un listato d'esempio di come si creava e di come si inseriva il
record nell'archivio, giusto per prender espunto.
Ciao e grazie
  Fod.

ho un array semplice semplice, lunghezza fissa di tipo word;
Stai descrivendo la soluzione, io voglio il problema.
Che cosa rappresenta questo array ?

 Che cosa rappresenta questo array ?
non credo abbia importanza, il punto e' che non so come memorizzare l'array.
CMNQ esso contiene una serie di codici, di valori, e non posso  cambiare la
struttura: deve essere un array di word : )

struttura: deve essere un array di word : )
Allora non si può fare.

 sintassi per la memorizzazione?
Metti una query, una tabella, un datasource, una grid e una listbox
sulla form. La tabella va collegata alla tabella su disco una volta che
quest'ultima sia stata creata.
Per il local SQL usato vedi l'help (LocalSQL.hlp).
Saluti
Paolo Arosio
type
  TWordArray = array[1..100] of word;
procedure TForm1.Button1Click(Sender: TObject);
begin
  Query1.SQL.Clear;
  Query1.SQL.Text := 'CREATE TABLE "<percorso>\SampleTable.db" ' +
    '(INDICE INTEGER, ' +
    'CAMPOARRAY BYTES(200), ' +
    'PRIMARY KEY(INDICE)); ';
  Query1.ExecSQL;
end;
// registra l'array in tabella
procedure TForm1.Button2Click(Sender: TObject);
var i, start: word;
    anArray: TWordArray;
begin
  start := Table1.RecordCount+1;
  for i := Low(TWordArray) to High(TWordArray) do begin
    anArray[i] := i * start;
  end;
  Table1.Append;
  Table1.Fields[0].AsInteger := start;
  (Table1.Fields[1] as TBytesField).SetData(@(anArray[1]));
  Table1.Post;
end;
// legge e visualizza l'array dalla tabella
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
var i: integer;
   anArray: TWordArray;
begin
  ListBox1.Clear;
  (DataSet.FieldByName('CAMPOARRAY') as
TBytesField).GetData(@(AnArray[1]));
  for i := Low(TWordArray) to High(TWordArray) do
    ListBox1.Items.Add(Format('Elemento %d = %d', [i, anArray[i]]));
end;

[mega cut]
Finalmente!, era quello che chiedevo.
Tante grazie
  Ciao ciao
FodoxXx