powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как ассоциировать THandle файла в памяти с именем для метода SaveToFile?
5 сообщений из 5, страница 1 из 1
Как ассоциировать THandle файла в памяти с именем для метода SaveToFile?
    #32331294
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно ассоциировать hmapobj:THandle;
созданный в результате
hmapobj:=CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE,0,sizeof(dword),pchar('temp.bmp'));
с именем файла "в текстовом виде", для того чтобы сделать
Memo1.Lines.SaveToFile('temp.bmp');
(То есть SaveToFile со стринговым параметром именно в память, а не на диск)
Если просто совпадают имена 'temp.bmp', то текст из Memo1 сохраняется в текущий дирректорий.
Спасибо.
...
Рейтинг: 0 / 0
Как ассоциировать THandle файла в памяти с именем для метода SaveToFile?
    #32331373
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это пример работы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure TForm1.Button1Click(Sender: TObject);
var fm    : THandle;
    Data  : PChar;
    Data2 : PChar;
    S     : String;
    nSize : Integer;
begin
  nSize := Length(Memo1.Lines.Text);
  fm := CreateFileMapping($FFFFFFFF,nil,PAGE_READWRITE, 0 ,nSize,pchar('temp.bmp'));
  Data := MapViewOfFile(fm,File_Map_Write, 0 , 0 ,nSize);

  CopyMemory(Data,PChar(Memo1.Lines.Text),nSize);

  Data2 := MapViewOfFile(fm,File_Map_Read, 0 , 0 ,nSize);

  SetLength(S,nSize);
  CopyMemory(@S[ 1 ],Data2,nSize);

  UnMapViewOfFile(Data2);
  UnMapViewOfFile(Data);
  CloseHandle(fm);
  Application.MessageBox(PChar(S),'', 0 );
end;
...
Рейтинг: 0 / 0
Как ассоциировать THandle файла в памяти с именем для метода SaveToFile?
    #32331573
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C текстом понятно.

Но я работаю с видеозахватом с функцией capFileSaveDIB

Делал так:
TempStream := TMemoryStream.Create;
capFileSaveDIB(cap_WndHandle,lparam(TempStream));
BitMap.LoadFromStream(TempStream);// LoadFromFile('tt.tmp');
TempStream.Free;

В BitMap не грузятся данные из TempStream.
Не ругается никто и ничто и не грузятся.

Но нужно сделать
capFileSaveDIB(cap_WndHandle,lparam(Pchar('temp.bmp'));
а потом этот 'temp.bmp' загрузить в
BitMap.LoadFromFile('temp.bmp') ;
Вот это все отрабатывает через диск, а надо бы через память.

Когда грузишь в lparam(TempStream) указатель на фрагмент памяти , хоть через поток , хоть через View от MapViewOfFile то В BitMap не грузятся данные.
...
Рейтинг: 0 / 0
Как ассоциировать THandle файла в памяти с именем для метода SaveToFile?
    #32331971
L0cat0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед LoadFromStream

выставь TempStream.Position := 0

и все ...

Удачи
...
Рейтинг: 0 / 0
Как ассоциировать THandle файла в памяти с именем для метода SaveToFile?
    #32332065
PVB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работает!
Помогите советом.
Ситуация:


capFileSaveDIB(cap_WndHandle,lparam(Pchar('TMP.BMP')));
Bmp1.LoadFromFile('TMP.BMP');

- так с канвы битмапа можно считать цвет пикселя (что и надо в результате),
то есть передача изображения от cap_WndHandle в BMP1
через файл происходит отлично:


Но через память (чтобы не юзать диск) не хочет:
BMP1 - остается пустой!!!????
Не работающий код:

TempStream := TMemoryStream.Create;
try
capFileSaveDIB(AviCap1.cap_WndHandle,lparam(TempStream));
TempStream. Position := 0;
Bmp1.LoadFromStream(TempStream);
finally
TempStream.Free
end;
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как ассоциировать THandle файла в памяти с именем для метода SaveToFile?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]