Конференция "KOL" » crt4col [Delphi, Windows]
 
  • гоша (18.05.14 00:06) [0]
    в консоли после очистки экрана курсор не возвращается в исходное положение и далее не пишет заданный текст
  • RusSun © (18.05.14 08:00) [1]
    нужен пример демострирующий проблему/ошибку
  • гоша (18.05.14 20:34) [2]
    program manager;
    uses
     CRT4COL, Windows;
    var
     name: array of string[18];
     kol: array of integer;
     sum, cost, prem, i, k, n: intege
     progprem: integer;
    begin
    writeln(UTF8ToConsole('Введите количество менеджеров'));
     readln(n);
     SetLength(name, n);
    SetLength(kol, n);
     for k:= 0 to n - 1 do
     begin
       writeln(UTF8ToConsole('Введите фамилию'));
       readln(name[k]);
       writeln(UTF8ToConsole('Введите количество компьютеров'));
       readln(kol[k]);
     end;

    Cls; // после этого не работает

     GoToXY(6,1);
     write(UTF8ToConsole('Сведения о реализации компьютеров'));
     GoToXY(14,2);
     write(UTF8ToConsole('за январь 2010 г.'));
    GoToXY(1,3);
     write('------------------------------------------------');
     GoToXY(1,4);
     write(UTF8ToConsole('Фамилия   Количество Выручка Премия'));
     GoToXY(1,5);
     write('------------------------------------------------');
     cost:= 1000;
     progprem:= 25;
     for k:= 0 to n - 1 do
     begin
       sum:= cost * kol[k];
       prem:= progprem * kol[k];
    writeln;
       writeln(name[k]);
       GoToXY(24, k + 6);
       write(kol[k]);
    GoToXY(32, k + 6);
       write(sum);
       GoToXY(40, k + 6);
       write(prem);
     end;
     sum:= 0;
     i:= 0;
     for k:= 0 to n - 1 do
     begin
       i:= i + kol[k];
       sum:= i * cost; {Сумма выручки}
       prem:=i * progprem;

    end;
     GoToXY(1, n + 6);
     write('------------------------------------------------');
     GoToXY(17, n + 7);
     writeln(UTF8ToConsole('Итого:'));
     GoToXY(24, n + 7);
     write(i);
     GoToXY(32, n + 7);
     write(sum);
     GoToXY(40, n + 7);
     write(prem);
     GoToXY(1, n + 9);
    write(UTF8ToConsole('Нажмите любую клавишу'));
     inputc;
    end
  • RusSun © (19.05.14 19:43) [3]
    Вот примерно так
    program manager;
    {$APPTYPE CONSOLE}
    uses
     kol,
     Windows,
     CRT4KOL in 'CRT4KOL.pas';
    //Функция берёт строку в OEM кодировке (DOS)
    //и возвращает её перевод в ANSI кодировку (Windows) в виде отдельной строки.
    //function StrOemToAnsi(const aStr : String) : String;
    //begin
    //  Result := '';
    //  if Length(aStr) > 0 then begin
    //    SetLength(Result, Length(aStr));
    //    OemToChar(PChar(aStr), PChar(Result));
    //  end;
    //end;
    //Функция берёт строку в ANSI кодировке (Windows)
    //и возвращает её перевод в OEM кодировку (DOS) в виде отдельной строки.
    function StrAnsiToOem(aStr : String) : String;
    begin
     Result := '';
     if Length(aStr) > 0 then begin
       SetLength(Result, Length(aStr));
       CharToOem(PChar(aStr), PChar(Result));
     end;
    end;
    var
     name: array of string[18];
     kol: array of integer;
     sum, cost, prem, i, k, n: integer;
     progprem: integer;
     s:string;
     W: PWindow;
    begin
    W := NewWindow( nil, 11, 12, 22, 6, colorBlue );
     //W.Title := 'Hello!';
     W.FrameStyle := fsDouble;
      W.Active := TRUE;

    // writeln(UTF8ToConsole('Введите количество менеджеров'));
    foreground( colorCyan or colorLight );

    outs(StrAnsiToOem( 'Введите количество менеджеров')+#13#10);
    //writeln(StrAnsiToOem('Введите количество менеджеров') );
     readln(n);
      writeln;
     SetLength(name, n);
    SetLength(kol, n);
     for k:= 0 to n - 1 do
     begin
      // writeln(UTF8ToConsole('Введите фамилию'));
       outs(StrAnsiToOem( 'Введите фамилию')+#13#10);
        background( colorGreen );
       // writeln(StrAnsiToOem('Введите фамилию') );
       readln(name[k]);
        background( 0 );
      // writeln(UTF8ToConsole('Введите количество компьютеров'));
      outs(StrAnsiToOem('Введите количество компьютеров')+#13#10);
      // writeln(StrAnsiToOem('Введите количество компьютеров') );
       readln(kol[k]);
        writeln;
     end;
     background( 0);
    Cls; // после этого не работает

     GoToXY(6,1);
    // write(UTF8ToConsole('Сведения о реализации компьютеров'));
      //write(StrAnsiToOem('Сведения о реализации компьютеров') );
      foreground( colorYellow or colorLight );
      outs(StrAnsiToOem( 'Сведения о реализации компьютеров')+#13#10);
     GoToXY(14,2);
     //write(UTF8ToConsole('за январь 2010 г.'));
     //write(StrAnsiToOem('за январь 2010 г.') );
     outs(StrAnsiToOem('за январь 2010 г.')+#13#10);
    GoToXY(1,3);
     outs('------------------------------------------------');
     GoToXY(1,4);
     //write(UTF8ToConsole('Фамилия   Количество Выручка Премия'));
     //write(StrAnsiToOem('Фамилия   Количество Выручка Премия') );
       outs(StrAnsiToOem('Фамилия   Количество Выручка Премия')+#13#10);
     GoToXY(1,5);
     outs('------------------------------------------------');
     cost:= 1000;
     progprem:= 25;
     for k:= 0 to n - 1 do
     begin
       sum:= cost * kol[k];
       prem:= progprem * kol[k];
    writeln;
       outs(name[k]);
       GoToXY(24, k + 6);
       outs(int2str(kol[k]));
    GoToXY(32, k + 6);
       outs(int2str(sum));
       GoToXY(40, k + 6);
       outs(int2str(prem));
     end;
     sum:= 0;
     i:= 0;
     for k:= 0 to n - 1 do
     begin
       i:= i + kol[k];
       sum:= i * cost; {Сумма выручки}
       prem:=i * progprem;

    end;
     GoToXY(1, n + 6);
     outs('------------------------------------------------');
     GoToXY(17, n + 7);
    //  writeln(UTF8ToConsole('Итого:'));
    // writeln(StrAnsiToOem('Итого:'));
     outs(StrAnsiToOem('Итого:'));
     GoToXY(24, n + 7);
     outs(int2str(i));
     GoToXY(32, n + 7);
     outs(int2str(sum));
     GoToXY(40, n + 7);
     outs(int2str(prem));
     GoToXY(1, n + 9);
    //write(UTF8ToConsole('Нажмите любую клавишу'));
      write(StrAnsiToOem('Нажмите любую клавишу') );
      outs(StrAnsiToOem('Нажмите любую клавишу'));
     inputc;
    end.

  • гоша (20.05.14 01:27) [4]
    СПАСИБО ОГРОМНОЕ, будем ковырять)
  • гоша (21.05.14 00:03) [5]
    снова проблема:  +#13#10 не срабатывает перевод каретки курсора
 
Конференция "KOL" » crt4col [Delphi, Windows]
Есть новые Нет новых   [134427   +35][b:0][p:0.003]