Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 190
от 28.10.2003, 11:20

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 332
Отправлено ответов: 1165
Активность: 350.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

samum2000
Статус: Доверительный
Общий рейтинг: 127.94
[Подробней >>]
sir henry
Статус: Опытный
Общий рейтинг: 158.59
[Подробней >>]
Cybernetic Creature
Статус: Профессиональный
Общий рейтинг: 131.73
URL: В разработке
[Подробней >>]
 
Tancho
Статус: Опытный
Общий рейтинг: 150.98
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 121.57
[Подробней >>]
Boriss
Статус: Доверительный
Общий рейтинг: 134.18
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 328. Хаюшки, уважаемые эксперты. Мне для моего приложения на языке Паскаль нужен вывод 256-цветных BMP ка... (ответов: 2)
Вопрос № 329. Дорогие эксперты, Не могли бы вы пожалуйста выслать мне функции/процедуры для перевода string->inte... (ответов: 6)

Вопросов: 2, ответов: 8


 Вопрос № 328

Хаюшки, уважаемые эксперты.
Мне для моего приложения на языке Паскаль нужен вывод 256-цветных BMP картинок .
О существовании множества подобных программ в Сети я знаю, но все они используют ассемблерные
вставки. В ассемблере я новичок, поэтому разобратся, что там и как для меня не представляется возможным.
Мне нужен алгоритм, с помошью которого можно было-бы изменять положение картинки на экране, тоесть
передавать фактические параметры в поцедуру вывода картинки, и тем самым изменять положение картинки
на экране. И если у кого-то имеется ссылка на подробную русскую документацию по BMP, то киньте ссылочку.
Заранее благодарен.



Вопрос отправлен: 24.10.2003, 20:53
Отправитель: zaknafeyn

[Следующий вопрос >>] [Список вопросов]

Отвечает samum2000

Приветствую Вас, zaknafeyn!
1. Если вся проблема в том, чтобы переместить картинку, то тебе необходимо пользоваться следующими функциями:
ImageSize(X1,Y1,X2,Y2: integer):word; - определяет количество памяти, необходимое для сохранения картинки;
GetImage(X1,Y1,X2,Y2: integer; Var Buf); - помещает в переменную Buf копию прямоугольного изображения;
PutImage(X,Y: integer; Var buf; Mode: Word);-выводит в заданное место прямоугольную область, охраненную в переменной Buf. Для того, чтобы затереть изображение можно использовать эту же процедуру.

Ответ отправлен: 27.10.2003, 12:51
Отправитель: samum2000


Отвечает sir henry

Приветствую Вас, zaknafeyn!
Перво-наперво, у Вас должен быть 256-цветный графический режим. На обработку картинки он не влияет, зато наглядно видно на экране :)).
Как ни крути, а без ассемблера в этом деле не обойтись. Родные средства Паскаля позволяют только вставить и выставить обратно картинку. Этого конечно мало. Приходиться писать дополнительную библиотеку для работы с картинками. И ассемблер здесь - это существенное увеличение скорости работы.
Чем писать все это самому, лучше воспользоваться готовой библиотекой. Если охота вставлять оттуда куски кода в свою прогу, то нужно найти библиотеку с исходным кодом :)). На сайте pascal.sources.ru таких просто море.
А какой Паскаль Вы используете? Настоятельно рекомментдую FreePascal. Во-первых свободный (см. название), во-вторых для него написано множество дополнительных графических библиотек, тоже свободных и доступных в виде исходников. Ну и наконец, немаловажная деталь, он не такой глючный как TP/BP и в добавок 32-разрядный.

Ответ отправлен: 25.10.2003, 07:05
Отправитель: sir henry


 Вопрос № 329

Дорогие эксперты,
Не могли бы вы пожалуйста выслать мне функции/процедуры для перевода string->integer, integer->string, string->real, real->string, integer->real, real->integer.
Спасибо!



Вопрос отправлен: 25.10.2003, 12:20
Отправитель: dude (salihovar@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Cybernetic Creature

Приветствую Вас, dude!
function StrToInt(Value: String):Integer;
var tmp,err:Integer;
begin
val(value,tmp,err);
StrToInt:=Round(tmp);
end;
function IntToStr(Value: Integer):String;
var tmp:Integer;s1:String;
begin
tmp:=Value;
Str(tmp,s1);
StrToInt:=s1;
end;
function StrToFloat(Value: String):Real;
var tmp,err:Real;
begin
val(value,tmp,err);
StrToInt:=tmp;
end;
function FloatToStr(Value: Real):String;
var tmp:Real;s1:String;
begin
tmp:=Value;
Str(tmp,s1);
StrToInt:=s1;
end;
function IntToFloat(Value: Integer):Real;
begin
IntToFloat:=Value
end;
function FloatToInt(Value: Real):Integer;
begin
FloatToInt:=Round(Value)
end;

Ответ отправлен: 26.10.2003, 13:10
Отправитель: Cybernetic Creature


Отвечает Tancho

Доброе время суток, dude!
Не надо ничего выслать тебе!Просто читай книжечки о
Paskal'е и смотри Приложение!

Приложение:

Ответ отправлен: 27.10.2003, 13:23
Отправитель: Tancho


Отвечает samum2000

Здравствуйте, dude!
Целые и вещественные в строку:
STR(x [:width [:decimals]], ST) - преобразует Х в строку ST, как процедура Write/writeln
Строка в целое или вещественное:
VAL(ST,X,CODE) - преобразует строку ST в целое или вещественное (тип автоматически выбирает), если есть ошибка в представлении числа, то CODE будет содержать номер ошибочной позиции.
Для округления вещественных чисел существуют процедуры
Trunc(x)-усекает до longint;
Round(x)-округляет до longint;

Ответ отправлен: 27.10.2003, 12:52
Отправитель: samum2000


Отвечает sir henry

Приветствую Вас, dude!
String->integer, string->real:
Val(string, число, код_ошибки);
integer->string, real->string:
Str(число:длина_числа:десятичных_знаков, string);
real->integer:
Round(real):integer;
integer->real:
real:=integer;

Ответ отправлен: 27.10.2003, 04:50
Отправитель: sir henry


Отвечает _vt

Здравствуйте, dude!
А чем тебя не устраивают встроенные функции Паскаля Val и Str?Почитай описание и разберись...

*** E-Man - we are waiting for you ***


Ответ отправлен: 26.10.2003, 03:44
Отправитель: _vt


Отвечает Boriss

Добрый день, dude!
Такие процедуры/функции в находятся в модуле System, который обязательно подключается к программе:
Пусть определено: VAL R: Real; I: Integer; S: String; Code: Integer;
Тогда ниже примеры кода:
1)string->integer; string->real: Процедура VAL(S, R, Code); VAL(S, I, Code); если Code = 0, то преобразование прошло успешно, если не 0, то встретидись символы такие, что преобразовать нельзя
2)integer->string; real->string: Процедура STR(R, S); STR(R:12, S); STR(R:10:4, S); STR(I, S); STR(I:4, S);
3)integer->real - никаких проблем: i:=5; R:=i
6)real->integer - есть фунциии: пусть R:=4.2; тогда:
i:=Round(R); - округление;
i:=Trunc(R); - отсекает дробную часть;
R:=Int(R); - возвращает (определяет) целую часть аргумента;
R:=Frac(R); - возвращает дробную часть аргумента


Ответ отправлен: 27.10.2003, 12:22
Отправитель: Boriss



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (32)
C / C++ (27)
Perl (4)
Builder / Delphi (23)
Pascal (21)
Basic / VBA (6)
Java / JavaScript (6)
PHP (11)
Криптография (7)
WinAPI (12)
Пользователю
Windows 95/98/Me (47)
Windows NT/2000/XP (64)
"Железо" (37)
Поиск информации (28)
Администратору
Windows NT/2000/XP (38)
Linux / Unix (13)
Юристу
Гражданское право (9)
Семейное право (6)
Трудовое право (6)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное