![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
NetDigger |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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; |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Видимо, что SetTextBuf фомрирует новый блок данных, являющийся копией текста, на который указывает передаваемый указатель. Так что делай так:
[code=] Memo1.GetTextBuf(Data, Memo1.GetTextLen); FlushViewOfFile(Data, Memo1.GetTextLen);[/CODE] Но учти что размер спроецированного файла, если мне не изменяет память, нельзя изменить, без перепроецирования ![]() -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 14 Всего: 112 |
Перенесенно из раздела Delphi
-------------------- С уважением, г-н Посол. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |