Просмотр полной версии : Object Pascal ( Deplhi/Kylix )
Gauntlet
12.05.2004, 16:07
Вопросы - ответы по программированию в средах delphi/kylix и конкретно языку Object Pascal.
ТОЛЬКО вопросы и ответы. НИКАКОГО трепа.
программу на DELPHI для SMPP протакола можешь сделать
Gauntlet
24.11.2004, 22:20
программу на DELPHI для SMPP протакола можешь сделать
Могу. За деньги =) За подробностями в приват.
Разъясните пожалуста одну ситуацию : я скачал с нета текст проги для Pascal, по идеи при запуске по экрану должна бегать картинка, загруженная из предварительно созданного bmp файла в формате 256 цветов, но вместо картинки по экрану бегает черный квадрат. ??? ??? ???
Без текста программы как тут разберешься...
Если из домашних сетей, то залей на ftp, разберемся.
вот смотри сам:
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;
Все это понятно, мне интересно как все это выводится на экран, именно там скорее всего проблемы (при установке разрешения экрана). Еще где может быть ошибка - это загрузка файла изображения. Залей на фтп полный текст программы.
ftp://10.0.16.5/Upload/pub/Vinitu/
посмотри, мож че подскажешь *::) *
Проблема в загрузке файла, ты его наверно изменил. В программе стоит прозрачный цвет $FF - это белый. И файлик тоже должен быть с белым фоном. Я долго разбираться не стал. Изменил тебе файл и закинул его на ftp. Теперь хоть чего-то работает. Далее попробуй разобраться сам...
*:) Спасибо и на этом *;)
Destroyingrief
23.07.2005, 18:22
Подскажите, если кто знает, как узнать, какая прога открывает мой файл(Myfile.txt) и отловить это самое открытие(Записать в Listbox название этой проги ).
Кто нить знает как работать с клавой и мышкой без стандартных функций Pascal (Write/read),а на прямую через DOS или как нить еще,напишите здесь или если есть дайте какой-нить справочник ??? pleeeeeez
Если ты имеешь в виду управление мышкой и клавиатурой из программ написанных под дос, то делается все это через прерывания БИОС - 16h - клавиатура, 33h - мышка. В принципе - там все просто. Ща закину на ftp/Upload/library/programming/ доки по прерываниям дос.
Если ты имеешь в виду управление мышкой и клавиатурой из программ написанных под дос, то делается все это через прерывания БИОС - 16h - клавиатура, 33h - мышка. В принципе - там все просто. Ща закину на ftp/Upload/library/programming/ доки по прерываниям дос.
дос нынче неактуален
Если ты имеешь в виду управление мышкой и клавиатурой из программ написанных под дос, то делается все это через прерывания БИОС - 16h - клавиатура, 33h - мышка. В принципе - там все просто. Ща закину на ftp/Upload/library/programming/ доки по прерываниям дос.
Благодарю за помощь и понимание именно это мне и нужно, только жаль ,что все на английском,если че не пойму, то надеюсь не откажете в поддержке. ;)
дос нынче неактуален
Это мне нужно для повышения своего уровня программирования,
Мне пока рано переходить на WinApi,
Работает на vBulletin® версия 3.7.2. Copyright ©2000-2008, Jelsoft Enterprises Ltd. Перевод: zCarot