Oggi mi sono trovato di fronte ad un nuovo quesito.
Devo inserire in un file di testo, di cui ciascuna riga è la concatenazione di stringhe a lunghezza fissa...
Ad esempio:
Num_di_riga(7 caratteri) + Cognome (30 caratteri) + Nome (20 charatteri)...
Ogni campo deve quindi contenere quel numero stabilito di caratteri, sia se la variabile è più corta sia più lunga.
Pensavo di usare: Format(NumRiga, "0000000") + Left(Cognome, 30) + Left (Nome, 20)...
Però quando sono andato a vedere il risultato con un carattere "Monospace", ma se il Cognome o il Nome sono più corti... allora Left non ha effetto, e la variabile viene troncata.
A questo punto ho risolto molto barbaramente aggiungendo per ogni campo n_spazi con space(n) ad ogni variabile... così Left trova delle stringhe più lunghe e le mozza...
Format(NumRiga, "0000000") + Left(Cognome & space(30), 30) + Left (Nome & space(20), 20)...
Così funziona... però ero curioso di sapere se esiste una funzione che imposti direttamente la lunghezza di una stringa sia che la variabile dentro sia più piccola o che sia più lunga...
PS. avrei potuto risolvere più elegantemente anche con una funzione personalizzata che:
a) in caso la variabile sia di lunghezza inferiore alla fissa, calcola la lunghezza della differenza tra fissa e variabile, e la aggiunge in numero di spazi esatti
b) in caso la variabile sia di lunghezza superiore alla fissa, la tagli con Left.
c) in caso di uguaglianza non fa nulla.
Ma non l'ho fatta perché non so se in termini di tempo di calcolo appesantisco il programma... Considerando che possono essere 2000-3000 righe di 250 caratteri ciascuna.