Я пытаюсь работать с процедурой «Чтение» вместо «ReadLn» в Free Pascal IDE, но когда я нажимаю клавишу ввода после ввода значения, я получаю новую строку, как «readln» делает ....
program test;
uses
crt;
var
AName: string[20];
function Complete_Rectangle(ALength_NewValue, ALength_Rectangle, ALength_Pref: byte): string;
const
Stars : string = '**';
var
Space_Str: string;
I,
Space_Needed : byte;
begin
Space_Needed := ALength_Rectangle - ALength_Pref; (* Calculate Needed Space.... *)
Space_Str := '';
for I:=1 to Space_Needed -(ALength_NewValue + 2) do (* 2 represent the length of Stars Constant *)
begin
Space_Str := Space_Str + ' ';
end;
Complete_Rectangle := Space_Str + Stars;
end;
begin
clrscr;
writeln('**********************************************************************');
writeln('** **');
write('** [*] add your Name here: '); read(AName); writeln(Complete_Rectangle(length(AName), 70, 28));
(* 70 represent the length of rectangle spaces and 28 represent the length of this prefix text "** [*] add your Name here: " *)
writeln('** **');
writeln('**********************************************************************');
readkey;
end.
возможно ли создать свой собственный режим чтения, чтобы устранить проблему, описанную выше?
у меня есть этот код здесь, но он не работает должным образом ...:
procedure Lire(AVariant: Variant);
var
I: byte;
AKey: Char;
AReadStr: String;
begin
I := 1;
AReadStr := '';
AKey := char('');
repeat
AKey := ReadKey;
if not (AKey = #13) then
begin
AReadStr[I] := AKey;
write(AKey);
inc(I);
end;
Until AKey = #13;
case varType(AVariant) of
varString: begin AVariant := AReadStr; end;
varInteger: begin AVariant := StrToInt(AReadStr); end;
varByte: begin AVariant := StrToInt(AReadStr); end;
varBoolean: begin AVariant := StrToBool(AReadStr); end;
(* ..... and so on *)
end;
end;