Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FileMapping, Запись в спроецированный файл 
:(
    Опции темы
NetDigger
Дата 5.11.2004, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 25.4.2004

Репутация: нет
Всего: нет



Здравствуйте, уважаемые!
Вопрос в следующем: проецирую файл в память, его содержимое загоняю в Мемо (текстовый файл менее 40 кб). изменяю его в Мемо, а теперь как его вернуть взад на диск? FlushViewOfFile не работает вообще. Приведу части исходника. Как записать изменения, сделанные в Мемо обратно в текстовый файл на диске. Сделать это надо в Вин98 и в Вин2000. Кроме того, когда мэплю файл в Вин98 и вывожу его содержимое - в отображении появляется всякая хрень. В вин2000 такого нет. Заранее спасибо

var
Data: Pointer;
HFile, HMMF: THandle;
PathToFile : Pchar;

Begin

HFile := CreateFile ( Pchar (PathToFile),Generic_All, File_Share_Read
or File_Share_Write,
nil, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN,0 );
If ( HFile = 0 ) then Begin
ShowMessage('Error on stage CreateFile!');
EXIT;
End;

HMMF := CreateFileMapping (hFile,nil,PAGE_READWRITE,0,0,'Leha' );

If HMMF = 0 then Begin
ShowMessage(' Error on stage CreateFileMapping' );
exit;
End;
// Data := nil;

Data := MapViewOfFile (HMMF, FILE_MAP_ALL_ACCESS, 0, 0, 0 );
If Data = nil then
SHowMessage('ERROR!!!');

memo1.SetTextBuf(Data);
End;



PM MAIL   Вверх
<Spawn>
Дата 5.11.2004, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Видимо, что SetTextBuf фомрирует новый блок данных, являющийся копией текста, на который указывает передаваемый указатель. Так что делай так:

[code=] Memo1.GetTextBuf(Data, Memo1.GetTextLen);
FlushViewOfFile(Data, Memo1.GetTextLen);[/CODE]

Но учти что размер спроецированного файла, если мне не изменяет память, нельзя изменить, без перепроецированияsmile) Так что если тебе нужно сохранить текст большего размера, то учитывай это, по возможности, заранее, либо заново проделывай все операции.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
p0s0l
Дата 5.11.2004, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Перенесенно из раздела Delphi


--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.