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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2015, 01:04   #1
fog_
 
Регистрация: 22.02.2015
Сообщений: 3
По умолчанию Отображение файла в память

Подскажите такой момент, не могу разобраться как получить максимальный адрес указателя при отображении файла в память.
Так как Я его не знаю, то при превышении этого адреса выскакивает окно.
Изображения
Тип файла: jpg 1.jpg (43.2 Кб, 130 просмотров)
fog_ вне форума Ответить с цитированием
Старый 22.02.2015, 01:41   #2
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Что за максимальный адрес указателя?
ДралсяСошибками вне форума Ответить с цитированием
Старый 22.02.2015, 02:02   #3
fog_
 
Регистрация: 22.02.2015
Сообщений: 3
По умолчанию

Все разобрался, слепой однако. Через GetFileSize.
fog_ вне форума Ответить с цитированием
Старый 22.02.2015, 21:02   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Если файл загружается без фрагментации, то так:
Указатель на первый байт файла + (GetFileSize-1)
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 23.02.2015, 01:45   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Если файл загружается без фрагментации, то так:
Указатель на первый байт файла + (GetFileSize-1)
Ещё одно новое открытие. Оказывается отображение файла в память может быть фрагментировано. Срочно переделывайте свои программы с учётом этого!
northener вне форума Ответить с цитированием
Старый 09.09.2016, 14:37   #6
fog_
 
Регистрация: 22.02.2015
Сообщений: 3
По умолчанию

Прием с СОМ порта, два потока, первый принимает данные с СОМ, во втором идет их обработка. Обработка занимает "много времени" в итоге пропускаю данные с СОМ.
Как вариант выхода из положения предполагаю сделать:
первый поток - создает файл, отображает его в память FileCreate(), CreateFileMapping(), MapViewOfFile(), принимает данные с СОМ и складирует их последовательно в файл
второй поток - проверяет есть ли вновь поступившие данные в отображенный файл и обрабатывает их.
Вопрос как получить доступ к отображенному файлу со второго потока, не пойму принцип, так-же нужно делать FileCreate(), CreateFileMapping(), MapViewOfFile() для этого имени файла?
Или внутри одной программы без разницы, можно один раз отобразить файл, а обращаться к данным с двух разных потоков?

Последний раз редактировалось fog_; 09.09.2016 в 14:49.
fog_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение файла в оперативную память rostik123 Win Api 1 06.11.2012 04:59
Отображение файла в оперативную память rostik123 Общие вопросы C/C++ 3 29.10.2012 20:02
Считывание файла в динамическую память Mephistopheles Помощь студентам 2 20.05.2008 23:57