Суббота, 26.05.2012, 00:01

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Страница 11 из 11«1291011
Модератор форума: Vinchensoo 
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Delphi:Вопрос-Ответ (Спросил - получил ответ)
Delphi:Вопрос-Ответ
karuyДата: Суббота, 04.02.2012, 19:10 | Сообщение # 201
постоянный участник
Сообщений: 389
Сейчас на сайте
Quote (Spider_System)
Я нашел что-то про .res-файлы, но по-моему это не совсем то, что нужно.

Ошибаешься, как раз то.

++++++++++[>++++++++++>++++++++++>+++++++++++>++++++++++++>++++++++++++<<<<<-]>+++++++.>---.>++++.>---.>+.
Для замечаний по поводу грамотности есть репутация.
 
Spider_SystemДата: Суббота, 04.02.2012, 19:11 | Сообщение # 202
Злой прогер-пьяница
Сообщений: 221
Сейчас нет на сайте
Quote (karuy)
Ошибаешься, как раз то.

а, отлично, просто подумал, что это что-то вроде архивов, которые таскать с прогой надо.
Ну значит покопаемся в этом деле.

Маньяк. Убийца. Социопат. Анархист.
Мой проект:
Spider System
Исходники Spider System
 
GameMixДата: Воскресенье, 05.02.2012, 13:03 | Сообщение # 203
старожил
Сообщений: 1591
Сейчас нет на сайте
TimKruz, работа кода впечатляет. Много возможностей у Windows, но их пока изучишь...
LunarPixel, твой вариант выглядит просто и работает. Но, так же, не понятно, что за функция.

Спасибо вам за помощь! Буду разбираться smile .

Но вот появилась проблема касательно Application:

Что я такого там сделал, что появляется такая ошибка при обращении к формам?

Steel Standoff - 2D аркада.
Мои статьи
MTA сервер [GCUP.RU] - RusPlay


Сообщение отредактировал GameMix - Воскресенье, 05.02.2012, 13:08
 
karuyДата: Воскресенье, 05.02.2012, 13:21 | Сообщение # 204
постоянный участник
Сообщений: 389
Сейчас на сайте
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.02.2012, 13:44 | Сообщение # 205
старожил
Сообщений: 1591
Сейчас нет на сайте
karuy, спасибо, теперь ошибка не появляется. Ставил закрытие формы в события onActivate/onShow - форма закрывается не сразу.

Можно как-нибудь сделать, чтобы она закрывалась сразу, не успев отобразиться на панели задач?

Steel Standoff - 2D аркада.
Мои статьи
MTA сервер [GCUP.RU] - RusPlay


Сообщение отредактировал GameMix - Воскресенье, 05.02.2012, 14:19
 
TimKruzДата: Воскресенье, 05.02.2012, 16:26 | Сообщение # 206
старожил
Сообщений: 1588
Сейчас нет на сайте
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.02.2012, 16:42
 
berzegovДата: Воскресенье, 04.03.2012, 14:00 | Сообщение # 207
участник
Сообщений: 166
Сейчас нет на сайте
Подскажите пожалуйста тип данных, чтобы совмещал integer и string.

 
LunarPixelДата: Воскресенье, 04.03.2012, 14:14 | Сообщение # 208
старожил
Сообщений: 2707
Сейчас нет на сайте
berzegov, в каком смысле совмещал!?
переводи из стринга в интеджер и обратно.
intotostr(int) и strtoint(str)

Набор в команду по развитию сайта GiGatun.ru

Уроки по GM от LunarPixel

Мой сайт "Лунный Пиксель"
 
berzegovДата: Воскресенье, 04.03.2012, 16:39 | Сообщение # 209
участник
Сообщений: 166
Сейчас нет на сайте
Quote (LunarPixel)
в каком смысле совмещал!?


Например в Edit вводится слово с цифрами и мне надо записать их в одну переменную.

 
sk0rpi0nДата: Воскресенье, 04.03.2012, 17:41 | Сообщение # 210
Tiberium
Сообщений: 478
Сейчас нет на сайте
Quote
Например в Edit вводится слово с цифрами и мне надо записать их в одну переменную.

Гм, ну запиши в строку, а если тебе нужны числа, то не быдлокодь, и убери записывание символов(кроме цифр) из Edit.


Занимаюсь моддингом игр и программированием на Delphi/Java/Java Script.
 
tracer07Дата: Воскресенье, 04.03.2012, 18:01 | Сообщение # 211
участник
Сообщений: 156
Сейчас нет на сайте
berzegov,
var s:string;
begin
s:=edit1.text;
end;

в переменную запишутся все символы включая числа и прочие знаки. Никакой другой тип данных для этого не нужен
 
TimKruzДата: Воскресенье, 04.03.2012, 18:20 | Сообщение # 212
старожил
Сообщений: 1588
Сейчас нет на сайте
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.03.2012, 20:13
 
berzegovДата: Воскресенье, 04.03.2012, 18:45 | Сообщение # 213
участник
Сообщений: 166
Сейчас нет на сайте
Quote (sk0rpi0n)
Гм, ну запиши в строку, а если тебе нужны числа, то не быдлокодь, и убери записывание символов(кроме цифр) из Edit.

Спасибо
Quote (sk0rpi0n)
в переменную запишутся все символы включая числа и прочие знаки. Никакой другой тип данных для этого не нужен

Спасибо, но ты меня чуть не понял

Quote (TimKruz)
Этот код поместит в X (целое положительное 32-битное число) число, "зашифрованное" в строке str, переданной из поля Edit1, а в строке str останется строка без цифр.
Например, строка "абвгд342клмн09-57ы" будет разбита на число 3420957 и строку "абвгдклмн-ы". Но, можно разбивать иначе, скажем, выделяя отдельные числа, разделённые буквами, или выделять дробные и отрицательные числа.
Стандартных средств для этих целей в Delphi нет.

Спасибо, это тоже подойдет.

 
TimKruzДата: Воскресенье, 04.03.2012, 20:10 | Сообщение # 214
старожил
Сообщений: 1588
Сейчас нет на сайте
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.03.2012, 20:15
 
Ivas1256Дата: Пятница, 06.04.2012, 14:54 | Сообщение # 215
был не раз
Сообщений: 6
Сейчас нет на сайте
я пишу 2D игру, нужно ль на форму кидать какие-либо объекты и если да то какие

Сообщение отредактировал Ivas1256 - Пятница, 06.04.2012, 15:06
 
TimKruzДата: Пятница, 06.04.2012, 16:04 | Сообщение # 216
старожил
Сообщений: 1588
Сейчас нет на сайте
Ivas1256, всё зависит от того, как (с помощью чего) ты её пишешь. Ты можешь использовать стандартные компоненты (например, кнопки, надписи), а можешь рисовать прямо на канву формы. С использованием DirectX или OpenGL тебе ничего не потребуется (кроме соответствующих модулей; хотя по-прежнему можешь добавлять стандартные компоненты). Как использовать - ищи в поисковиках уроки, лучше книги-самоучители.
Есть инкапсулированные в компоненты движки (например, DelphiX, но он давно закрыт и не развивается), для использования которых нужно "кинуть на форму" соответствующий компонент, обычно не визуальный; но игровые движки не идут в комплекте с Delphi, их нужно скачивать и устанавливать отдельно.

Короче, ищи уроки/книги про программирование игр (или, например, использование OpenGL) на Delphi.



Сообщение отредактировал TimKruz - Пятница, 06.04.2012, 16:07
 
sk0rpi0nДата: Пятница, 06.04.2012, 17:07 | Сообщение # 217
Tiberium
Сообщений: 478
Сейчас нет на сайте
Quote
я пишу 2D игру, нужно ль на форму кидать какие-либо объекты и если да то какие

Немного не по теме, но можешь попробовать движки ZenGL и GLScene.


Занимаюсь моддингом игр и программированием на Delphi/Java/Java Script.
 
Ivas1256Дата: Суббота, 07.04.2012, 09:30 | Сообщение # 218
был не раз
Сообщений: 6
Сейчас нет на сайте
TimKruz, а вот если мне надо чтоб при нажатии мышкой выполнялось какое-нибудь событие, это через DirectX, через движок или это средствами delphi делается?
 
sk0rpi0nДата: Суббота, 07.04.2012, 10:11 | Сообщение # 219
Tiberium
Сообщений: 478
Сейчас нет на сайте
Quote
а вот если мне надо чтоб при нажатии мышкой выполнялось какое-нибудь событие, это через DirectX, через движок или это средствами delphi делается?

Через Delphi


Занимаюсь моддингом игр и программированием на Delphi/Java/Java Script.
 
Ivas1256Дата: Суббота, 07.04.2012, 18:34 | Сообщение # 220
был не раз
Сообщений: 6
Сейчас нет на сайте
Спасибо, буду разбираться biggrin
 
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Delphi:Вопрос-Ответ (Спросил - получил ответ)
Страница 11 из 11«1291011
Поиск:

Все права сохранены. GcUp.ru © 2008-2012 Рейтинг