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

> ВНИМАНИЕ!

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

> консольный текстовый редактор
kr3v3tkus
сообщение 29.10.2007 11:43
Сообщение #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 - 29.10.2007 11:44


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

Креветка присваивания :DDD
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
kr3v3tkus
сообщение 3.11.2007 3:22
Сообщение #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 - 3.11.2007 3:23


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

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

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


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

 



- Текстовая версия 9.08.2025 20:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"