PDA

Просмотр полной версии : Object Pascal ( Deplhi/Kylix )


Gauntlet
12.05.2004, 16:07
Вопросы - ответы по программированию в средах delphi/kylix и конкретно языку Object Pascal.
ТОЛЬКО вопросы и ответы. НИКАКОГО трепа.

DRUFEL
24.11.2004, 17:07
программу на DELPHI для SMPP протакола можешь сделать

Gauntlet
24.11.2004, 22:20
программу на DELPHI для SMPP протакола можешь сделать
Могу. За деньги =) За подробностями в приват.

Vinitu
08.02.2005, 19:39
Разъясните пожалуста одну ситуацию : я скачал с нета текст проги для Pascal, по идеи при запуске по экрану должна бегать картинка, загруженная из предварительно созданного bmp файла в формате 256 цветов, но вместо картинки по экрану бегает черный квадрат. ??? ??? ???

GrISeR
11.02.2005, 23:49
Без текста программы как тут разберешься...
Если из домашних сетей, то залей на ftp, разберемся.

Vinitu
12.02.2005, 22:47
вот смотри сам:

program Sprite;
{простейшая демонстрация работы со спрайтами}
uses
*dos, * * {для работы с прерыванием VideoBIOS}
*crt; * * {для работы с клавиатурой}
const
*Xsize = 20; * * *{размеры спрайта, точек}
*Ysize = 20;
*TransparentColor = $FF; {"прозрачный" цвет}
type
*SpriteArrayType = array[0..Ysize-1,0..Xsize-1]of byte;
* * * * * * * * * {массив равный по размеру спрайту}
*SpriteType = record
* *x,y *: word; * * * * {текущие координаты спрайта}
* *dx,dy : integer; * {приращения координат спрайта}
* *Img *: ^SpriteArrayType;
* *{для массива с изображением спрайта}
* *Back : ^SpriteArrayType;
* *{для массива, хранящего фон под спрайтом}
*end;
*ScreenType = array[0..199,0..319]of byte;
*{для экрана}
var
*Sprt : SpriteType; * * * * * * * * * * * * {спрайт}
*r * *: registers; * * *{для вызова прерывания BIOS}
*Scr *: ^ScreenType; * * * * * * * * * * * * {экран}

procedure GetBuffer;
{сохранение фона под спрайтом в буфере}
var
*i,j * *: word; * * *{переменные цикла}
begin
*for j := 0 to Ysize-1 do
* *for i := 0 to Xsize-1 do
* * *with Sprt do
* * * *Back^[j,i] := Scr^[j+y,i+x];
end;

procedure PutBuffer; * {восстановление фона}
var
*i,j * *: word; * * *{переменные цикла}
begin
*for j := 0 to Ysize-1 do
* *for i := 0 to Xsize-1 do
* * *with Sprt do
* * * *Scr^[j+y,i+x] := Back^[j,i];
end;

procedure PutSprite; * {вывод спрайта на экран}
var
*i,j * *: word; * * *{переменные цикла}
begin
*for j := 0 to Ysize-1 do
* *for i := 0 to Xsize-1 do
* * *with Sprt do
* * * *if Img^[j,i] <> TransparentColor then
* * * * *{ставим только точки,}
* * * * *{цвет которых отличается от "прозрачного"}
* * * * *Scr^[j+y,i+x] := Img^[j,i];
end;

procedure PutBackground; * * {создание фона на экране}
var
*i,j * *: word; * * *{переменные цикла}
begin
*for j := 0 to 199 do
* *for i := 0 to 319 do
* * *Scr^[j,i] := lo(i+j*8);
end;

procedure CreateSprite(s:string; x,y,dx,dy:integer);
{"создание" спрайта}
var
*f : file; * * *{файл с изображением спрайта}
begin
*getmem(Sprt.Img,sizeof(SpriteArrayType));
*{выделяем память для спрайта}
*getmem(Sprt.Back,sizeof(SpriteArrayType));
*{выделяем память для буфера}
*assign(f,s); * *{bmp-файл размерами Xsize на Ysize}
*reset(f,1); * * * * * *{открываем файл со спрайтом}
*seek(f,1078); * * * * * * * *{пропускаем заголовок}
*blockread(f,Sprt.Img^,Xsize*Ysize);
*{читаем изображение}
*close(f);
*Sprt.x := x;
*Sprt.y := y; * * { задаем начальные значения }
*Sprt.dx := dx; * *{ *координат и приращений * }
*Sprt.dy := dy;
end;

GrISeR
13.02.2005, 14:38
Все это понятно, мне интересно как все это выводится на экран, именно там скорее всего проблемы (при установке разрешения экрана). Еще где может быть ошибка - это загрузка файла изображения. Залей на фтп полный текст программы.

Vinitu
16.02.2005, 13:15
ftp://10.0.16.5/Upload/pub/Vinitu/
посмотри, мож че подскажешь *::) *

GrISeR
16.02.2005, 14:08
Проблема в загрузке файла, ты его наверно изменил. В программе стоит прозрачный цвет $FF - это белый. И файлик тоже должен быть с белым фоном. Я долго разбираться не стал. Изменил тебе файл и закинул его на ftp. Теперь хоть чего-то работает. Далее попробуй разобраться сам...

Vinitu
16.02.2005, 21:07
*:) Спасибо и на этом *;)

Destroyingrief
23.07.2005, 18:22
Подскажите, если кто знает, как узнать, какая прога открывает мой файл(Myfile.txt) и отловить это самое открытие(Записать в Listbox название этой проги ).

Vinitu
28.07.2005, 15:01
Кто нить знает как работать с клавой и мышкой без стандартных функций Pascal (Write/read),а на прямую через DOS или как нить еще,напишите здесь или если есть дайте какой-нить справочник ??? pleeeeeez

Heron77
28.07.2005, 23:18
Если ты имеешь в виду управление мышкой и клавиатурой из программ написанных под дос, то делается все это через прерывания БИОС - 16h - клавиатура, 33h - мышка. В принципе - там все просто. Ща закину на ftp/Upload/library/programming/ доки по прерываниям дос.

Scout
29.07.2005, 20:09
Если ты имеешь в виду управление мышкой и клавиатурой из программ написанных под дос, то делается все это через прерывания БИОС - 16h - клавиатура, 33h - мышка. В принципе - там все просто. Ща закину на ftp/Upload/library/programming/ доки по прерываниям дос.
дос нынче неактуален

Vinitu
01.08.2005, 14:43
Если ты имеешь в виду управление мышкой и клавиатурой из программ написанных под дос, то делается все это через прерывания БИОС - 16h - клавиатура, 33h - мышка. В принципе - там все просто. Ща закину на ftp/Upload/library/programming/ доки по прерываниям дос.
Благодарю за помощь и понимание именно это мне и нужно, только жаль ,что все на английском,если че не пойму, то надеюсь не откажете в поддержке. ;)


дос нынче неактуален
Это мне нужно для повышения своего уровня программирования,
Мне пока рано переходить на WinApi,