[Pascal] Maxymalna linija do wpisywania :/

0

Witam - mam problem :
Czy da się w TP zrobić by readln(string) odczytała więcej niż można wpisać na ekranie :/. Bo mam do wpisania nieraz dużo, ale niestety w pewnym momencie nie da się już pisać (jakieś ograniczenia ?)
Help

0

readln() jest chyba ograniczone do 256 .. - bezpośrednio nie wiem jak to zrobić lub nie pamiętam - z TP dawno nie miałem do czynienia. Zawsze można dać w pętli read() powtarzać.. aż do wystąpienia określonego znaku. Być może da się to zrobić inaczej.

// do 127 - tyle wynosi bufor klawiatury w dosie - ŁF

0

Też myślałem o pętli pobierać po jednym znaku z klawiatury , aż do entera .
Jeżeli g:char i pobierał bym readkey to enter ma kod #10 czy #13 - zawsze się mylę :P
Czyli to było by poprawne:

repeat
kod
until
g=#13 (lub #10 zalezy ktory to enter :P)

Takie coś by przeszło w miare ??
Ale pytam się właśnie o ten drugi sposób żeby pobrać od razu cały string jeżeli takowy jest :]

0
function lread:string;
var
  k:char;
  s:string;
  xy:word;
  l,p:integer;
  col:byte;
begin
  asm
    mov ah,03h
    xor bh,bh
    int 10h
    mov [xy],dx
    mov ah,0fh
    int 10h
    dec ah
    sub ah,byte ptr [xy]
    mov [col],ah
  end;
  s:='';
  repeat
    asm
      xor ah,ah
      int 16h
      mov [k],al
    end;
    case k of
      ^h:begin
          delete(s,length(s),1);
          write(^h#32)
        end;
      #32..#255:s:=s+k;
    end;
    p:=1;
    l:=length(s);
    if l>col then
      begin
        inc(p,l-col);
        l:=col;
      end;
    asm
      mov ah,02h
      xor bh,bh
      mov dx,[xy]
      int 10h
    end;
    write(copy(s,p,l));
  until k in[^c,^m];
  writeln;
  if k=^c then s:='';
  lread:=s;
end;

begin
  write('wpisz sie : ');
  writeln(lread);
end.

// ograniczenie jest takie jak dlugosc stringa (255 znakow)

0

A nie lepiej to po jednym znaku wczytywać i zapisywać do zmiennej PChar ,z tym wyjątkiem, że tu już trzeba się bawic obsługą pamięci(GetMem, New i te sprawy :) ) albo przez wskaźniki... o ile dobrze pamiętam :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1