Originariamente inviato da Ephestus
Ehm...forse non hai frainteso qual è l'utilizzo di questo programma, o, molto più probabilmente, io mi sono spiegato male e non ho capito cosa mi stai dicendo:
Il programma non ha lo scopo di configurare direttamente un'interfaccia, ma di creare a video un template che verrà poi usato dai tecnici sul posto per configurare ciascuna macchina.
Ho quindi bisogno di creare a video questa schermata che NON può avere errori grafici, in quanto viene copiato ed incollato sulla macchina specifica, senza che "l'uomo" modifichi nulla!
Ora ne ho capito di più...

Originariamente inviato da Ephestus
Da quel che ho capito tu mi stai consigliando di creare un stringa (AnsiString) in cui è presente il template...non è più dispendioso? Un'unica stringa che mantenga 100 o più righe con gli spazi ed i ritorno a capo esattamente come voglio io? Non so... ...mi pare peggio...
Perchè dovrebbe essere più dispendioso? In che senso dovrebbe esserlo? Pensaci bene...

In realtà, tu stai già lavorando su una AnsiString, anche se non lo sai, poichè è quello il supporto ultimo di memorizzazione usato dalla proprietà Lines.
Il problema è che tu sei obbligato ad utilizzare i metodi della classe TStringList a cui Lines appartiene, quindi richiami erroneamente i metodi Add oppure Insert che sono senz'altro più complessi del semplice accodamento manuale che potresti eseguire su una normale AnsiString definita da te, mi segui?

A questo si aggiunge il fatto che non stai lavorando su una TStringList creata da te, ma sulla proprietà Lines che appartiene al controllo Memo; il controllo reagisce in un certo modo ad ogni aggiornamento del testo contenuto...perchè fare eseguire questo codice ad ogni più piccola aggiunta fatta al testo? Questo sì che mi sembra dispensioso...

Voglio precisare che nella realtà non è che noteresti grossi cambiamenti, intendiamoci...sto solo cercando di farti capire il mio punto di vista generale sul fatto di scegliere sempre il mezzo che più si avvicina all'esigenza che hai in un certo punto del processo di sviluppo del tuo programma.
Non fraintendere, si tratta di frivolezze, non certo di un'aspra critica.

Nel caso in esame, hai a tutti gli effetti già risolto il problema, ma se tu fossi partito da subito con il concetto di "evito i problemi di gestire la mia stringa nel Memo e me la costruisco internamente eludendo tutti i possibili effetti collaterali per visualizzarla solamente alla fine del processo", forse non avresti nemmeno aperto questa discussione.

Cerco solamente di indirizzarti verso un modo di pensare che - secondo me, ovviamente - è formalmente più corretto.

Va benissimo anche la tua soluzione attuale; io comunque non avrei corso rischi ed avrei utilizzato subito una stringa per concatenare testi parziali e ritorni a capo, concludendo con l'assegnazione della stringa alla proprietà Lines.Text del TMemo "in blocco" per la sua visualizzazione, anzi avrei potuto addirittura evitare questo passaggio e copiare direttamente il testo nella Clipboard, rileggendo le tue specifiche.

L'importante è che tu abbia compreso il mio punto della questione, poi ovviamente scegli la soluzione che ritieni più adatta e più giusta...magari, tieni conto di quanto detto alla prossima occasione.

Happy implementation!