Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/43: Рейтинг темы: голосов - 43, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 10.04.2010
Сообщений: 54

Создание файла в оперативной памяти. Показ данных из TMemoryStream.

18.04.2012, 14:05. Показов 9350. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Подскажите пожалуйста кто знает как можно создать файл сразу в оперативной памяти и затем запустить этот файл? т.е мне надо сделать так чтобы файл вообще не создавался на жестком диске. Или хотя бы подскажите в какую сторону мне надо смотреть?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.04.2012, 14:05
Ответы с готовыми решениями:

I-RAM: создание раздела в оперативной памяти
у меня 8 гб памяти - используется, как правило не более 50 % + при необходимости могу еще добавить. Вопрос такой - есть ли смысл на базе...

Создание временного диска в оперативной памяти
Здравствуйте, коллеги. Вопрос на засыпку: возможно ли средствами VB.NET создать временный диск / каталог в оперативке? Что...

Создание массива в оперативной памяти микроконтроллера
Ситуация следующая: Есть микроконтроллер STM32F103VE и к нему подключен дисплей 128 на 64 точек. Картинки для дисплея представляют из себя...

9
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
18.04.2012, 14:17
Думаю смотреть нужно в сторону MemoryStream
хоть я и не очень понял зачем оно тебе нужно
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
18.04.2012, 14:21
- смотреть придется по сторонам, а создать можете так__
C++
1
2
3
4
5
6
7
8
  HANDLE   hF;
  LPVOID   vF;
  TCHAR   szName[] = "myVirt";
  hF = CreateFileMapping((HANDLE)0xFFFFFFFF, 0,PAGE_READWRITE, 0, 40000, szName);
  vF = MapViewOfFile(hF,FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);
 { }
  UnmapViewOfFile(hF);
  CloseHandle(hF);
(40000 - размер) ключевым здесь является HANDLE 0xFFFFFFFF - это определяет, что файл на диске не создается; расшаренное имя - szName. Как буфер в памяти его использовать получается, а вот чтоб работать с ним в точности как с файлом... у меня, например, не вышло. Если у Вас получится - поделитесь!
2
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
18.04.2012, 15:11
Цитата Сообщение от AKAndrey Посмотреть сообщение
Подскажите пожалуйста кто знает как можно создать файл сразу в оперативной памяти и затем запустить этот файл?
Вот меня очень смущает совмещение этих двух моментов. Экзешник? Да вроде и так не батники пишем. Какой-нибудь mp3/txt/word? Сомневаюсь, что подобные приложения расчитаны на чтение файлов из дескрипторов. Тот же CreateFileMapping, насколько я помню, использует временное хранение в файле подкачки (функция позволяет создавать файлы до 256 метров, держать это дело в оперативе система по идее не должна). Поэтому в данном случае, только какие-нибудь шаулинские техники конвектирования дескриптора в строковый адрес... или в что-то связанное с пространством имен.

Сформулируйте пожалуйста задачу немного конкретней.
2
0 / 0 / 0
Регистрация: 10.04.2010
Сообщений: 54
18.04.2012, 15:52  [ТС]
Всем спасибо за помощь. Попробую что нибудь сделать.

Добавлено через 28 минут
Попробую объяснить по подробней. Есть dvd диск, на нём exeшник моей программы и файл name.txt с каким любо текстом. Мы вставляем этот диск, запускаем оттуда нашу прогу, и с помощью этой программы открываем name.txt. Вносим туду какие либо изменения с помощью программы, и передаём этот файл уже с внесёнными изменениями в опер. память для открытия с помощью блокнота. Доступа к жёстким дискам нет.
0
0 / 0 / 0
Регистрация: 10.04.2010
Сообщений: 54
18.04.2012, 23:15  [ТС]
Всем привет! Подскажите пожалуйста кто знает как показать данные размещённые через класс TMemoryStream? Сразу скажу что показывать данные нельзя в компонентах Memo,RichEdit и т. д. Например должно всё выглядеть так как через функцию shellexecute(handle,"open","путь",null,n ull,SW_SHOWNORMAL) например если в shellexecute в качестве пути указать "c:\\1.txt" то данные покажуться автоматически в блокноте. Вот и мне надо что-то на подобии shellexecute только у меня в качестве пути к файлу будет указатель на начало моих данных. Знаю что в MFC есть класс TMemFile, но я MFC не использую.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.04.2012, 23:42
Действительно ВРЕМЕННЫЙ файл
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
19.04.2012, 00:40
.. вот по поводу ссылки... - я такой тупой, невезучий или у продвинутых программеров, юзающих РАД ХЕ, таких проблем не возникает?... Я эту и аналогичные ссылки уже не раз просматривал (не скажу "изучал", - я скромный); но когда я нажимаю на клавишу в программе со следующим кодом__
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm2::Button3Click(TObject *Sender)
{
      /* HANDLE vf */
      vf = CreateFile("myVirt",
             GENERIC_WRITE |GENERIC_READ,
             FILE_SHARE_WRITE | FILE_SHARE_READ,
             NULL,
             CREATE_ALWAYS,
             FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE,
             NULL);
      if (vf==0) ShowMessage("ZERO!!");
}
- в папке с приложением тут же возникает вышеозначенный myVirt нулевой длины. После закрытия приложения он исчезает, но это едва ли можно согласовать с таким заявлением: " такой файл может быть создан, в него могут писаться данные, из него можно читать, а система при этом ни разу даже не коснётся диска." Кто-нибудь может мне сказать, что не так я сделал?
0
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
19.04.2012, 00:58
nick42, честно скажу, не пробовал, но имею подозрение, что если бы прога запускалась на двд, то он бы не создался
0
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
19.04.2012, 06:36
Как вариант, открыть этот name.txt, поместить в буфер обмена его содержимое, потом ShellExecute открыть блокнот, получить дескриптор окна блокнота, потом получить дескриптор "поля для ввода текста" в блокноте (там он не помню какой класс имеет), и SendMessage послать ему команду на вставку текста. Вот вроде и всё.

Если хотим сделать вид что мы не трогали буфер, то сначала сохраняем текущий текст в буфере, потом описанные мной операции и во концовке возвращаем исходный текст в буфер. Никто ничего и не успеет заметить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2012, 06:36
Помогаю со студенческими работами здесь

Idhttp куки их создание показ и скачивание файла
задача проста скачать файл например http://www.fayloobmennik.net/2583037 гетом беру страницу вырываю ссылку...

Насчет оперативной памяти и файла подкачки
На изображение видно, что есть строчка "Выделено (мб) 4364/6141", но оперативной памяти у меня 3гб, что и видно в строчке "Всего...

Сброс данных в оперативной памяти
все началось с того что я решил сменить термопасту После замены термопасты сбросился разгон оперативки и остальные настройки биоса(хотя...

Создание wim\VHD образ и запуск его с оперативной памяти
Здравствуйте. Ребята проверил весь ваш форум тема вроде не поднималась. Есть следующая задача. Уже готова флешка с "Microsoft...

Сбор и анализ данных в оперативной памяти
Подскажите пожалуйста, какие вы знаете способы сбора данных из оперативной памяти(абсолютно любые способы) и соответственно что нить об...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru