- 227
- 20
- CPU
- AMD Athlon - X86_64
- Scheda Madre
- Acer RS780HVF
- HDD
- SSD PLUS da 240GB (ospita 3 S.O Linux), WDC WD10EFRX-68F da 1000GB (ospita solo archivi dati)
- RAM
- n.2 DDR" per 2GB
- OS
- fedora 28 Mate, Ubuntu Mate, Linux Mint 19
Nel mio percorso d'apprendimento, ho provato a dichiarare matrici per riferimento e richiamarne poi il contenuto all'interno di una procedure. Ciò mi si è reso necessario perchè le mie matrici non hanno tutte la stessa dimensione e la procedura a cui è affidato il trattamento, ne riceve soltanto una, quindi non ne conosce la dimensione.
La mia difficoltà è che non riesco a superare la compilazione per un errore nella riga di calcolo del numero di elementi della matrice in ingresso della procedura incaricata del suo trattamento.
Dopo questa premessa allego i passi di programma interessanti per lo scopo, fino alla riga che produce erroe in compilazione:
Per provare l'istruzione iMax=, onde ottenere l'estrazione del n. elementi della matrice corrente, ho fatto diverse ricerche, fino all'esasperazione, ma, dalle ricerche fatte non sono riuscito a capire quale criterio corretto avrei potuto applicare, perchè non ne ho trovati.
Riporto alcune delle istruzioni che ho provato
Ebbene, come al solito in questi casi, l'errore è una solenne banalità, ma io non sono riuscito a venirne fuori.
La mia difficoltà è che non riesco a superare la compilazione per un errore nella riga di calcolo del numero di elementi della matrice in ingresso della procedura incaricata del suo trattamento.
Dopo questa premessa allego i passi di programma interessanti per lo scopo, fino alla riga che produce erroe in compilazione:
Codice:
unit cofamtrasf; {Classe: tipo Form_Main}
--- bla --- bla ---
private
type
PtbCoCas = ^TtbCoCas;
TtbCoCas = array[0..1, 0..1] of LongInt;
PtbCoPartMov = ^TtbCoPartMov;
TtbCoPartMov = array[0..2, 0..1] of LongInt;
PtbCoPreMom = ^ TtbCoPreMom;
TtbCoPreMom = array[0..1, 0..1] of LongInt;
const
TtbCas: TtbCoCas = ((101001000, 101001997),
(101001990, 101001999));
TtbPartMov: TtbCoPartMov = ((102001000, 103999999),
(105001000, 203999999),
(205001000, 999999999));
TtbPreMom: TtbCoPreMom = ((104001000, 104999000),
(204001000, 204999000));
--- bla --- bla ---
procedure carCombo(Var TtbCoVoci:LongInt);
var
i, ii, iMax: integer;
begin
iMax= ... (vedi sotto alcune delle prove fatte)
--- bla --- bla ---
procedure TForm1.VoMasPartChange(Sender: TObject);
begin
case VoMasPart.Text of
'Cassa':
carCombo(TtbCas);
'Partmovv':
carCombo(TtbPartMov);
'Prestmom':
carCombo(TtbPreMom);
end;
end;
Riporto alcune delle istruzioni che ho provato
Codice:
iMax= (TtbCoVoci.Length); -> produce l'errore "illegal qualifier" (Length)
iMax= Length(TtbCoVoci); -> produce l'errore "Type Mismatch" (Length)
iMax= size(TtbCoVoci); -> produce l'errore "identifier size not found
iMax= (TtbCoVoci.size); -> produce l'errore "illegal expression"
Ultima modifica: