IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> консольный текстовый редактор
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 111
Пол: Мужской
Реальное имя: Рома

Репутация: -  0  +


Подскажите как реализовать функции редактирования текста в консоли?
Код

          AssignFile (F, s);
          Reset(F);

          while not EOF(F) do
          begin
            Readln (F, s);
            MyWriteln(s);
          end;

можно вообще их реализовать при таком вводе?
зы пробовал делать пару процедур по мануалам - не работают sad.gif чиво они так? sad.gif
Код

procedure GotoXY(X, Y: Word);
begin
  Coord.X := X;
  Coord.Y := Y;
  SetConsoleCursorPosition(ConHandle, Coord);
end;

procedure ClrScr;
begin
  Coord.X := 0;
  Coord.Y := 0;
  FillConsoleOutputCharacter(ConHandle, ' ', MaxX * MaxY, Coord, NOAW);
  GotoXY(0, 0);
end;

ззы или плз киньте линки на литературу >__>

Сообщение отредактировано: kr3v3tkus -


--------------------
Цитата
          .     .
           \__/
          (**)
(>:=:=:~~ 
  ^ ^ ^ ^ 

Креветка присваивания :DDD
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 111
Пол: Мужской
Реальное имя: Рома

Репутация: -  0  +


пардон конечено, но я опять с тупыми вопросами -_- сел тут решил накидать основу по примеру, ничерта не получаецца(
Код

program Consolepr;
{$APPTYPE CONSOLE}
{$R *.res}
uses
  Windows, SysUtils;


Type PBuffer= ^TBuffer;
     TBUffer= packed array [0..16384] of TCharInfo;


var Buffer: PBuffer;
      InpHnd: Cardinal;
{----------PROCEDUREs----------}
procedure Input;
var
a: Char;
IR: INPUT_RECORD;
C: _Coord;
InpHnd, OutHnd, Wr: Cardinal;
begin
repeat
WaitForSingleObjectEx(InpHnd,INFINITE,false);  // ждем события
ReadConsoleInput(InpHnd,IR,1,Wr);  // берем запись в переменную IR
case IR.EventType of // анализируем тип события
KEY_EVENT:  // от клавиатуры:
begin
   if IR.Event.KeyEvent.bKeyDown then  // если клавиша нажата
   begin
     a:=IR.Event.KeyEvent.AsciiChar;  // взять символ в переменную "а"
     if a>#0 then  // если буквенная клавиша:
     begin
       WriteConsoleOutputCharacter(OutHnd,@a,1,C,Wr);  // вывести букву на экран
       Inc(C.X);  // сместиться вправо
     end
     else  // если служебная:
     case IR.Event.KeyEvent.wVirtualKeyCode of  // проверяем код виртуальной клавиши
     VK_UP:
     if (IR.Event.KeyEvent.dwControlKeyState and SHIFT_PRESSED <> 0)
       then {!!!}  // если Shift+Вверх, то делаем что-то
     end;
   end;
end;
end;
until IR.Event.KeyEvent.wVirtualKeyCode = VK_F10;  // выход по нажатию F10
end;

procedure Output;
var
co: _COORD;
Hnd, Wr: Cardinal;
begin
Hnd:=GetStdHandle(STD_INPUT_HANDLE);
co.X:=0;
co.Y:=0;
SetConsoleCursorPosition(Hnd,co);
WriteConsoleOutputAttribute(Hnd,Buffer,10,co,Wr);
end;



{----------/PROCEDUREs----------}

{body}
begin

inpHnd:=GetStdHandle(STD_INPUT_HANDLE);
SetConsoleMode(inpHnd,ENABLE_PROCESSED_INPUT);

Input;

Output;

readln;

end.

1 Никак не могу разобраться с переменными - какую в какую процедуру передавать и надо ли вообще...
2 Каким типом лучше описать буфер?

Сообщение отредактировано: kr3v3tkus -


--------------------
Цитата
          .     .
           \__/
          (**)
(>:=:=:~~ 
  ^ ^ ^ ^ 

Креветка присваивания :DDD
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
kr3v3tkus   консольный текстовый редактор   29.10.2007 15:43
volvo   В DRKB просмотри реализацию модуля "CRT для к…   29.10.2007 15:57
kr3v3tkus   там большой модуль Т__Т а нет попроще реализации б…   29.10.2007 16:26
kr3v3tkus   никто ничё не подскажет? :'( надеввду боше нет…   31.10.2007 4:21
volvo   :blink: Ты DRKB какой версии используешь? Если 3.…   31.10.2007 4:33
kr3v3tkus   drkb 2.3 ... ты знаеш, я находил юнит в нете, точн…   31.10.2007 4:56
volvo   Погоди... Тебе надо полноэкранное консольное прило…   31.10.2007 6:01
kr3v3tkus   о большое пасиб, а то я не мог найти такого мануал…   31.10.2007 6:16
kr3v3tkus   пардон конечено, но я опять с тупыми вопросами -_-…   3.11.2007 7:22
volvo   Вот начало программы: Пока она умеет только запу…   3.11.2007 7:33
kr3v3tkus   согласен :)) пасиб большое щаз бум препарировать …   3.11.2007 7:39
kr3v3tkus   небольшой вопросик - почему vk_Return не хочет вып…   3.11.2007 8:44
kr3v3tkus   разобрался ток с созданием сохранением загрузкой и…   6.11.2007 5:19


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 22:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name