Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2010, 19:08   #11
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
таки, как насчет обходных маневров
Ну вообще у меня еще есть такая мыслишка:
Так как я делаю данную dll для архивации\разархивации bmp, то изучаю структуру bmp - там таки попалась LONG и из-за этого пришлось лезть на рожон. А вот то, где она попалась стало теплее:
Код:
LONG   biWidth; //Ширина - поставлю ограничение на 65535 пикселей
LONG   biHeight; //Высота - аналогично.
...
LONG   biXPelsPerMeter;// - а вот это я так и не выяснил, что сюда писать.
LONG   biYPelsPerMeter;// но на крайний случай,
//если это фиксированное число, то можно будет считать\записывать
// как два WORD подряд
Поэтому обходные пути здесь выдумать довольно таки легко. Главное здесь - сделать это как можно проще, чтобы не мучиться с побайтовым обращение в массиве.

P.S. Вот тема, в которой вся структура, буду рад, если покажете, что писать в гор\верт. разрешении:
http://programmersforum.ru/showthread.php?t=84703
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 14.02.2010, 19:28   #12
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

вся структура описана в windows.pas и занимает 40 байт...
Код:
BITMAPCOREHEADER = tagBITMAPCOREHEADER;

  PBitmapInfoHeader = ^TBitmapInfoHeader;
  {$EXTERNALSYM tagBITMAPINFOHEADER}
  tagBITMAPINFOHEADER = packed record
    biSize: DWORD;
    biWidth: Longint;
    biHeight: Longint;
    biPlanes: Word;
    biBitCount: Word;
    biCompression: DWORD;
    biSizeImage: DWORD;
    biXPelsPerMeter: Longint;
    biYPelsPerMeter: Longint;
    biClrUsed: DWORD;
    biClrImportant: DWORD;
  end;
  TBitmapInfoHeader = tagBITMAPINFOHEADER;
  {$EXTERNALSYM BITMAPINFOHEADER}
  BITMAPINFOHEADER = tagBITMAPINFOHEADER;
проверить легко...
Код:
var t: BITMAPINFOHEADER;
    //s: array[0..31] of byte;
    //k: word; // longint dword
begin
 caption:= floattostr(sizeof(t))
end;
Вован давеча говорил...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.02.2010, 19:38   #13
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Longint;
Уж не думал я, что в бмп допустимо описание отрицательных ширины и высоты...

Уж и на том спасибо.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 14.02.2010, 19:52   #14
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

OFFTOP >
понимаю программисты борланда за всем видимо не уследили.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.02.2010, 12:20   #15
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Блин. Сегодня уселся вбивать в паскаль структуры FILEHEADER INFOHEADER V4 и V5 и натнулся опять на те же грабли. Не смотря на то, что в паскале написано, что
,
мол я могу использовать эти типы, нифига. Паскаль материт меня по матушке за DWORD. А этот тип довольно часто встречается по всем структурам. Причем в некоторых случаях "разбить" его не получится. Что делать?

P.S. Вообще теоретически можно его в структурах описать как LongInt, который есть по умолчанию, но потом очень сильно мучаться при считывании и записи.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 15.02.2010 в 12:23.
Alex Cones вне форума Ответить с цитированием
Старый 15.02.2010, 12:38   #16
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

ось-це (см. скрин)... кроме того, есть еще варианты:
Код:
Type
type
 LongWord = array [0..31] of byte;
 dword = longint; // 32-bit // да, тип знаковый,но 32 и для 16-ти разрядных приложений это неизбежно

type Ttype = record
 p1,p2,p3,p4 : Word;
end;



function stype(x: dword):dword; export;
var p:Ttype;
     f: file;
begin
 //reset(f,1); - это если с записью
 //BlockRead(f, p, SizeOf(p));

 stype:= x
end;
Изображения
Тип файла: jpg Screen1.jpg (38.3 Кб, 138 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 15.02.2010 в 13:09.
raxp вне форума Ответить с цитированием
Старый 15.02.2010, 12:51   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Alex Cones, Вы абсолютно напрасно тратите время и силы, разрабатывая библиотеку под ОС, которой уже много лет не существует!! Dos is dead!
Хотите небольшой размер - пишите на Win API, или библиотечка KOL, или вообще на ассемблере (не шучу, если программа не имеет интерфейс и использует Win API, то писать её на том же MASM - нужны только знания и сноровка, по затратам времени выйдет практически то же самое, что Вы сейчас пытаетесь выдоить из стареньго дедушки TP )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.02.2010, 13:00   #18
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
то писать её на том же MASM - нужны только знания и сноровка
Я не настолько хорошо знаю асм, чтобы писать свой алгоритм архивирования на нем.
Цитата:
Хотите небольшой размер - пишите на Win API
Спасибо, 12 кб - слишком много, когда можно получить 1.5 за те же деньги.
Цитата:
Dos is dead!
Он вечен. И неограничен в возможностях нужно только правиль подойти к вопросу.

P.S. Буду использовать LongInt вместо DWORD, благо ;%:?** из мелкософт использовали их, только чтобы записать ДВУХЗНАЧНОЕ ЧИСЛО (в 12 случаях из 14). В остальных случаях постараюсь не вылезти за рамки 2-х миллиардов.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 16.02.2010, 00:12   #19
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
таки, как насчет обходных маневров... по входу ок, по выходу надоть подумать...
Код:
Library ACA128;

Type
 LongWord = array [0..31] of byte;



function stype(x: longword):integer; export;
begin
 stype:= x[0]
end;

exports stype index 1;


begin
end.
Может в Object все это дело?
psycho-coder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для 48 битного изображения Rezet Помощь студентам 1 15.05.2010 22:07
Запись числа типа инт в ячейку двумерного массива типа char AxenicX Помощь студентам 1 25.09.2009 00:35
Чтение 48 битного png Rezet Мультимедиа в Delphi 1 27.05.2009 11:12
Декодирование 48 битного RAW формата Rezet Мультимедиа в Delphi 5 23.01.2009 18:21
Цвет и анимация в консоли 32-битного приложения oleg kutkov Общие вопросы C/C++ 3 15.04.2008 14:03