не компилируется процедура procedure CopyStringToClipboard(s: string); var hg: THandle; P: PChar; begin hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, Length(S)+1); P:=GlobalLock(hg); StrPCopy(P, s); GlobalUnlock(hg); OpenClipboard(Application.Handle); SetClipboardData(CF_TEXT, hg); CloseClipboard; GlobalFree(hg); end; ругается на StrPCopy и Application.Handle не хочется подрубать много модулей так как важен размер. у кого какие предложения?
Что значит ругается? У нас компилятор тупой такой, только ругается а что именно не компилируется неизвестно? Или я желая помочь должен копировать код и компилировать у себя? Application объявлен в модуле forms.pas, подключая его ты сразу увеличишь размер exe потому что там глобальные переменные
[Error] proj.dpr(23): Undeclared identifier: 'StrPCopy' [Error] proj.dpr(25): Undeclared identifier: 'Application' [Error] proj.dpr(25): ')' expected but identifier 'Handle' found
Вы хотите юзать StrPCopy и Application неиспользуя Forms.pas и SysUtils.pas? ? тогда вы немножко заблуждаетесь. вот вам 2 способа решения проблемы. ВНИМАНИЕ!МОЖЕТ НЕ ПРОКАТИТЬ!! вместо Code: OpenClipboard(Application.Handle); попробуйте Code: [color=yellow][i]// буферу хэндл нужен дя того, что бы он знал, что за программа кидает в него свои данныеи этот параметр не оязателен[/i][/color] OpenClipboard(0); а strpcopy вот вам: (SysUtils.pas) Code: function StrLCopy(Dest: PChar; const Source: PChar; MaxLen: Cardinal): PChar; assembler; asm PUSH EDI PUSH ESI PUSH EBX MOV ESI,EAX MOV EDI,EDX MOV EBX,ECX XOR AL,AL TEST ECX,ECX JZ @@1 REPNE SCASB JNE @@1 INC ECX @@1: SUB EBX,ECX MOV EDI,ESI MOV ESI,EDX MOV EDX,EDI MOV ECX,EBX SHR ECX,2 REP MOVSD MOV ECX,EBX AND ECX,3 REP MOVSB STOSB MOV EAX,EDX POP EBX POP ESI POP EDI end; function StrPCopy(Dest: PChar; const Source: string): PChar; begin Result := StrLCopy(Dest, PChar(Source), Length(Source)); end; если нужно одну функцию, то объединяйте сами, думаю догадаетесь как это намутить
ПИПЕЦ, это ЛОЛ ты не знаешь что такое "Undeclared identifier"? даже если ты такой нуп что до сих пор не знаешь эту самую частую ошибку компиляции, то можно было спросить у гугловского переводчика, и узнать что это "Необъявленный идентификатор" далее, узнав что за ошибка можно догадаться что надо кое-какие модули добавить в uses. А какие именно можно быстро нагуглить или даже поискать в справке дельфи. StrPCopy - SysUtils Про Application я уже написал выше
GhostOnline, нестолько нуб, сколько недонес всей сути.. он мне в аське щас писал и сказал, что ему не хочеца подключать Forms.pas, так как размер имеет значение. Хотя может и он действительно недогадался
харош тут показывать какой ты охиренно умный, сам лолом давно был? просил ошибки - я показал. спасибо RedFern.89, помог очень
а на счет OpenClipboard можешь не париться. Это нужно для того, что бы буфер обмена знал о программе, которая помещат в него свои данные. Этот параметр не обязателен
Лол - не человек. Лол - отношение к происходящему. И таким как ты я никогда не был. Я сначала читал книги. Я просил ошибки - как у тебя рука поворачивается такое писать? Мне чтоли помошь твоя нужна и я прошу? Просто прежде чем создавать тред пробуй искать сам, а если все так сложно и не смог найти то хотя бы скопируй сообщения компилера сюда. Судя по треду он вообще не знал про Forms.Application..
2 GhostOnline, да он уже стока тредов наплодил, скоро тут за него программу напишут кстати эта фигня заразная, я теперь вместо манов и гугла лезу в аську и задаю вопрос SLESH-у (но не часто, так как сам бы убил за такое поведение). кошмар кошмар
Gar|k, я сам ему много вопросов в аське задаю. очень адекватный человек. Однако много беспокоить его не стоит, ибо у него свои дела тоже есть и время