Ciao a tutti :)
Sto scrivendo un programmino di conversione dati che girerà solo in finestra DOS. Volevo infiocchettarlo con qualche fronzolo, tipo caratteri ascii semigrafici, come si faceva una volta (http://www.pierotofy.it/pages/sorgenti/browse/19268/5161/), ma non riesco ad ottenere una corrispondenza tra caratteri dell'editor di Lazarus e caratteri nella finestra della console di windows. Al momento ho aggirato il problema utilizzando direttamente i codici ASCII (#202#205#186 ...). La cosa curiosa è che se utilizzo il codice ASCII direttamente funziona, ma se utilizzo la combinazione ALT+Codice ASCII all'interno di Lazarus, nel code editor il carattere è giusto, ma nella console no:
writeln('Caratteri da codice ASCII: '#202#186);
writeln('Caratteri inseriti direttamente: ╩║');
risultato:
Caratteri da codice ASCII: ╩║
Caratteri inseriti direttamente: Ôò®Ôòæ
Anche SetConsoleCP() non sembra sortire effetti... Qualche idea?
Anche SetConsoleCP() non sembra sortire effetti... Qualche idea?
hai provato con il valore 65001 (UTF-8)?
Sì, ma da solo no basta, come ho scoperto :)
Una pezza (che però fa funzionare la baracca) è la seguente:
SetConsoleOutputCP(850);
WriteLn('Caratteri da codice ASCII: '#202#186);
SetConsoleOutputCP(65001);
WriteLn(UTF8String('Caratteri inseriti direttamente: ╩║'));
In più, bisogna impostare il carattere della console su Lucida Console invece di Raster. In questo modo c'è corrispondenza tra caratteri grafici inseriti nell'editor del codice e finestra della console :D