Здравствуйте!
Тут вот возникли два вопроса, связанные с программированием на Делфи.
Особенно волнует второй, хотя подозреваю, что это только моя проблема.
1. Как реализовать следующий алгоритм:
вывод строки
останов вывода до нажатия на любую клавишу
вывод очередной строки
В Паскале под ДОС такое можно было реализовать так:
writeln('');
repeat
until keypress;
writeln('');
Как это сделать в Делфи?
2. Событие onkeydown вызывает звук ошибки Windows (или как его там? короче, ding.wav). Если отключить звуковые схемы, начинает трещать спикер.
А ведь на Enter приходится жать очччень часто. Раздражает ужасно. :x
Неактивен
Блин, написал длиннющий ответ, и по закону подлости завис компьютер! Сегодня в сжатой форме:
1. Попробуй Application.ProcessMessages (неохота долго объяснять, посмотри хелп).
2. Сделай еще одну модальную форму, которую будешь вызывать каждый раз при вводе текста (на ней, ессно, должен быть Edit)
Отчаянный Дух (ОДИН)
P.S. Лучше не заниматься такой фигней на Дельфи По себе знаю
Пиши под WinAPI
)
Неактивен
Ах да, второй вопрос (то был ответ на первый :
Если ты пользуешься Memo и в свойствах установлен ReadOnly=True, то от пищалки никуда не денешься. Терпи
А если что-то другое, то опиши подробней.
Отчаянный Дух (ОДИН)
P.S. Между делом: а какого фига форум taplap'а меня считает гостем? Всегда ж Духом был ( Неохота пароль набивать
Неактивен
Дух, спасибо!
Ведь действительно помогло, несмотря на то что и ответ небольшой получился.
Только вот с треньканьем так ничего и не вышло. И похоже дело тут не только в readonly=true поля memo. Пришлось поступить следующим образом: заменить в звуковой схеме файл ding.wav на пустой. То есть винда все равно звук ошибки выдает, но его уже не слышно:)
Неактивен
Дух написал:
Я только не понял, как ты будешь поступать с этой программой, если ее надо будет переносить на другой комп. Там-то тебе никто не изменит звуковую схему...
Придется писать инсталлятор, который будет искать на ентом компе файл ding.wav (он ведь обычно лежит в папке media ?) и переписывать поверх него пустой. Потом при анинсталле можно все будет вернуть назад.
Неактивен
ужасы какие-то
Неактивен
Либо у тебя кривая Дельфя, либо руки... (:
У меня Дельфи никаких подобных шалостей себе не позволяет! (:
Что ж, всеобщим голосованием было утверждено, что
моя Дельфи немного не в себе. Не спорю, так как давно подозревал об этом, но списывал все на огрехи ОС.
Только немного не понял иронии насчет кривых рук
Вроде обработчик написать -много ума не надо, а заплатить около 1700$ за лицензионный продукт, думаю, не смог никто из присутствующих. Поэтому и не удивительно, что мне попалась битая копия...
Неактивен
(Насчёт звука при нажатии enter)
Посмотри, может на форме стоит KeyPreview=true. Короче, попробуй пиканье убрать через это свойство. А ещё вариант: делаешь маленькую кнопку и делаешь ей свойство default=true.
Хотя, думаю, вот верный ответ: при обработке события нажатия на кнопку есть переменная (параметр процедуры) логического типа (boolean), какая конкретно, уже не помню. Но вот, если в процедуре её стваить в false, то ничего не будет происходить. (Вроде так должно быть). А если уж ничего не помогло, попробуй поспрашивать на http://delphi.mastak.ru
Неактивен
Мда-а-а...
Поставил я себе седьмые Делфя. Запустил старые исходники...и все вернулось на круги своя!
Все так же стучит (пищит?), ну что же с этим делать, а ?!
Предлагаю всем дельфинистам провести следственный эксперимент: создать новое приложение, на пустую форму поместить edit. Запустить, передать edit'у фокус ввода (чтоб курсор в нем мигал ) и понажимать enter. Если слышно эдакое "п-пынь!", значит я не один, а если нет - выходит мне сильно повезло, и у меня уже две кривые дельфи, три кривые винды и пара кривых рук
Неактивен
Гм... А теперь правильный ответ
TEdit в Делфи имеет "запрещенные" клавиши, при нажатии на которые (если TEdit в фокусе) выдается злополучный звук. В их числе - и enter. Избежать этого поможет следующая строка в обработчике OnKeyPress:
if key=#13 then key:=#0;
Звуков больше не будет, а в обработчике OnKeyDown можно реализовать все действия, связанные с нажатием на ввод.
Неактивен
Здаствуйте.
Прошу прощения за достаточно нубский вопросс. Я сам в делфи не разбираюсь. Всю ночь ковырял интырнет в поисках курсового для моей девушки.
Тема курсового такая:"Модель остывания нагретых тел в атмосфере". Должна быть написана програмулина в делфи, которая изображает нагретое тело (допустим круг)... определенного цвета (допустим красного)... И за определенный период времени это тело должно изменить свой цвет на синий.... плавно от краев к центру.
Есть ли готовые аналоги такой вот лабуды ?
Кто может... помогите... а то миня убьют
по предыдущим постам:
1. if key=#13 then key=#0 { действительно нормальная Дельфя при нормальных руках и виндах без этого пищит. я до этого додумался довольно быстро и, как вижу, не я один }
2. тебе нужен текстовый квест про нагретое тело? - подожди, к КРИЛ-2006 будет готов
3. с какого ещё пульта ???
теперь к делу:
решился таки на КРИЛ писать квест на Дельфях ввиду общей неудовлетворённости существующими платформами (даже мелкие недостатки становятся решающими, когда хочется написать квест НА КОНКУРС).
в связи с этим ВОПРОС:
пишу в консольном приложении по русски, а запускаю- выходит абракадабра (у нас её ещё называют "грузиница"). как и что можно с этим сделать?
Неактивен
Конвертировать текст в кодировку 866: CharToOem(StrFrom,StrTo: PChar):Bool;
function WinToDos (S:string): PChar; var R: PChar; begin R:=StrNew(PChar(S)); CharToOem(PChar(S),R); WinToDos:=R; end;
Неактивен
а какие модули подключать? а то пишет: Undeclared identifier: 'CharToOem'. у меня- Delphi 5.
UPD
заработало!!!!!!!!!!!!
а то я уж и забыл, как тогда делал (qwerty- это я, и совет мне тогда помог).
UPD
модуль Windows
p.s.
понравились мне эти буковки: UPD
UPD
program Project1; {$APPTYPE CONSOLE} uses Windows, SysUtils; var S: string; { Конвертировать текст в кодировку 866: CharToOem(StrFrom,StrTo: PChar):Bool;} function WinToDos (S:string): PChar; var R: PChar; begin R:=StrNew(PChar(S)); CharToOem(PChar(S),R); WinToDos:=R; end; function DosToWin (S:string): PChar; var R: PChar; begin R:=StrNew(PChar(S)); OemToChar(PChar(S),R); DosToWin:=R; end; begin { TODO -oUser -cConsole Main : Insert code here } s:='Привет ВСЕМ !!!'; s:=WinToDos(s); writeln(s); readln(s); writeln(s); s:=DosToWin(s); if s='кэролл' then writeln('гип-гип'); readln; end.
ну, исправить незначительную ошибку в этом коде сможет любой, кто его поймёт
Отредактировано noname (14.12.2008 21:58)
Неактивен
если кому нужно - вот исходники моего текстого квеста на дельфах
http://breakmt.narod.ru/billy_src.zip
может поможет кому
Неактивен
BreakMT написал:
если кому нужно - вот исходники моего текстого квеста на дельфах
http://breakmt.narod.ru/billy_src.zip
может поможет кому
ИМХО писать квесты на дельфи куда лучше, чем писать библиотеку для написания квестов на дельфи. единственное замечание- приложи экзешник, плиззз, а то на 5-й дельфи не компилируется, а 7-я у меня недавно слетела- решила, непонятно с чего, что она пиратская
интересно пощупать результат.
Неактивен