Текущий архив: 2009.08.09;
Скачать: CL | DM;
Вниз
Свой формат в буфер обмена Найти похожие ветки
← →
HRustBB (2009-06-12 12:04) [0]Имеется переменная типа
type
modul=record
name:string;
roomadd,installadd,menuadd:TStringList;
adminscripts,prevuscripts:array of TStringList;
path:string;
parametrs:TStringList;
end;
Как ее скопировать в буфер обмена, и обратно. Я пытался так:
копирую
var i:integer;
m:modul;
Data: THandle;
DataPtr: Pointer;
begin
i:=Form1.ListBox1.ItemIndex;
m:=prj.moduls[i];
Clipboard.Open;
Clipboard.Clear;
Data := GlobalAlloc(GMEM_MOVEABLE, SizeOf(m));
DataPtr := GlobalLock(Data);
Move(m, DataPtr^, SizeOf(m));
Clipboard.SetAsHandle(MyClpFormat,Data);
Clipboard.Close;
GlobalUnlock(Data);
GlobalFree(Data);
end;
вставляю
var i:integer;
m:modul;
Data: THandle;
DataPtr: Pointer;
Size: Integer;
begin
Data := ClipBoard.GetAsHandle(MyClpFormat);
if not(Data = 0) then begin
DataPtr := GlobalLock(Data);
if SizeOf(modul) > GlobalSize(Data) then
Size := GlobalSize(Data)
else
Size := SizeOf(modul);
Move(DataPtr^, m, Size);
GlobalUnlock(Data);
end;
end;
что здесь нетак подскажите пожалуйсто
← →
HRustBB (2009-06-12 12:11) [1]да забыл еще
MyClpFormat:=RegisterClipboardFormat("mod");
какже без этого
← →
Buffer (2009-06-12 13:13) [2]А мне, почему то, всегда казалось, что буферу абсолютно "до лампочки", что в него помещают, и каким образом потом этим пользуются.
← →
oldman © (2009-06-12 14:12) [3]
> что здесь нетак подскажите пожалуйсто
А что происходит при компиляции/запуске?
Ошибку-то опиши.
← →
MBo © (2009-06-12 17:22) [4]1. Зачем нужно копирование через буфер обмена?
2. SizeOf(m)) равно 32 байтам, и при копировании скопируется несколько указателей, но не данные. Вряд ли так задумывалось
← →
HRustBB (2009-06-12 17:23) [5]после того как благополучно получили\вставили переменную из буфера обмена, программа начинает то и дело выплевывать AccessVolvation при попытке прочитать\изменить значения других переменных типа modul в программе
← →
HRustBB (2009-06-12 17:26) [6]
> SizeOf(m)) равно 32 байтам, и при копировании скопируется
> несколько указателей, но не данные. Вряд ли так задумывалось
я вначале также подумал, но данные тоже копируются
← →
MBo © (2009-06-12 17:41) [7]Если ты это делаешь в одной программе, то указатели могут какое-то время
указывать на реальные данные. Но их копирования не происходит.
← →
HRustBB (2009-06-12 17:51) [8]а, нуда, какже быть?
← →
MBo © (2009-06-12 18:10) [9]Цель какая?
← →
HRustBB (2009-06-12 18:15) [10]благородная.
type
modul=record
name:string; //имя модуля
roomadd,installadd,menuadd:TStringList;// строчки php скрипта
adminscripts,prevuscripts:array of TStringList;// строчки php скрипта
path:string; // путь к модулю
parametrs:TStringList; // параметры модуля
end;
вобщем программка в целом должна из модулей в оконцове сделать управляемый сайт, нужно чтобы модули из одного проекта переставлялись в другой через буфер обмена
← →
MBo © (2009-06-12 18:20) [11]собрать все данные вместе с идентификационной информацией (например, подобно ini-файлу, или XML), потом передать одним блоком (строкой)
← →
MBo © (2009-06-12 18:22) [12]кроме того, есть и другие способы межпроцессного взаимодействия (через буфер - не слишком удачная идея). См Demos/IPC
Страницы: 1 вся ветка
Текущий архив: 2009.08.09;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.005 c