![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
kr3v3tkus |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
Подскажите как реализовать функции редактирования текста в консоли?
Код AssignFile (F, s); Reset(F); while not EOF(F) do begin Readln (F, s); MyWriteln(s); end; можно вообще их реализовать при таком вводе? зы пробовал делать пару процедур по мануалам - не работают ![]() ![]() Код 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 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
В DRKB просмотри реализацию модуля "CRT для консольного приложения", там вполне рабочая версия...
|
kr3v3tkus |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
там большой модуль Т__Т а нет попроще реализации без всяких прятаний курсоров и прочих украшени? (;__; ) чтоб можно было потом объяснить человеку, чтобы он попытался обяснить преподу?
![]() зы мб я олух, но не компилируеца он >__> я не знаю почему - но у него неопределены KeyEvent и много чего ещё + гдето ошибка в синтаксисе... [Error] CRT32.pas(513): Undeclared identifier: 'KeyEvent' [Error] CRT32.pas(525): Undeclared identifier: 'MouseEvent' [Error] CRT32.pas(527): Undeclared identifier: 'dwMousePosition' [Error] CRT32.pas(527): Missing operator or semicolon [Error] CRT32.pas(527): Missing operator or semicolon ну и тд Сообщение отредактировано: kr3v3tkus - 29.10.2007 15:10 -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
kr3v3tkus |
![]()
Сообщение
#4
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
никто ничё не подскажет? :'( надеввду боше нету ни на кого(((
мб можно сделать так чтобы это была... ммм... псевдоконсоль штоли? чтоб все операции производились например в каком либо мемо с другого юнита, но всё задавалось через консоль? ;[ мну в отчаянии T__T -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата зы мб я олух, но не компилируеца он ![]() |
kr3v3tkus |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
drkb 2.3 ... ты знаеш, я находил юнит в нете, точно такой же, } и = я то исправлял, но всё равно не хочет, но блин там нету мануала
![]() ![]() забыл - дельфя седьмые ща позырел - в InputRec нету метода(или как?) InputRec{$IfDef NEW_STYLES}.Event.KeyEvent, а есть InputRec{$IfDef NEW_STYLES}.Event.keybd_event ...чёт я не того... походу это и есть добавление... чеж он ругаеца тада((( -__- блин это походу изза этих штук {$IfDef NEW_STYLES}... а что это ваще? не коментарии же?.. Сообщение отредактировано: kr3v3tkus - 31.10.2007 1:25 -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Погоди... Тебе надо полноэкранное консольное приложение, или достаточно будет не полноэкранного? Если второе - то вот тут: http://www.silicontaiga.ru/home.asp?artId=5757
разжевано до неприличия, как работать с консолью, как отлавливать клавиши, события мыши и т.п. Посмотри, по-моему достаточно просто можно собрать из всего, что там написано, программу с нужной функциональностью. Если не будет получаться - говори, попробуем помочь... Добавлено через 11 мин. Цитата а что это ваще? не коментарии же?.. Нет... Не комментарии... Это директивы компиляции. То есть, если у тебя определен символ компиляции VER130 или VER140 (то есть, версия Object Pascal-компилятора 13.0 или 14.0), то будет определен и символ NEW_STYLES... А уже если определен NEW_STYLES, то строка типа:(InputRec{$IfDef NEW_STYLES}.Event{$EndIf}.KeyEvent.bKeyDown) then ...
будет восприниматься компилятором, как (InputRec.Event.KeyEvent.bKeyDown) then ...
, если же NEW_STYLES не определено (может, компилятор старше чем D6, может, наоборот, новый, в котором версия Object Pascal больше чем 14.0), тогда обращение будет БЕЗ поля Event (символ компиляции отсутствует - то, что находится между $IFDEF/$ENDIF выбрасывается):(InputRec.KeyEvent.bKeyDown) then ...
Для этого я и спрашивал, какая у тебя версия Дельфи... Насчет семерки не знаю, у меня D6, все компилируется... |
kr3v3tkus |
![]()
Сообщение
#8
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
о большое пасиб, а то я не мог найти такого мануала подробного, позырю завтра, если что отпишусь
![]() Добавлено через 1 мин. ааа ![]() ![]() ![]() Сообщение отредактировано: kr3v3tkus - 31.10.2007 2:19 -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
kr3v3tkus |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
пардон конечено, но я опять с тупыми вопросами -_- сел тут решил накидать основу по примеру, ничерта не получаецца(
Код 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 |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Вот начало программы:
![]() Пока она умеет только запускать консольное окно, печатать текст (причем даже на Enter реагирует неправильно, надо научить ее этому), и выделять текст мышью с зажатой левой кнопкой... Копирование текста в Clipboard тоже надо добавить... Но разбираться будет проще, чем не имея ничего... |
kr3v3tkus |
![]()
Сообщение
#11
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
Цитата Но разбираться будет проще, чем не имея ничего... согласен ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
kr3v3tkus |
![]()
Сообщение
#12
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
небольшой вопросик - почему vk_Return не хочет выполняться? на любую другую кнопку цепляется, а сюда нет(
-------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
kr3v3tkus |
![]()
Сообщение
#13
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
разобрался ток с созданием сохранением загрузкой и файла, а копировать итд не приложу ума как... вольво а можеш написать как это выглядит в теории? а я посижу попробую сделать программно...
зы сори за пунктуацию, кпк логает Т__Т -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
![]() ![]() |
![]() |
Текстовая версия | 7.08.2025 4:45 |