Здравствуйте, гость ( Вход | Регистрация )
| Командор Норрингтон |
Dec 5 2006, 20:48
Сообщение
#1
|
|
Madman ![]() ![]() ![]() ![]() ![]() Группа: форумчанин Сообщений: 477 Регистрация: 28-August 06 Из: Planet Earth Пользователь №: 4,052 |
Я на VB6, и Delphi...
А вы на чём? |
![]() ![]() |
| Warship |
Jun 24 2010, 12:42
Сообщение
#2
|
|
Гроза морей ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: бета-тестер Сообщений: 441 Регистрация: 29-April 07 Из: Прим. край г. Находка Пользователь №: 9,103 |
У меня глобальных задач не было Если интересно, что получилось: ДЛЛка: Заголовок: Код #ifndef COMPRESS_H #define COMPRESS_H #define EXPORT extern "C" __declspec (dllexport) EXPORT void* RLEEncode(const void* _data, const unsigned long _length); EXPORT void* RLEDecode(const void* _data, const unsigned long _length); void* BufferSet(void* _buff, unsigned char _byte, unsigned long _pos); #endif Реализация: Код #include <windows.h> #include "Compress.h" /// Точка входа в DLL. bool APIENTRY DllMain(HINSTANCE _instance, DWORD _reason, LPVOID _reserved) { return true; } /// Функция производит сжатие указанных данных на основе алгоритма кодирования повторов. EXPORT void* RLEEncode(const void* _data, const unsigned long _length) { unsigned long curDataPos; unsigned long bufPos = 0; unsigned char count = 1; unsigned char curByte; unsigned char nextByte; void* retData = NULL; for(curDataPos = 0; curDataPos < _length; curDataPos++) { curByte = ((unsigned char*) _data)[curDataPos]; nextByte = (curDataPos == _length - 1 ? ((unsigned char*) _data)[curDataPos - 1] : ((unsigned char*) _data)[curDataPos + 1]); // Если уже на границе массива, сравниваем с предыдущим if(curByte == nextByte && count < 255 && curDataPos < _length - 1) { count++; } else { retData = BufferSet(retData, count, bufPos++); // Длина повтора retData = BufferSet(retData, curByte, bufPos++); // Байт повтора count = 1; } } return retData; } /// Функция производит восстановление данных, сжатых на основе алгоритма кодирования повторов. EXPORT void* RLEDecode(const void* _data, const unsigned long _length) { unsigned long curDataPos; unsigned long bufPos = 0; unsigned char count; unsigned char curByte; void* retData = NULL; for(curDataPos = 0; curDataPos < _length; curDataPos += 2) { count = ((unsigned char*) _data)[curDataPos]; curByte = ((unsigned char*) _data)[curDataPos + 1]; while(count-- > 0) { retData = BufferSet(retData, curByte, bufPos++); } } return retData; } /// Функция записывает в буфер указанный байт на указанную позицию. void* BufferSet(void* _buff, unsigned char _byte, unsigned long _pos) { _buff = realloc(_buff, _pos + 2); //if(_buff != NULL) //{ ((unsigned char*) (_buff))[_pos] = _byte; ((unsigned char*) (_buff))[_pos + 1] = '\0'; //} return _buff; } Приложение: Реализация: Код #include <stdio.h> #include <windows.h> typedef void* (*RLEEncode)(const void* _data, const unsigned long _length); typedef void* (*RLEDecode)(const void* _data, const unsigned long _length); /// Точка входа в приложение. int main(int argc, char* argv[]) { char* sTextToEncode = "AAABBCC"; void* buffer; RLEEncode Encode; RLEDecode Decode; HINSTANCE compressDll = LoadLibrary("Compress.dll"); if(compressDll == NULL) { printf("ERROR: unable to load DLL!\n"); system("pause"); return 1; } Encode = (RLEEncode) GetProcAddress(compressDll, "RLEEncode"); Decode = (RLEDecode) GetProcAddress(compressDll, "RLEDecode"); if(Encode == NULL || Decode == NULL) { printf("ERROR: unable to find DLL functions!\n"); system("pause"); return 1; } buffer = Encode(sTextToEncode, 7); printf("Encoded data: %s\n", (char*) buffer); buffer = Decode(buffer, 6); printf("Decoded data: %s\n", (char*) buffer); free(buffer); delete[] sTextToEncode; FreeLibrary(compressDll); system("pause"); return 0; } Вот сейчас хочется переделать фукнции в ДЛЛке, чтобы они сразу писали в указанный буфер, а не возвращали указатель на новый, ибо память утекает при вызове buffer = Encode(buffer, ...); - указатель на прежний ведь теряется А как тут будет проще байт запихнуть-то? Можно, конечно, юзать STL класс vector (или stack Собственно, тут есть еще одна проблема: Как можно определить размер этого буффера? Сейчас у меня размер, который передается в функции кодирования, захардкоден, но этож не дело |
Командор Норрингтон Программирование Dec 5 2006, 20:48
Destynar Ни на чем :)
Все никак не выкрою время и деньгу ч... Dec 5 2006, 23:24
Avdenago По работе - web-progrmming - в основном ПХП.
Но с... Dec 6 2006, 11:14
navy VB, VBA, VB.NET (это забыл почти уже все) Активно ... Dec 6 2006, 12:04
Командор Норрингтон А мне VB.NET не нравиццо, там много наворотов не н... Dec 6 2006, 20:55
navy
можно не пользоваться не нужным, но VB.NET это пе... Dec 8 2006, 10:11
Командор Норрингтон У меня стоят оба но VB6 для меня приемлемей Dec 8 2006, 13:52
navy Мне все равно, я одинаково хорошо забыл оба уже :) Dec 8 2006, 13:55
Командор Норрингтон Не VB6 не забуду...
Ну хотя пока в школе учат, я т... Dec 9 2006, 18:06
Dreyk Привет,хотел задать вапрос по програмированию...не... Dec 21 2006, 03:47
Командор Норрингтон ЭЭЭ онлайн игры, как и другие щас наверно на Си
А ... Dec 21 2006, 13:13
Bogdan А кто знает, как в Паскале сделать вот такую задач... Dec 21 2006, 14:39
BooDoo А кто знает, как в Паскале сделать вот такую зада... Dec 21 2006, 15:45
__Морган__
А кто знает, как в Паскале сделать вот такую зада... Dec 21 2006, 16:03
Bogdan Спасибо BooDoo за разъяснения. Думаю, что теперь н... Dec 21 2006, 16:36
__Морган__
Спасибо BooDoo за разъяснения. Думаю, что теперь ... Dec 21 2006, 16:39
BooDoo Спасибо BooDoo за разъяснения. Думаю, что теперь ... Dec 21 2006, 16:49
Bogdan Буду очень признателен! Dec 21 2006, 16:42
Командор Норрингтон А я Паскаля не знаю - устаревший язык... из старых... Dec 22 2006, 16:32
__Морган__ Всё сделал сейчас на личку вышлю! ;) Dec 22 2006, 18:15
Bogdan Ребят, кажется Морган забыл файл к сообщению приле... Dec 23 2006, 22:51
Piroman
Судя по всему он и не собирался... Он жишь хотел ... Dec 24 2006, 03:05
Bogdan А бывает проще? Чет я такого о Паскале и не знаю.... Dec 24 2006, 18:09
Piroman А бывает проще?
Сматря ф каком смысле и о чём :P :... Dec 24 2006, 19:08
Bogdan неа. А нельзя это сделать на колхозном уровне? Dec 24 2006, 19:26
Piroman неа.
Вот этот должин кампилиццо:
Пропустил пару с... Dec 24 2006, 19:40
Bogdan Спасибо за помощь, Piroman! Колхоз в топку... Dec 24 2006, 19:51
Piroman Спасибо за помощь, Piroman! Колхоз в топку... Dec 24 2006, 19:57
Bogdan Обращаюсь "ешшо" :) :
А в Басике забабах... Dec 25 2006, 15:09
Piroman Обращаюсь "ешшо" :) :
А в Басике забабах... Dec 25 2006, 15:18
Bogdan Готов! С меня еще 1.000.000.000 копеек )) Dec 25 2006, 16:02
Piroman
Готов! С меня еще 1.000.000.000 копеек ))
Ла... Dec 25 2006, 20:23
Bogdan Piroman'ищще! А вот такой вариант работать... Dec 25 2006, 22:15
Piroman
Дык вапрос то какой? Зачем тебе количество?..
И ... Dec 26 2006, 00:07
Bogdan в 11. Только у нас информатика походу так, для гал... Dec 26 2006, 00:19
Piroman Блин, Пироман, чтоо бы я без тебя делал??!... Dec 26 2006, 00:32
Bogdan А откуда такие познания? На собственном энтузиазме... Dec 26 2006, 00:34
Piroman А откуда такие познания? На собственном энтузиазме... Dec 26 2006, 00:41
Karharov Мля, человеки, не у кого случаем не завалялся руси... Feb 2 2007, 14:56
Минтай
ЗЫ А че из них лучше:Borland C++ Bulder, Enterpri... Feb 2 2007, 15:18
Черный Корсар Потихоньку разбираю Паскаль 7.0 Sep 15 2007, 19:55
Dark Crusader C++, C#, Java. B) Немного Pascal помню. Oct 3 2007, 00:52
Черный Корсар Посоветуйте стоит самому браться за изучение Ассам... Oct 30 2007, 22:46
zorx007 Всем привет у меня образовался вопрос к программер... Dec 24 2007, 17:56
Командор Норрингтон Скорее тебе сюда
http://legend.seaward.ru/forum/in... Dec 24 2007, 19:52
Командор Норрингтон Хлопцы, рятуйте, сорри за второй пост, просто дума... Dec 26 2007, 19:20
BooDoo
1) Какое минимальное количество разрядов двоично... Dec 27 2007, 20:28
Командор Норрингтон Спс! А как насчёт третьего? Я второе сам сдела... Dec 28 2007, 17:43
ATILA Где можно скачать Паскаль или Дельфи, очень надо... Jan 12 2008, 22:50
TAHAT дельфи можно скачать с сайта производителя (www.bo... Jan 12 2008, 23:06
ALexusB Вопрос к студентам
Каким языкам сча в ВУЗе учат?
Н... Feb 11 2010, 00:38
Warship У нас сча дела на первом курсе обстоят вот так:
П... Feb 11 2010, 11:15
Dir
У нас сча дела на первом курсе обстоят вот так:
... Feb 11 2010, 11:37
RIZIY
Ещё в 1987-88 у нас в школе был бэйсик.... :) Feb 11 2010, 12:30
ALexusB Ага и слово "она" тоже характерно.
Я пок... Feb 11 2010, 12:58
Черный Корсар На первом курсе учили C++. Сейчас конкретной привя... Feb 11 2010, 17:10
Warship Нужна помощь по простому вопросу.
У меня есть дина... Jun 19 2010, 14:05
navy посмотри тут http://www.firststeps.ru/mfc/winapi/r... Jun 19 2010, 16:55
Warship Там я смотрел. :) Как и на википедии в статье о Dl... Jun 20 2010, 06:39
navy
естественно разные :) Т.к. длл смотрит относитель... Jun 21 2010, 11:57
Warship
С# нормальный язык, но для своей области. Хотя он... Jun 21 2010, 13:30
navy DLL
extern "C" __declspec(dllexport... Jun 22 2010, 06:58
Warship Нави, спасибо. :)
Благодаря твоему примеру разобр... Jun 22 2010, 09:07
navy
этот ворнинг показывает, что произошло неявное пр... Jun 22 2010, 11:58
Warship
Хотя, по идее, твой вариант должен работать как н... Jun 23 2010, 13:11
navy
естественно :) ты же его релокейтишь как
т.е. д... Jun 23 2010, 18:02
Warship
естественно :) ты же его релокейтишь как
Ну да,... Jun 24 2010, 00:17
navy В общем, ты лучше озвучивай конкретный пример, пот... Jun 24 2010, 11:59
navy Вообще использование стандартных классов это норма... Jun 25 2010, 06:53
Warship
Вообще использование стандартных классов это норм... Jun 25 2010, 08:54
navy Вообще, лучший способ изучить язык, это написать н... Jun 25 2010, 19:15
Диман Может посоветуйте книжку хорошую по C++. Желательн... Sep 19 2010, 15:38
Warship Можно попробовать курнуть книжку Бьерна Страуструп... Sep 20 2010, 04:11
ALexusB Книга "Совершенный код" С. Макконнелл -... Sep 20 2010, 11:22
Диман O'Reilly ни в ozon ни на торрентах не нашел, п... Sep 20 2010, 15:16
ALexusB Книжку "Совершенный код" никогда не быва... Sep 20 2010, 15:25
Диман
Книжку "Совершенный код" никогда не быв... Sep 20 2010, 20:20
navy Разницы на каком языке писать нет вообще. На языка... Sep 21 2010, 06:41
Диман
Разницы на каком языке писать нет вообще. На язык... Sep 21 2010, 11:12
Warship На деле кстати да, книга и не нужна вообще по конк... Sep 21 2010, 08:39
navy Ну для примера можешь взять уроки тут
http://progs... Sep 21 2010, 11:53
Диман
Ну для примера можешь взять уроки тут
http://prog... Sep 21 2010, 12:10
Warship Конструктуры вызываются при создании экземпляра кл... Sep 21 2010, 12:16
Диман
Для построения интерфейса (причем, кросс-платфор... Sep 21 2010, 13:10
Warship Да не в книгах счастье ;)
Есть море документации о... Sep 21 2010, 13:20
ugeen
Для построения интерфейса (причем, кросс-платформ... Sep 21 2010, 13:50
Warship Нувот :) Значит либа и вправду крута, если использ... Sep 21 2010, 14:01
ALexusB По изучению со сквозным примером - пиши мини-игру ... Sep 21 2010, 15:37
navy Qt библиотека хороша конечно.... но реально там то... Sep 21 2010, 15:42
Serginio Назрел вопрос специалистам 1С.
В пятницу пытался ... May 19 2013, 12:31
ALexusB Лучше серчить на спец форумах, где могут гулять ка... May 19 2013, 21:43
Serginio Лучше серчить на спец форумах, где могут гулять ка... May 19 2013, 21:57
ALexusB Та по реализации отчета могут быть проблемы - не в... May 19 2013, 22:16
Serginio Мужики, ещё вопрос возник по знатокам Экселя.
Зна... May 29 2013, 16:33
ALexusB функция ВПР
там натравливаешь ячейку ключ первой ... May 29 2013, 21:59
Serginio прям как в примере не получилось, получилось в две... May 30 2013, 10:00![]() ![]() |
| Текстовая версия | Сейчас: 3rd June 2026 - 22:38 |