там большой модуль Т__Т а нет попроще реализации без всяких прятаний курсоров и прочих украшени? (;__; ) чтоб можно было потом объяснить человеку, чтобы он попытался обяснить преподу?
зы мб я олух, но не компилируеца он >__> я не знаю почему - но у него неопределены 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 ну и тд
никто ничё не подскажет? :'( надеввду боше нету ни на кого((( мб можно сделать так чтобы это была... ммм... псевдоконсоль штоли? чтоб все операции производились например в каком либо мемо с другого юнита, но всё задавалось через консоль? ;[ мну в отчаянии T__T
Ты DRKB какой версии используешь? Если 3.0, то за исключением пропущенного символа "{" в самом начале, и "=" при определении константы Brown, модуль CRT32 компилируется прекрасно... Кстати, какая версия Дельфи?
drkb 2.3 ... ты знаеш, я находил юнит в нете, точно такой же, } и = я то исправлял, но всё равно не хочет, но блин там нету мануала ток пару каментов... ну ладно с компиляцией разберусь, но можеш тогда показать на примере его использования программу как отловить выделенный текст и например скопировать его пзялста ? забыл - дельфя седьмые
ща позырел - в InputRec нету метода(или как?) InputRec{$IfDef NEW_STYLES}.Event.KeyEvent, а есть InputRec{$IfDef NEW_STYLES}.Event.keybd_event
...чёт я не того... походу это и есть добавление... чеж он ругаеца тада(((
-__- блин это походу изза этих штук {$IfDef NEW_STYLES}... а что это ваще? не коментарии же?..
Погоди... Тебе надо полноэкранное консольное приложение, или достаточно будет не полноэкранного? Если второе - то вот тут: 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, все компилируется...
о большое пасиб, а то я не мог найти такого мануала подробного, позырю завтра, если что отпишусь ... а нащёт полноэкранного и не полноэкранного... если честно я довольно абстрактно представляю что это >__> полноэкранный - типа дос сессии без графики и всяких плюшек, а не полноэкранный - с поддержкой api итд? Ну в любом случае я склоняюсь к тому, что неполноэкранный, задача была поставлена просто как "консольный текстовый редактор", учитывая то, что кроме блокнотика и хелло ворлд мы ничего не делали и нам ничего не объясняли, я думаю всёже неполноэкранный >__>
Добавлено через 1 мин. ааа понятна да, наверно это изза 7
пардон конечено, но я опять с тупыми вопросами -_- сел тут решил накидать основу по примеру, ничерта не получаецца(
Код
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;
Вот начало программы: Project5.rar ( 3.23 килобайт )
Кол-во скачиваний: 429
Пока она умеет только запускать консольное окно, печатать текст (причем даже на Enter реагирует неправильно, надо научить ее этому), и выделять текст мышью с зажатой левой кнопкой... Копирование текста в Clipboard тоже надо добавить... Но разбираться будет проще, чем не имея ничего...
разобрался ток с созданием сохранением загрузкой и файла, а копировать итд не приложу ума как... вольво а можеш написать как это выглядит в теории? а я посижу попробую сделать программно... зы сори за пунктуацию, кпк логает Т__Т