Newsgroup: it.comp.lang.delphi
Titolo: Aiuto su gestione array ...

Ciao a tutti,
    ho un array di 30 cosi' definito
Type MD = Record  // In caso di preparazione multidose ...
       Descrizione : String; // descrizione da stampare
       F           : TFont; // font da usare
       X           : Int64; // dove stmaparlo, la Y e' gia' settata e non 
c'e' bisogno di calcolarla
     End;
Var    EMD    : Array [0..29] Of MD;
L'array viene usato per caricare delle diciture diverse riferite allo stesso 
prodotto, per esempio olio di oliva 1/5/10/20/30/40/50 ml, seguendo questo 
criterio:
Nella posizione 0 e' caricata tutta la descrizione riassuntiva (ovvero 
tutta), nella posizione 1 viene caricata la stringa olio di oliva 1 mg e 
cosi' via fino a 50 ml per un totale di 8 descrizioni (7 per le quantita' ed 
1 per il totale).
A questo punto devo andare a mettere in etichetta queste stringhe sapendo 
che la descrizione totale (posizione 0)  puo' essere ripetuta n volte (di 
solito 2) e che il preparato puo' essere fatto piu' di una volta (per 
esempio 4 volte).
Quindi nella procedura di stampa devo tener conto di 4x2=8 etichette 
riassuntive e di 28 etichette descrittive (4 volte 1 ml, 5 ml ... 50 ml) 
usando l'array in questione.
Il problema e' che non riesco a gestire l'array, ecco come avviene la 
stampa,
Per prima cosa stampo le 8 etichette riassuntive, poi cerco di stampare le 
altre .....ma senza un apprezzabile risultato !!
.......
Inc(EC);
B:=FP.ND*Loop;
B:=B+FAL.RDC.Value;
If EC>B Then
       Inc(Loop);
If A=2 Then // sono alla stampa della descrizione sono sulla seconda linea, 
stampo i dettagli, per valori di Adiversi da 2 non si entra qui
Begin
    If (FAL.RDC.Value>0) And (EC>FAL.RDC.Value)   Then
    Begin
        // Tolgo le etichette riassuntive dalle etichette totali
        C:=EC-(FAL.RDC.Value*(Loop));
        S:=EMD[C].Descrizione;
        X:=X+EMD[C].X;
        Canvas.Font.Assign(EMD[C].F)
    End
End;
Dove
FP.ND indica il numero di "dosaggi" usati, nel nostro caso 7
FAL.RDC.Value indica quante descrizioni riassuntive ci sono
EC indica l'etichetta corrente da stampare (1,2,3......36 nel nostro caso)
Loop indica quante volte ho rifatto il ciclo di stampa settato nell'evento 
oncreate a 1.
Il codice sopra riportato funziona solo per loop=1, qualche idea per farlo 
andare anche con altri valori ???? (molto probabilmente la soluzione e' 
sotto il naso e non la vedo !!!!!)
Grazie per l'aiuto
Ciao, Daniele 

...quello che mi chiedo è xche, con un rad OO come delphi, si continua
a sbattere la testa sugli array quando le classi ti semplificano la
vita di tanto, specie in casi come questo.... :-|
A.

 vita di tanto, specie in casi come questo.... :-|
La parte di codice che ho messo e', appunto, solo una parte.
E' inserita in una procedura di stampa che gestisce le etichette ormai non 
piu' supportata e la gestione delle etichette e' sequenziale (1,2,3,4....n) 
e senza tener conto del fatto che il foglio delle etichette sia nuovo o 
usato parzialmente.
Considerato tutto, l'idea dell'array mi sembrava buona, ma se ci sono delle 
migliorie sono pronto a seguirle a patto che almeno l'idea mi venga 
proposta, poi sull'applicarla ci studiero' sopra.
Grazie comunque.
Ciao, Daniele 

Ciao, a tutti,
    risolto ....... come sempre era sotto agli occhi ..... ma non riuscivo a 
vedere la soluzione!!!!
Grazie a tutti per l'interesse !!!!
Daniele 

 Grazie a tutti per l'interesse
Che non finisce con la sulozione trovata, finchè non ce la riveli... :-D
-- 
Morde