Delphi:Вопрос-Ответ
| |
karuy | Дата: Суббота, 04 Февраля 2012, 19:10 | Сообщение # 201 |
заслуженный участник
Сейчас нет на сайте
| Quote (Spider_System) Я нашел что-то про .res-файлы, но по-моему это не совсем то, что нужно. Ошибаешься, как раз то.
|
|
| |
Spider_System | Дата: Суббота, 04 Февраля 2012, 19:11 | Сообщение # 202 |
Злой прогер-пьяница
Сейчас нет на сайте
| Quote (karuy) Ошибаешься, как раз то. а, отлично, просто подумал, что это что-то вроде архивов, которые таскать с прогой надо. Ну значит покопаемся в этом деле.
Маньяк. Убийца. Социопат. Анархист. Мой проект: Spider System Исходники Spider System
|
|
| |
GameMix | Дата: Воскресенье, 05 Февраля 2012, 13:03 | Сообщение # 203 |
старожил
Сейчас нет на сайте
| TimKruz, работа кода впечатляет. Много возможностей у Windows, но их пока изучишь... LunarPixel, твой вариант выглядит просто и работает. Но, так же, не понятно, что за функция.
Спасибо вам за помощь! Буду разбираться .
Но вот появилась проблема касательно Application: Что я такого там сделал, что появляется такая ошибка при обращении к формам?
Steel Standoff - 2D аркада. Мои статьи
Сообщение отредактировал GameMix - Воскресенье, 05 Февраля 2012, 13:08 |
|
| |
karuy | Дата: Воскресенье, 05 Февраля 2012, 13:21 | Сообщение # 204 |
заслуженный участник
Сейчас нет на сайте
| GameMix, А на каком ивенте выполняется этот участок кода? - Правильно нинакаком. Либо так делай: Code procedure TForm1.FormCreate(Sender: TObject); begin ShowMessage('ПРИВЕТ'); Close; end;; Либо так: Code procedure aaa; begin ShowMessage('ПРИВЕТ'); Form1.Close; end;
procedure TForm1.FormCreate(Sender: TObject); begin aaa; end; Хотя на онкриейт по идее форма не закроется.
|
|
| |
GameMix | Дата: Воскресенье, 05 Февраля 2012, 13:44 | Сообщение # 205 |
старожил
Сейчас нет на сайте
| karuy, спасибо, теперь ошибка не появляется. Ставил закрытие формы в события onActivate/onShow - форма закрывается не сразу.
Можно как-нибудь сделать, чтобы она закрывалась сразу, не успев отобразиться на панели задач?
Steel Standoff - 2D аркада. Мои статьи
Сообщение отредактировал GameMix - Воскресенье, 05 Февраля 2012, 14:19 |
|
| |
TimKruz | Дата: Воскресенье, 05 Февраля 2012, 16:26 | Сообщение # 206 |
старожил
Сейчас нет на сайте
| Quote (GameMix) TimKruz, работа кода впечатляет. Много возможностей у Windows, но их пока изучишь... Литературу можно почитать... На Microsoft'ском сайте есть онлайн-справочник (официальный, с примерами на C++ и Delphi), правда, на английском... Есть похожие и на русском... Quote (GameMix) LunarPixel, твой вариант выглядит просто и работает. Но, так же, не понятно, что за функция. Да всё просто. GetAsyncKeyState(код_клавиши) (константы можешь также глянуть в модуле Windows.pas со строчки 18157) возвращает 0, если кнопка не нажата... Вот тут можешь глянуть... или вот описание от Microsoft...
Quote (GameMix) Что я такого там сделал, что появляется такая ошибка при обращении к формам? Код вида «implementation begin blablabla end.» в модулях Delphi выполняется как инициализирующий модуль. Т.е. в нём можно, например, задавать значения переменным, создавать динамические переменные и т.п. Этот код выполняется сразу после подключения к основному коду или другому модулю. Так что в коде project1.dpr, куда подключается твой unit1.pas, этот код будет стоять выше создания и инициализации объектов TApplication и TForm1, следовательно, обращаться к ним нельзя. Quote (GameMix) karuy, спасибо, теперь ошибка не появляется. Ставил закрытие формы в события onActivate/onShow - форма закрывается не сразу. Можно как-нибудь сделать, чтобы она закрывалась сразу, не успев отобразиться на панели задач? Если тебе это окно вообще нафиг не надо, просто удали строчку «Application.CreateForm(TForm1, Form1)» из кода программы. Если тебе нужно сразу закрыть программу, не инициируя формы, можешь заменить в твоём первом варианте кода "form1.close" на "halt(0)". Но благоразумнее удалить форму совсем, если она тебе просто ненужна. Например, ты хочешь просто вывести окошко с сообщением, можешь начать новый консольный проект, удалить из него всё и вставить следующее: Code uses dialogs; begin showmessage('Привет!'); end.
Сообщение отредактировал TimKruz - Воскресенье, 05 Февраля 2012, 16:42 |
|
| |
berzegov | Дата: Воскресенье, 04 Марта 2012, 14:00 | Сообщение # 207 |
участник
Сейчас нет на сайте
| Подскажите пожалуйста тип данных, чтобы совмещал integer и string.
|
|
| |
LunarPixel | Дата: Воскресенье, 04 Марта 2012, 14:14 | Сообщение # 208 |
старожил
Сейчас нет на сайте
| berzegov, в каком смысле совмещал!? переводи из стринга в интеджер и обратно. intotostr(int) и strtoint(str)
|
|
| |
berzegov | Дата: Воскресенье, 04 Марта 2012, 16:39 | Сообщение # 209 |
участник
Сейчас нет на сайте
| Quote (LunarPixel) в каком смысле совмещал!?
Например в Edit вводится слово с цифрами и мне надо записать их в одну переменную.
|
|
| |
sk0rpi0n | Дата: Воскресенье, 04 Марта 2012, 17:41 | Сообщение # 210 |
Tiberium
Сейчас нет на сайте
| Quote Например в Edit вводится слово с цифрами и мне надо записать их в одну переменную. Гм, ну запиши в строку, а если тебе нужны числа, то не быдлокодь, и убери записывание символов(кроме цифр) из Edit.
Adventures of the Purple Ball - готов. Wanderer - готов.
|
|
| |
tracer07 | Дата: Воскресенье, 04 Марта 2012, 18:01 | Сообщение # 211 |
постоянный участник
Сейчас нет на сайте
| berzegov, var s:string; begin s:=edit1.text; end;
в переменную запишутся все символы включая числа и прочие знаки. Никакой другой тип данных для этого не нужен
|
|
| |
TimKruz | Дата: Воскресенье, 04 Марта 2012, 18:20 | Сообщение # 212 |
старожил
Сейчас нет на сайте
| berzegov, можешь разделить буквы от цифр, пройдясь по строке, например (исправленный код): Code var str,buf:string; x:longword; i,n:byte; begin str:=edit1.text; n:=length(str); i:=1; while i<=n do begin if str[i] in ['0'..'9'] then begin buf:=buf+str[i]; delete(str,i,1); dec(n); end else inc(i); end; x:=strtoint(buf); end; Этот код поместит в X (целое положительное 32-битное число) число, "зашифрованное" в строке str, переданной из поля Edit1, а в строке str останется строка без цифр. Например, строка "абвгд342клмн09-57ы" будет разбита на число 3420957 и строку "абвгдклмн-ы". Но, можно разбивать иначе, скажем, выделяя отдельные числа, разделённые буквами, или выделять дробные и отрицательные числа. Стандартных средств для этих целей в Delphi нет.
Сообщение отредактировал TimKruz - Воскресенье, 04 Марта 2012, 20:13 |
|
| |
berzegov | Дата: Воскресенье, 04 Марта 2012, 18:45 | Сообщение # 213 |
участник
Сейчас нет на сайте
| Quote (sk0rpi0n) Гм, ну запиши в строку, а если тебе нужны числа, то не быдлокодь, и убери записывание символов(кроме цифр) из Edit. Спасибо Quote (sk0rpi0n) в переменную запишутся все символы включая числа и прочие знаки. Никакой другой тип данных для этого не нужен Спасибо, но ты меня чуть не понял
Quote (TimKruz) Этот код поместит в X (целое положительное 32-битное число) число, "зашифрованное" в строке str, переданной из поля Edit1, а в строке str останется строка без цифр. Например, строка "абвгд342клмн09-57ы" будет разбита на число 3420957 и строку "абвгдклмн-ы". Но, можно разбивать иначе, скажем, выделяя отдельные числа, разделённые буквами, или выделять дробные и отрицательные числа. Стандартных средств для этих целей в Delphi нет. Спасибо, это тоже подойдет.
|
|
| |
TimKruz | Дата: Воскресенье, 04 Марта 2012, 20:10 | Сообщение # 214 |
старожил
Сейчас нет на сайте
| Quote (berzegov) Спасибо, это тоже подойдет. berzegov, я там ошибся немного (с циклом и множеством цифр), вот исправил, теперь работает правильно: Code var str,buf:string; x:longword; i,n:byte; begin str:=edit1.text; n:=length(str); i:=1; //счётчик while i<=n do //FOR не подойдёт, т.к. длина строки меняться будет if str[i] in ['0'..'9'] then begin buf:=buf+str[i]; delete(str,i,1); dec(n); //уменьшаем длину строки, а счётчик не трогаем end else inc(i); //если не цифра, то просто увеличим счётчик x:=strtoint(buf); end;
Сообщение отредактировал TimKruz - Воскресенье, 04 Марта 2012, 20:15 |
|
| |
Ivas1256 | Дата: Пятница, 06 Апреля 2012, 14:54 | Сообщение # 215 |
был не раз
Сейчас нет на сайте
| я пишу 2D игру, нужно ль на форму кидать какие-либо объекты и если да то какие
Сообщение отредактировал Ivas1256 - Пятница, 06 Апреля 2012, 15:06 |
|
| |
TimKruz | Дата: Пятница, 06 Апреля 2012, 16:04 | Сообщение # 216 |
старожил
Сейчас нет на сайте
| Ivas1256, всё зависит от того, как (с помощью чего) ты её пишешь. Ты можешь использовать стандартные компоненты (например, кнопки, надписи), а можешь рисовать прямо на канву формы. С использованием DirectX или OpenGL тебе ничего не потребуется (кроме соответствующих модулей; хотя по-прежнему можешь добавлять стандартные компоненты). Как использовать - ищи в поисковиках уроки, лучше книги-самоучители. Есть инкапсулированные в компоненты движки (например, DelphiX, но он давно закрыт и не развивается), для использования которых нужно "кинуть на форму" соответствующий компонент, обычно не визуальный; но игровые движки не идут в комплекте с Delphi, их нужно скачивать и устанавливать отдельно.
Короче, ищи уроки/книги про программирование игр (или, например, использование OpenGL) на Delphi.
Сообщение отредактировал TimKruz - Пятница, 06 Апреля 2012, 16:07 |
|
| |
sk0rpi0n | Дата: Пятница, 06 Апреля 2012, 17:07 | Сообщение # 217 |
Tiberium
Сейчас нет на сайте
| Quote я пишу 2D игру, нужно ль на форму кидать какие-либо объекты и если да то какие Немного не по теме, но можешь попробовать движки ZenGL и GLScene.
Adventures of the Purple Ball - готов. Wanderer - готов.
|
|
| |
Ivas1256 | Дата: Суббота, 07 Апреля 2012, 09:30 | Сообщение # 218 |
был не раз
Сейчас нет на сайте
| TimKruz, а вот если мне надо чтоб при нажатии мышкой выполнялось какое-нибудь событие, это через DirectX, через движок или это средствами delphi делается?
|
|
| |
sk0rpi0n | Дата: Суббота, 07 Апреля 2012, 10:11 | Сообщение # 219 |
Tiberium
Сейчас нет на сайте
| Quote а вот если мне надо чтоб при нажатии мышкой выполнялось какое-нибудь событие, это через DirectX, через движок или это средствами delphi делается? Через Delphi
Adventures of the Purple Ball - готов. Wanderer - готов.
|
|
| |
Ivas1256 | Дата: Суббота, 07 Апреля 2012, 18:34 | Сообщение # 220 |
был не раз
Сейчас нет на сайте
| Спасибо, буду разбираться
|
|
| |
|