Ciao a tutti,
se eseguo del codice in modalità Consolle e voglio mostrare a video i nostri caratteri accentati ( tipo è, à, ì ecc... ) questi non appaiono, ed al loro posto vengono visualizzati dei simboli strani. Penso che sia dovuto all'UNICODE, però non so come risolvere questa anomalia.
Di seguito incollo un piccolo esempio:
program Test;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
begin
Writeln('Questo è Free Pascal e Lazarus');
Writeln('Premi il tasto enter per chiudere');
Readln;
end.
Qualcuno mi sa dire cosa devo fare ?
Grazie.
Wolfenstein
Aggiungi una chiamata a SetConsoleOutputCP:
program Test;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, windows
{ you can add units after this };
begin
setconsoleoutputcp(65001);
Writeln('Questo è Free Pascal e Lazarus');
Writeln('Premi il tasto enter per chiudere');
Readln;
end.
L'unico problema è che si tratta di una funzione di windows. Per le altre piattaforme non saprei :/
ho provato sotto linux x64 e l'accento viene mostrato correttamente
Edit:
Forse potresti modificare il sorgente proponendolo (segnalando magari che è un tuo adattamento dovuto al fatto che in Italia ci sono le lettere accentate) come segue.
Forse così si complica un po' il codice e bisogna aggiungere anche qualche spiegazione ma, dopotutto, è una guida per imparare a programmare agli italiani...
program Test;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
{$IFDEF WINDOWS}
windows,
{$ENDIF}
Classes
{ you can add units after this };
begin
{$IFDEF WINDOWS}
setconsoleoutputcp(65001);
{$ENDIF}
Writeln('Questo è Free Pascal e Lazarus');
Writeln('Premi il tasto enter per chiudere');
Readln;
end.