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

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

18.04.2012, 14:05. Показов 9213. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru