Ja, Delphi-Consolen können nur
ANSI, bzw. OEM. (was sich jeweils umschalten ließe)
Aber wenn man nicht die uralten Delphi-Funktionen verwendet, dann wäre auch alles Andere Möglich.
Delphi-Quellcode:
function _WriteWString(var t: TTextRec; const s: WideString; width: Longint): Pointer;
var
i: Integer;
begin
i := Length(s);
_WriteSpaces(t, width - i);
Result := _WriteLString(t, AnsiString(s), 0);
end;
procedure _ReadUString(var t: TTextRec; var s: UnicodeString);
var
Temp: AnsiString;
begin
// !!! FIXME
_ReadLString(t, Temp, DefaultSystemCodePage);
s := UnicodeString(Temp);
end;
Das sLineBreak hat per se in seiner Deklaration keinen Typen.
Es müsste sich demnach jeweils an den Zieltyp anpassen (der Compiler dürfte es bereits gecastet übergeben). Und selbst wenn nicht, dann würde es bei Verwendung einfach implizit gecastet.
Zitat:
Nur CR geht NICHT
Laut Code sollte es aber gehn.
Delphi-Quellcode:
procedure _ReadLn(
var t: TTextRec);
{$IF not defined(CPU386)}
var
c: Word;
begin
while True
do
begin
c := _ReadCharEx(t);
if (c
and $00ff) = cLF
then break;
// accept LF as end of line
if (c
and $ff00)
shr 8 = cEOF
then break;
>>>
if (c
and $00ff) = cCR
then
begin
c := _ReadCharEx(t);
>>>>>
if (c
and $00ff) = cLF
then break;
// accept CR+LF as end of line
if (c
and $ff00)
shr 8 = cEOF
then break;
// accept CR+EOF as end of line
Dec(t.BufPos);
// else CR+ anything else is not a line break.
end;
end;
end;