Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];

Вниз

Свой формат в буфер обмена   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1244665806
Юрий
2009-06-11 00:30
2009.08.09
С днем рождения ! 11 июня 2009 четверг


15-1244579405
Юрий
2009-06-10 00:30
2009.08.09
С днем рождения ! 10 июня 2009 среда


2-1244833635
al3xey
2009-06-12 23:07
2009.08.09
Форма из DLL в отдельном потоке


15-1244202663
KSergey
2009-06-05 15:51
2009.08.09
Параметры (прокси) для аккаутна system


2-1244722300
ronayt
2009-06-11 16:11
2009.08.09
ипользование DirectSS





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский