Базовые навыки разработки DELPHI
◇[DELPHI] Копирование файлов из сетевого окружения
используетшеллапи;
copyfile(pchar('newfile.txt'),pchar('//имя компьютера/направление/targer.txt'),false);
◇[DELPHI] создает эффект перетаскивания мышью.
Реализуется через событие MouseMove, событие DragOver, событие EndDrag, например LABEL на PANEL:
varxpanel, ypanel, xlabel, ylabel: целое число;
Событие MouseMove PANEL:xpanel:=x;ypanel:=y;
Событие PANEL DragOver:xpanel:=x;ypanel:=y;
Событие MouseMove LABEL:xlabel:=x;ylabel:=y;
Событие EndDrag LABEL: label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;
◇[DELPHI] Получить каталог WINDOWS
используетшеллапи;
varwindir: массив [0..255] символов;
getwindowsdirectory(windir,sizeof(windir));
Или прочитайте из реестра, расположение:
HKEY_LOCAL_MACHINE/Программное обеспечение/Microsoft/Windows/CurrentVersion
Ключ SystemRoot, полученный как: C:/WINDOWS.
◇[DELPHI] Рисование линий в FORM или других контейнерах.
varx,y:массив[0..50]целых чисел;
Canvas.pen.color:=clred;
Canvas.pen.style:=PSDash;
form1.canvas.moveto(trunc(x[i]),trunc(y[i]));
form1.canvas.lineto(trunc(x[j]),trunc(y[j]));
◇[DELPHI] использование списка строк
вартипс: tstringlist;
советы:=tstringlist.create;
подсказки.loadfromfile('filename.txt');
edit1.text:=советы[0];
Tips.add('lastlineadditionstring');
подсказки.insert(1,'insertstringatNO2line');
советы.savetofile('newfile.txt');
советы.бесплатно;
◇[DELPHI]Простое управление буфером обмена
richedit1.selectall;
richedit1.copytoclipboard;
richedit1.cuttoclipboard;
edit1.pastefromclipboard;
◇[DELPHI] Об операциях с файлами и каталогами
Chdir('c:/abcdir');Перейти в каталог
Mkdir('dirname');Создать каталог
Rmdir('имя_каталога');
GetCurrentDir;//Получаем имя текущего каталога без '/'
Getdir(0,s);//Получаем имя рабочего каталога s:='c:/abcdir';
Deletfile('abc.txt');//Удалить файл
Renamefile('old.txt','new.txt'); //переименование файла
ExtractFilename(filelistbox1.filename);//Получаем имя файла
ExtractFileExt(filelistbox1.filename);//Получаем суффикс файла
◇[DELPHI] Обработка атрибутов файла
attr:=filegetattr(filelistbox1.filename);
if(attrandfaReadonly)=faReadonlythen...//только для чтения
if(attrandfaSysfile)=faSysfilethen...//Система
if(attrandfaArchive)=faArchivethen...//Архив
if(attrandfaHidden)=faHiddenthen...//Скрыть
◇[DELPHI]Выполнение файлов вне программы
WINEXEC//Вызов исполняемого файла
Winexec('command.com/ccopy*.*c:/',SW_Normal);
Winexec('startabc.txt');
ShellExecute или ShellExecuteEx//Запуск программы ассоциации файлов
functionexecutefile(constfilename,params,defaultDir:string;showCmd:integer):THandle;
ExecuteFile('C:/abc/a.txt','x.abc','c:/abc/',0);
ExecuteFile('http://tingweb.yeah.net','','',0);
ExecuteFile('mailto:[email protected]','','',0);
◇[DELPHI] Получите имя процесса, запущенного в системе.
varhCurrentWindow:HWnd;szText:array[0..254]ofchar;
начинать
hCurrentWindow:=Getwindow(дескриптор,GW_HWndFrist);
whilehCurrentWindow<>0do
начинать
ifGetwindowtext(hcurrnetwindow,@sztext,255)>0thenlistbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
конец;
конец;
◇[DELPHI]О встраивании сборок
АсмЭнд;
EAX, ECX и EDX могут быть изменены по желанию; ESI, EDI, ESP, EBP и EBX не могут быть изменены.
◇[DELPHI]О функции преобразования типов
FloatToStr//Из числа с плавающей запятой в строку
FloatToStrF//Отформатировал плавающую точку в строку
IntToHex//Целое число в шестнадцатеричное
ТаймеТоСтр
Датетостр
Датевремятостр
FmtStr//Вывести строку в указанном формате
FormatDateTime('ГГГГ-ММ-ДД,чч-мм-сс',ДАТА);
◇[DELPHI]Строковые процедуры и функции
Insert(obj,target,pos);//Цель строки вставляется в позицию pos. Если результат вставки превышает максимальную длину цели, лишние символы будут обрезаны. Если Pos находится за пределами 255, произойдет ошибка операции. Например, st:='Brian', а затем Insert('OK',st,2) изменит st на 'BrOKian'.
Delete(st,pos,Num);//Удалить подстроку из Num (целых) символов, начиная с позиции pos (целого числа) в строке st. Например, st:='Brian', тогда Delete(st,3,2) станет Brn.
Str(value,st);//Преобразуем числовое значение (целое или вещественное) в строку и помещаем его в st. Например, когда a=2,5E4, str(a:10,st) сделает значение st равным «25000».
Val(st,var,code);//Преобразуем строковое выражение st в соответствующее целое или действительное значение и сохраняем его в var. St должен быть строкой, представляющей числовое значение и соответствовать правилам для числовых констант. В процессе преобразования, если ошибка не обнаружена, код переменной устанавливается в 0, в противном случае ему присваивается позиция первого символа ошибки. Например, st:=25.4E3, x — действительная переменная, тогда val(st,x,code) сделает значение X 25400, а значение кода — 0.
Copy(st.pos.num);//Возвращает подстроку, начинающуюся с позиции pos (целое число) в строке st и содержащую число (целое число) символов. Если pos больше длины строки st, будет возвращена пустая строка. Если pos находится за пределами 255, произойдет ошибка времени выполнения. Например, st:='Brian', а затем Copy(st,2,2) возвращает 'ri'.
Concat(st1,st2,st3...,stn);//Объединяем строки, представленные всеми независимыми переменными в указанном порядке, и возвращаем объединенное значение. Если длина результата равна 255, произойдет ошибка времени выполнения. Например, st1:='Brian',st2:='',st3:='Wilfred', тогда Concat(st1,st2,st3) возвращает 'BrianWilfred'.
Длина(st);//Возвращает длину строкового выражения st. Например, st:='Brian', тогда возвращаемое значение длины(st) равно 5.
Pos(obj, target);//Возвращает позицию, где строка obj впервые появляется в целевой строке target. Если у цели нет соответствующей строки, возвращаемое значение функции Pos равно 0. Например, target:='BrianWilfred', тогда возвращаемое значение Pos('Wil',target) равно 7, а возвращаемое значение Pos('hurbet',target) равно 0.
◇[DELPHI]Об работе с реестром
использует реестр;
варрег:Треестр;
reg:=Tregistry.create;
reg.rootkey:='HKey_Current_User';
reg.openkey('ControlPanel/Desktop',false);
reg.WriteString('TitleWallpaper','0');
reg.writeString('Обои',filelistbox1.filename);
reg.closereg;
рег.бесплатно;
◇[DELPHI]Об именах констант клавиатуры
VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE
/VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN
F1--F12: 70 долларов США (112) — 7 миллиардов долларов США (123)
Аризона: 41 доллар США (65) -- 5 долларов США (90 долларов США).
0–9: 30 долларов США (48) -- 39 долларов США (57)
◇[DELPHI]Предварительно определите родной язык программы
Подсказка DOS программного обеспечения DELPHI: ThisPROgramMustBeRunUnderWin32.
Запрос DOS для программного обеспечения VC++: ThisProgramCannotBeRunInDOSMode.
◇[DELPHI]Рабочие файлы cookie
response.cookies("имя").domain:='http://www.086net.com';
withresponse.cookies.adddo
начинать
имя:='имя пользователя';
значение: = 'имя пользователя';
конец
◇[DELPHI] добавлен в ссылку меню документа.
используетшеллапи, shlOBJ;
shAddToRecentDocs(shArd_path,pchar(filepath));//Добавляем соединение
shAddToRecentDocs(shArd_path,nil);//Очистить
◇[Разное] Резервное копирование интеллектуального словаря методов ввода ABC
окна/система/user.rem
окна/система/tmmr.rem
◇[DELPHI] Определение кнопок мыши
ifGetAsyncKeyState(VK_LButton)<>0then...//Левая кнопка
ifGetAsyncKeyState(VK_MButton)<>0then...//Средняя клавиша
ifGetAsyncKeyState(VK_RButton)<>0then...//Щелкните правой кнопкой мыши
◇[DELPHI]Установить максимальное отображение формы
событие onFormCreate
self.width:=screen.width;
self.height:=screen.height;
◇Кнопка [DELPHI] для приема сообщений
Обрабатывается в событии OnCreate: application.OnMessage:=MyOnMessage;
процедураTForm1.MyOnMessage(varMSG:TMSG;varHandle:Boolean);
начинать
ifmsg.message=256then...//ЛЮБАЯ клавиша
ifmsg.message=112то...//F1
ifmsg.message=113то...//F2
конец;
◇[Разное]Скрыть общие папки
Эффект совместного использования: доступен, но невидим (в управлении ресурсами, Network Neighborhood)
Назовите акцию: направление$
Посетите ://компьютер/направление/
◇[javaScript]Часто используемые эффекты на веб-страницах JavaScript.
Веб-страница будет закрыта через 60 секунд.
закрыть окно
закрытие
Передача URL по расписанию
Также можно настроить TQuery во время работы, подробности см. в справке Delphi.
□◇[DELPHI] Получить значение RGB определенной точки изображения.
процедураTForm1.Image1MouseDown(Отправитель:TObject;Button:TMouseButton;
Сдвиг: TShiftState; X, Y: целое число);
вар
красный, зеленый, синий: байт;
я: целое число;
начинать
я:=image1.Canvas.Pixels[x,y];
Синий: = GetBValue (я);
Зеленый:=GetGValue(i):
Красный: = GetRValue (я);
Label1.Caption:=inttostr(Red);
Label2.Caption:=inttostr(Зеленый);
Label3.Caption:=inttostr(Blue);
конец;
□◇[DELPHI]О разложении и преобразовании формата даты
переменный год, месяц, день: Word; now2: Tdatatime;
now2:=дата();
decodedate(сейчас2,год,месяц,день);
lable1.Text:=inttostr(год)+'год'+inttostr(месяц)+'месяц'+inttostr(день)+'день';
◇[DELPHI]Как определить текущий режим сетевого подключения
Результатом определения является режим МОДЕМа, локальной сети или прокси-сервера.
используетwininet;
FunctionConnectionKind:boolean;
варфлаги: dword;
начинать
Результат:=InternetGetConnectedState(@flags,0);
еслиРезультатто
начинать
если (флаги и INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM, то
начинать
showmessage('Модем');
конец;
если (флаги и INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN, то
начинать
showmessage('LAN');
конец;
если (флаги и INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXYто
начинать
showmessage('Прокси');
конец;
if(flagsandINTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSYтогда
начинать
showmessage('ModemBusy');
конец;
конец;
конец;
◇[DELPHI]Как определить, является ли строка действительным адресом EMAIL
functionIsEMail(EMail:String):Boolean;
vars:String;ETpos:Integer;
начинать
ETpos:=pos('@',EMail);
еслиETpos>1то
начинать
s:=copy(EMail,ETpos+1,Length(EMail));
если(pos('.',s)>1)и(pos('.',s)<длина(s))то
Результат:=trueelseResult:=false;
конец
еще
Результат: = ложь;
конец;
◇[DELPHI] Определить, подключена ли система к ИНТЕРНЕТУ.
Необходимо добавить функцию InetIsOffline в URL.DLL.
Объявление функции:
functionInetIsOffline(Flag:Integer):Boolean;stdcall;external'URL.DLL';
Затем вы можете вызвать функцию, чтобы определить, подключена ли система к ИНТЕРНЕТУ.
ifInetIsOffline(0)thenShowMessage('не подключено!')
elseShowMessage('подключено!');
Эта функция возвращает TRUE, если локальная система не подключена к ИНТЕРНЕТУ.
Прикрепил:
В большинстве систем с IE или OFFICE97 эта DLL доступна для вызова.
InetIsOffline
BOOLInetIsOffline(
DWORDdwФлаги,
);
◇[DELPHI]Легкое воспроизведение и приостановка файлов WAV.
использует ммсистему;
functionPlayWav(constFileName:string):Boolean;
начинать
Результат:=PlaySound(PChar(FileName),0,SND_ASYNC);
конец;
процедураStopWav;
вар
буфер: массив [0..2] символов;
начинать
буфер[0]:=#0;
PlaySound(Буфер,0,SND_PURGE);
конец;
◇[DELPHI] Получить информацию о BIOS машины
withMemo1.Linesdo
начинать
Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061))));
Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091))));
Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5))));
Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71))));
конец;
◇[DELPHI] Загрузка файлов из Интернета
используетUrlMon;
functionDownloadFile(Source,Dest:string):Boolean;
начинать
пытаться
Результат: = UrlDownloadToFile (ноль, PChar (источник), PChar (Dest), 0, ноль) = 0;
кроме
Результат: = Ложь;
конец;
конец;
еслиDownloadFile('http://www.borland.com/delphi6.zip,'c:/kylix.zip')то
ShowMessage('Загрузка успешна')
elseShowMessage('Загрузка не удалась')
◇[DELPHI]Определить IP-адрес сервера
используетwinsock
functionIPAddrToName(IPAddr:String):String;
вар
СокАддрИн: TSockAddrIn;
ХостEnt:PHostEnt;
ВСАДата: TWSAData;
начинать
WSAStartup($101,WSAData);
SockAddrIn.sin_addr.s_addr:=inet_addr(PChar(IPAddr));
HostEnt:=gethostbyaddr(@SockAddrIn.sin_addr.S_addr,4,AF_INET);
ifHostEnt<>nilthenresult:=StrPas(Hostent^.h_name)elseresult:='';
конец;
◇[DELPHI] Получите соединение с помощью ярлыка
functionExeFromLink(constlinkname:string):string;
вар
ФДир,
Имя,
ExeName: PChar;
г: целое число;
начинать
ExeName:=StrAlloc(MAX_PATH);
FName:=StrAlloc(MAX_PATH);
FDir:=StrAlloc(MAX_PATH);
StrPCopy(FName,ExtractFileName(имя ссылки));
StrPCopy(FDir,ExtractFilePath(имя ссылки));
z:=FindExecutable(FName,FDir,ExeName);
еслиz>32то
Результат:=StrPas(ExeName)
еще
Результат:='';
StrDispose(FDir);
StrDispose(FName);
StrDispose(ExeName);
конец;
◇[DELPHI]Управление автоматическим завершением TCombobox
{'Sorted'propertyoftheTComboboxtotrue}
varlastKey:Word;//глобальная переменная
//Событие OnChange TCombobox
процедураTForm1.AutoCompleteChange(Отправитель:TObject);
вар
SearchStr: строка;
retVal: целое число;
начинать
SearchStr:=(SenderasTCombobox).Text;
iflastKey<>VK_BACKthen//backspace:VK_BACKили$08
начинать
retVal:=(SenderasTCombobox).Perform(CB_FINDSTRING,-1,LongInt(PChar(SearchStr)));
ifretVal>CB_Errthen
начинать
(SenderasTCombobox).ItemIndex:=retVal;
(SenderasTCombobox).SelStart:=Длина(SearchStr);
(SenderasTCombobox).SelLength:=
(Длина((SenderasTCombobox).Text)-Длина(SearchStr));
конец;//retVal>CB_Err
конец;//lastKey<>VK_BACK
LastKey:=0;//resetlastKey
конец;
//Событие OnKeyDown TCombobox
процедураTForm1.AutoCompleteKeyDown(Отправитель:TObject;varKey:Word;
Сдвиг: TShiftState);
начинать
последнийКей:=Ключ;
конец;
◇[DELPHI]Как очистить каталог
functionEmptyDirectory(TheDirectory:String;Recursive:Boolean):
логическое значение;
вар
Поискрек: TSearchRec;
Разрешение: Целое число;
начинать
Результат: = Ложь;
TheDirectory:=NormalDir(TheDirectory);
Res:=FindFirst(TheDirectory+'*.*',faAnyFile,SearchRec);
пытаться
покаRes=0do
начинать
если(SearchRec.Name<>'.') и (SearchRec.Name<>'..')то
начинать
if((SearchRec.AttrandfaDirectory)>0) иRecursive
затем начать
EmptyDirectory(TheDirectory+SearchRec.Name,True);
RemoveDirectory(PChar(TheDirectory+SearchRec.Name));
конец
еще начало
УдалитьФайл(PChar(TheDirectory+SearchRec.Name))
конец;
конец;
Res:=FindNext(SearchRec);
конец;
Результат:=Истина;
окончательно
FindClose(SearchRec.FindHandle);
конец;
конец;
◇[DELPHI]Как рассчитать размер каталога
functionGetDirectorySize (constADirectory: строка): Integer;
вар
Каталог: TSearchRec;
Ret: целое число;
Путь: строка;
начинать
Результат:=0;
Путь:=ExtractFilePath(ADirectory);
Ret:=Sysutils.FindFirst(ADirectory,faAnyFile,Dir);
ifRet<>NO_ERRORто выход;
пытаться
whileret=NO_ERRORдо
начинать
вкл (Результат, Размер Дир.);
если(Dir.Attrin[faDirectory]) и (Dir.Name[1]<>'.'), то
Inc(Result,GetDirectorySize(Путь+Dir.Name+'/*.*'));
Ret:=Sysutils.FindNext(Dir);
конец;
окончательно
Sysutils.FindClose(Dir);
конец;
конец;
◇[DELPHI]Как добавить установщик в список удаления
Работайте с реестром следующим образом:
1. Создайте первичный ключ под ключом HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall с любым именем.
ПримерHKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUninstall
2. Введите два строковых значения в разделе HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/MyUnistall,
Имена этих двух строковых значений специфичны: DisplayName и UninstallString.
3. Присвойте значение строки DisplayName имени, отображаемому в «Списке удаления приложений», например «AimingUninstallone»;
Назначьте строку UninstallString выполняемой команде удаления, например C:/WIN97/uninst.exe-f "C:/TestPro/aimTest.isu"
◇[DELPHI]Перехвачено сообщение WM_QUERYEND о завершении сеанса
тип
TForm1 = класс (TForm)
процедураWMQueryEndSession(varMessage:TWWMQueryEndSession);messageWM_QUERYENDSESSION;
процедураCMERaseBkgnd(varMessage:TWMEraseBkgnd);MessageWM_ERASEBKGND;
частный
{Частные декларации}
общественный
{Публичные декларации}
конец;
процедураTForm1.WMQueryEndSession(varMessage:TWMQueryEndSession);
начинать
Showmessage('компьютер собирается выключить');
конец;
◇[DELPHI]Найдите соседей онлайн
процедураgetnethood();//в качестве сервера используется NT, а отладка прошла на WIN98.
вар
а, я: целое число;
код ошибки: целое число;
netres: массив [0..1023] сетевых ресурсов;
enumhandle: тандель;
перечисления: dword;
размер буфера: двойное слово;
с: строка;
мой список: tlistitems;
мойлиститем: тлиститем;
alldomain: tstrings;
начать//listcomputerisalistviewtolistallcomputers;controlcenterisaform.
alldomain:=tstringlist.Create;
withnetres[0]dobegin
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_ANY;
dwdisplaytype:=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage:=RESOURCEUSAGE_CONTAINER;
lplocalname: = ноль;
lpremotename: = ноль;
lpcomment:=ноль;
lpprovider: = ноль;
end;//Получаем все домены
код ошибки:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
iferrcode=NO_ERRORthenbegin
перечисления:=1024;
размер буфера:=sizeof(netres);
errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
конец;
а:=0;
mylistitems:=controlcenter.lstcomputer.Items;
mylistitems.Очистить;
while(string(netres[a].lpprovider)<>'') и (errcode=NO_ERROR)делаем
начинать
alldomain.Add(netres[a].lpremotename);
а:=а+1;
конец;
wnetcloseenum (дескриптор перечисления);
//Получаем все компьютеры
mylistitems:=controlcenter.lstcomputer.Items;
mylistitems.Очистить;
fori:=0toalldomain.Count-1do
начинать
withnetres[0]dobegin
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_ANY;
dwdisplaytype:=RESOURCEDISPLAYTYPE_SERVER;
dwusage:=RESOURCEUSAGE_CONTAINER;
lplocalname: = ноль;
lpremotename:=pchar(alldomain[i]);
lpcomment:=ноль;
lpprovider: = ноль;
конец;
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
iferrcode=NO_ERRORтогда
начинать
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
конец;
а:=0;
while(string(netres[a].lpprovider)<>'') и (errcode=NO_ERROR)делаем
начинать
mylistitem:=mylistitems.Add;
мойлиститем.ImageIndex:=0;
mylistitem.Caption:=uppercase(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
а:=а+1;
конец;
wnetcloseenum (дескриптор перечисления);
конец;
конец;
◇[DELPHI] Получить общий каталог на определенном компьютере.
процедураgetsharefolder (constcomputername: строка);
вар
код ошибки, а: целое число;
netres: массив [0..1023] сетевых ресурсов;
enumhandle: тандель;
перечисления, размер буфера: dword;
с: строка;
мой список: tlistitems;
мойлиститем: тлиститем;
моистринги: tstringlist;
начинать
withnetres[0]dobegin
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_DISK;
dwdisplaytype:=RESOURCEDISPLAYTYPE_SHARE;
dwusage:=RESOURCEUSAGE_CONTAINER;
lplocalname: = ноль;
lpremotename:=pchar(имя компьютера);
lpcomment:=ноль;
lpprovider: = ноль;
end;//Получаем корневой узел
код ошибки:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
iferrcode=NO_ERRORтогда
начинать
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
конец;
wnetcloseenum (дескриптор перечисления);
а:=0;
mylistitems:=controlcenter.lstfile.Items;
mylistitems.Очистить;
while(string(netres[a].lpprovider)<>'') и (errcode=NO_ERROR)делаем
начинать
сmylistitemsdo
начинать
мойлиститем:=добавить;
мойлиститем.ImageIndex:=4;
mylistitem.Caption:=extractfilename(netres[a].lpremotename);
конец;
а:=а+1;
конец;
конец;
◇[DELPHI] Получите серийный номер жесткого диска.
varSerialNum:pdword;a,b:dword;Buffer:array[0..255]ofchar;
начинать
ifGetVolumeInformation('c:/',Buffer,SizeOf(Buffer),SerialNum,a,b,nil,0)thenLabel1.Caption:=IntToStr(SerialNum^);
конец;
◇[DELPHI]Автоматическое перелистывание страниц MEMO
ПроцедураScrollMemo(Memo:TMemo;Направление:char);
начинать
кейснаправлениеоф
'д': начать
SendMessage(Memo.Handle, {HWNDoftheMemoControl}
WM_VSCROLL, {WindowsMessage}
SB_PAGEDOWN, {ScrollCommand}
0) {Не используется}
конец;
'у': начни
SendMessage(Memo.Handle, {HWNDoftheMemoControl}
WM_VSCROLL, {WindowsMessage}
SB_PAGEUP, {ScrollCommand}
0); {Не используется}
конец;
конец;
конец;
процедураTForm1.Button1Click(Отправитель:TObject);
начинать
ScrollMemo(Memo1,'d');//Перевернуть страницу вверх
конец;
процедураTForm1.Button1Click(Отправитель:TObject);
начинать
ScrollMemo(Memo1,'u');//Сворачиваем страницу вниз
конец;
◇[DELPHI]Нажмите Enter, чтобы перейти к следующей позиции в DBGrid (клавиша Tab)
процедураTForm1.DBGrid1KeyPress(Sender:TObject;varKey:Char);
начинать
еслиКлюч=#13то
ifDBGrid1.Columns.Grid.SelectedIndex<DBGrid1.Columns.Count-1then
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex+1].Field.FocusControl
еще
начинать
Таблица1.следующий;
DBGrid1.Columns[0].field.FocusControl;
конец;
конец;
◇[DELPHI]Как установить элемент управления
Способ установки:
1. Для одного элемента управления: Компонент --> установить компонент.. --> файл PAS или DCU --> установить.
2. Для пакетов управления с файлами *.dpk просто нажмите Файл --> открыть (выберите *.dpk в раскрывающемся списке) --> установить.
3. Для управляющих пакетов с файлами *.dpl: InstallPackages-->Add-->имя файла dpl.
4. Если вышеуказанная кнопка «Установить» недействительна, попробуйте кнопку «Компилировать».
5. Если это библиотека времени выполнения, добавьте ее в пакеты времени выполнения в разделе «Пакеты» в разделе «Параметры».
Если во время компиляции появляется сообщение о том, что файл не найден, обычно это связано с тем, что каталог установки элемента управления не находится в каталоге Lib Delphi. Есть два способа решения проблемы:
1. Скопируйте исходные установочные файлы в каталог Lib Delphi.
2. Или добавьте исходный путь кода элемента управления в каталог Delphi Lib в меню Tools-->EnvironmentOptions.
◇[DELPHI] Полностью удалить каталог (deltree)
процедураTForm1.DeleteDirectory(strDir:String);
вар
ср: TSearchRec;
FileAttrs: Целое число;
имя_строки:строка;
стрПс: строка;
начинать
strpth:=Getcurrentdir();
FileAttrs:=faAnyFile;
ifFindFirst(strpth+'/'+strdir+'/*.*',FileAttrs,sr)=0then
начинать
if(sr.AttrandFileAttrs)=sr.Attrthen
начинать
имя_строки:=sr.Name;
если файл существует (strpth+'/'+strdir+'/'+strfilename), то
deletefile(strpth+'/'+strdir+'/'+strfilename);
конец;
whileFindNext(sr)=0do
начинать
if(sr.AttrandFileAttrs)=sr.Attrthen
начинать
имя_строки:=sr.name;
если файл существует (strpth+'/'+strdir+'/'+strfilename), то
deletefile(strpth+'/'+strdir+'/'+strfilename);
конец;
конец;
НайтиЗакрыть(ср);
удаленный(strpth+'/'+strdir);
конец;
конец;
◇[DELPHI] Получение информации о строке и столбце текущего курсора элемента управления TMemo в Tpoint.
1.functionReadCursorPos(SourceMemo:TMemo):TPoint;
варПоинт: Тпоинт;
начинать
point.y:=SendMessage(SourceMemo.Handle,EM_LINEFROMCHAR,SourceMemo.SelStart,0);
point.x:=SourceMemo.SelStart-SendMessage(SourceMemo.Handle,EM_LINEINDEX,point.y,0);
Результат:=Точка;
конец;
2.LineLength:=SendMessage(memol.handle,EM-LINELENGTH,Cpos,0);//Длина строки
◇[DELPHI]Чтение серийного номера жесткого диска
functionGetDiskSerial(DiskChar:Char):строка;
вар
СерийныйНомер:PDWORD;
а, б: двойное слово;
Буфер: массив [0..255] символов;
начинать
результат:="";
ifGetVolumeInformation(PChar(diskchar+":/"),Buffer,SizeOf(Buffer),SerialNum,
а, б, ноль, 0), тогда
Результат:=IntToStr(SerialNum^);
конец;
◇[ИНТЕРНЕТ]Общие навыки CSS
1. P:first-letter{font-size:300%;float:left}//Первая буква будет в три раза больше обычного шрифта.
2.
3. Встроить таблицу стилей
4.
Arial//SPAN принимает атрибуты STYLE, CLASS и ID.
DIV может содержать абзацы, заголовки, таблицы и даже другие части.
5.
6. //См. определение в пункте 3. 7. Список недвижимости Стиль шрифта:стиль шрифта:[обычный|курсив|наклонный]; Размер шрифта: размер шрифта: [xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller|<длина>|<процент>] Оформление текста: text-decoration: [подчеркивание||надчеркивание||перечеркивание||мигание] Преобразование текста:[нет|написать с заглавной буквы|прописные|строчные] Цвет фона:background-color:[<цвет>|прозрачный] фоновое изображение:фоновое изображение:[ Высота строки:[normal|<число>|<длина>|<процент>] Стиль границы: [нет|пунктирная|пунктирная|сплошная|двойная|паз|гребень|вставка|начало] float:float:[лево|право|нет] 8. единица длины Относительные единицы: em (em, высота шрифта элемента) ex(x-height, высота буквы "x") px (пиксели относительно разрешения экрана) Абсолютная длина: дюйм (дюйм, 1 дюйм = 2,54 сантиметра) см (сантиметр, 1 сантиметр = 10 миллиметров) мм (метр) пт (пункт, 1 балл = 1/72 дюйма) шт (Па, 1 Па = 12 баллов) ◇[DELPHI] Краткие шаги по созданию VCL 1. Создание событий метода атрибутов компонента. (Создавать библиотечные модули, наследовать как новые типы, добавлять свойства, методы, события, регистрировать компоненты, создавать файлы пакетов) 2. Обработка сообщений 3. Обработка исключений 4. Видимые детали ◇[DELPHI] Загрузка динамической библиотеки Статическая загрузка: имя процедуры;external'lib.dll'; Динамическая загрузка:varhandle:Thandle; handle:=loadlibrary('lib.dll'); еслиобработка<>0тогда начинать {сделать что-нибудь} бесплатная библиотека(дескриптор); конец; ◇[DELPHI]Переменные и адреса указателей varx,y:integer;p:^integer;//Указатель на переменную INTEGER x:=10 //Присвоение переменной p:=@x;//Адрес переменной x y:=p^;//Назначаем указатель P на Y @@procedure//Возвращает адрес памяти переменной процесса ◇[DELPHI] определяет, является ли иероглиф китайским. ByteType('Как дела, ха-ха',1)=mbLeadByte//это первый символ ByteType('Как дела, хаха',2)=mbTrailByte//это второй символ ByteType('Как дела, ха-ха',5)=mbSingleByte//Не китайский иероглиф ◇[DELPHI]операция позиционирования заметки memo1.lines.delete(0)//Удалить строку 1 memo1.selstart:=10//Найти 10 байт ◇[DELPHI] Получить внутренний код двухбайтовых символов. functiongetit(s:string):целое число; начинать Результат:=байт(с[1])*$100+байт(с[2]); конец; Используйте: getit('calculation')//$bcc6 — десятичное число 48326. ◇[DELPHI]Вызов процедуры хранения данных ADD Хранимая процедура выглядит следующим образом: createprocedureaddrecord( запись1varchar(10) запись2varchar(20) ) как начинать вставить в имя_таблицы (поле1, поле2) значения (: запись1,: запись2) конец Выполните хранимую процедуру: EXECUTEprocedureaddrecord("urrecord1","urrecord2") ◇[DELPHI]Сохранение файлов в полях больших двоичных объектов functionblobcontenttostring (constfilename: string): строка; начинать withtfilestream.create(имя файла,fmopenread)do пытаться setlength (результат, размер); читать (Указатель (Результат) ^, размер); окончательно бесплатно; конец; конец; //сохраняем поле начинать если (opendialog1.execute), то начинать sFileName:=OpenDialog1.FileName; adotable1.edit; adotable1.fieldbyname('visio').asstring:=Blobcontenttostring(FileName); adotable1.post; конец; ◇[DELPHI]Скопируйте все файлы в буфер обмена. используетshlobj, activex, clipbrd; процедураTform1.copytoclipbrd (varFileName: строка); вар FE: TFormatEtc; Средний:TStgMedium; dropfiles:PDropFiles; pФайл: PChar; начинать FE.cfFormat:=CF_HDROP; FE.dwaspect:=DVASPECT_CONTENT; FE.tymed:=TYMED_HGLOBAL; Medium.hGlobal:=GlobalAlloc(GMEM_SHAREorGMEM_ZEROINIT,SizeOf(TDropFiles)+length(FileName)+1); ifMedium.hGlobal<>0thenbegin Medium.tymed:=TYMED_HGLOBAL; dropfiles:=GlobalLock(Medium.hGlobal); пытаться dropfiles^.pfiles:=SizeOf(TDropFiles); dropfiles^.fwide:=False; longint(pFile):=longint(dropfiles)+SizeOf(TDropFiles); StrPCopy(pFile,ИмяФайла); Inc(pFile,Length(FileName)+1); pФайл^:=#0; окончательно GlobalUnlock(Medium.hGlobal); конец; Clipboard.SetAsHandle(CF_HDROP,Medium.hGlobal); конец; конец; ◇[DELPHI] Список текущих процессов, запущенных в системе. используетTLHelp32; процедураTForm1.Button1Click(Отправитель:TObject); varlppe: TProcessEntry32; найдено: логическое значение; Рука:Ручка; начинать Рука: = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); найдено:=Process32First(Hand,lppe); пока найдено начинать ListBox1.Items.Add(StrPas(lppe.szExeFile)); найдено: = Process32Next (Рука, lppe); конец; конец; ◇[DELPHI]Создайте новую таблицу Table2 на основе BDETable1. Таблица2:=TTable.Create(ноль); пытаться Таблица2.ИмяБазы Данных:=Таблица1.ИмяБазы Данных; Таблица2.FieldDefs.Назначить(Таблица1.FieldDefs); Таблица2.IndexDefs.Assign(Таблица1.IndexDefs); Table2.TableName:='new_table'; Таблица2.СоздатьТаблицу(); окончательно Таблица2.Бесплатно(); конец; ◇[DELPHI] Лучший способ понять создание и использование DLL. //Сначала просмотрите DLLsource(FILE-->NEW-->DLL) библиотекапроект1; использует SysUtils, Классы; functionaddit(f:integer;s:integer):integer;export; начинать makeasum:=f+s; конец; экспорт добавить; конец. //Вызов (INurPROJECT) выполнение functionaddit(f:integer;s:integer):integer;far;external'project1';//Объявление {Вызов addit(2,4), результат показывает 6} ◇[DELPHI] Динамически считывать размер самой программы functionGesSelfSize: целое число; вар е: файлофбайт; начинать файловый режим: = 0; Assignfile (f, имя_приложения.exe); сброс (ф); Результат:=filesize(f);//Единица измерения — байты закрыть файл (ф); конец; ◇[DELPHI]Читать информацию о BIOS withMemo1.Linesdo начинать Add('MainBoardBiosName:'+^I+string(Pchar(Ptr($FE061)))); Add('MainBoardBiosCopyRight:'+^I+string(Pchar(Ptr($FE091)))); Add('MainBoardBiosDate:'+^I+string(Pchar(Ptr($FFFF5)))); Add('MainBoardBiosSerialNo:'+^I+string(Pchar(Ptr($FEC71)))); конец; ◇[DELPHI]Динамическое создание псевдонимов MSSQL процедураTForm1.Button1Click(Отправитель:TObject); varMyList: TStringList; начинать МойСписок:=TStringList.Create; пытаться сMyListdo начинать Добавить('ИМЯ СЕРВЕРА=210.242.86.2'); Добавить('ИМЯБАЗЫ ДАННЫХ=db'); Добавить('ИМЯ ПОЛЬЗОВАТЕЛЯ = са'); конец; Session1.AddAlias('TESTSQL','MSSQL',MyList);//ミMSSQL Session1.SaveConfigFile; окончательно МойСписок.Бесплатно; Session1.Active:=True; Database1.DatabaseName:='DB'; Database1.AliasName:='TESTSQL'; Database1.LoginPrompt:=False; Database1.Params.Add('USERNAME=sa'); Database1.Params.Add('ПАРОЛЬ='); База данных1.Соединено:=Истина; конец; конец; процедураTForm1.Button2Click(Отправитель:TObject); начинать База данных1.Соединено:=False; Session1.DeleteAlias('TESTSQL'); конец; ◇[DELPHI] Воспроизведение фоновой музыки использует ммсистему //Воспроизведение музыки MCISendString('OPENe:/1.MIDTYPESEQUENCERALIASNN','',0,0); MCISendString('PLAYNNFROM0','',0,0); MCISendString('CLOSEANIMATION','',0,0); конец; //Перестанем играть MCISendString('OPENe:/1.MIDTYPESEQUENCERALIASNN','',0,0); MCISendString('STOPNN','',0,0); MCISendString('CLOSEANIMATION','',0,0); ◇[DELPHI]Пример кода для интерфейсов и классов. Тип {Объявление интерфейса и класса: разница в том, что члены данных, любые закрытые и общедоступные методы не используют ключевое слово PUBLIC в интерфейсе} Isample=interface//Определить интерфейс Isample функцияgetstring:строка; конец; Tsample=класс(TInterfacedObject,Isample) общественный функцияgetstring:строка; конец; //определение функции functionTsample.getstring:строка; начинать result:='whatshowis'; конец; //Вызов объекта класса варсамплер: Цэмпл; начинать образец: = Tsample.create; showmessage(sample.getstring+'classobject!'); образец.бесплатно; конец; //Интерфейс вызова varsampleinterface:Isample; образец:Цэмпл; начинать образец: = Tsample.create; sampleInterface:=sample;//Реализация интерфейса должна использовать класс {Эти две строки также можно выразить как sampleInterface:=Tsample.create;} showmessage(sampleInterface.getstring+'Интерфейс!'); //sample.free;{В отличие от локальных классов, классы в интерфейсе выпускаются автоматически} sampleInterface:=nil;{объект интерфейса релиза} конец; ◇[DELPHI] Панель задач не похожа на подходящую программу вар Расширенный стиль: целое число; начинать Приложение.Инициализировать; ExtendedStyle:=GetWindowLong(Application.Handle,GWL_EXSTYLE); SetWindowLong(Application.Handle,GWL_EXSTYLE,ExtendedStyleORWS_EX_TOOLWINDOWANDNOTWS_EX_APPWINDOW); Приложение.CreateForm(TForm1,Form1); Приложение.Выполнить; конец. ◇[DELPHI]ALT+CTRL+DEL не видит программу Добавьте декларацию после реализации: functionRegisterServiceProcess(dwProcessID,dwType:Integer):Integer;stdcall;external'KERNEL32.DLL'; RegisterServiceProcess(GetCurrentProcessID,1);//Скрыть RegisterServiceProcess(GetCurrentProcessID,0);//Отображение ◇[DELPHI]Обнаружение символа оптического привода вардрайв: символ; cdromID: целое число; начинать fordrive:='d'to'z'do начинать cdromID:=GetDriveType(pchar(drive+':/')); ifcdromID=5thenshowmessage('Ваш дисковод для компакт-дисков:'+drive+'disk!'); конец; конец; ◇[DELPHI] обнаружить звуковую карту ifauxGetNumDevs()<=0thenshowmessage('Звуковая карта не найдена!') elseshowmessage('Любая звуковая карта найдена!'); ◇[DELPHI]Нарисуйте сетку строк. Событие StringGrid.OnDrawCell withStringGrid1.Canvasdo Draw(Rect.Left,Rect.Top,Image1.Picture.Graphic); ◇[SQLSERVER]Другой способ написания оператора Like в SQL. Например, чтобы найти всех пользователей, чье имя содержит букву «c», вы можете использовать использовать мою базу данных select*fromtable1whereusernamelike'%c%" Вот еще один способ выполнения вышеуказанной функции: использовать мою базу данных select*fromtable1wherecharindex('c',имя пользователя)>0 Теоретически в этом методе на один оператор суждения больше, чем в предыдущем методе, то есть >0, но этот процесс суждения самый быстрый, я считаю, что более 80% операций тратится на поиск слов. Для строковых и других операций использование функции charindex не составляет большого труда. Использование этого метода также имеет преимущества, то есть вы не можете напрямую использовать Like для %, | и т. д. Найденные символы можно использовать непосредственно в этом символе следующим образом: использовать мою базу данных select*fromtable1wherecharindex('%',имя пользователя)>0 Это также можно записать как: использовать мою базу данных select*fromtable1wherecharindex(char(37),имя пользователя)>0 Символ ASCII – %. ◇[DELPHI]SQL отображает несколько баз данных/таблиц SELECTDISTINCTA.bianhao,a.xingming,b.gongziFROM"jianjie.dbf"a,"gongzi.DBF"b ГДЕ.bianhao=b.bianhao ◇[DELPHI]RFC (RequestForComment), связанный IETF (Инженерная группа Интернета) поддерживает документы RFC http://www.ietf.cnri.reston.va.us. RFC882: Структура заголовка сообщения. RFC1521: MIME, часть 1, метод передачи сообщения RFC1945: Документация по передаче мультимедийных документов ◇[DELPHI]Использование процессора TNMUUP varinStream, outStream: TFileStream; начинать inStream:=TFileStream.create(infile.txt,fmOpenRead); outStream:=TFileStream(outfile.txt,fmCreate); NMUUE.Method:=uuCode;{UUEncode/Decode} //NMUUE.Метод:=uuMIME;{MIME} NMUUE.InputStream:=InStream; NMUUE.OutputStream:=OutStream; NMUUE.Encode;{обработка кодирования} //NMUUE.Decode;{обработка декодирования} inStream.free; outStream.free; конец; ◇[DELPHI]Операция TFileStream //Читаем количество байтов из текущей позиции файлового потока в буфер BUFFER functionread(varbuffer;count:longint):longint;override; // Читать буферный буфер в потоку файла FunctionWrite (Constbuffer; Count: Longint): Longint; переопределить; // Установите текущий указатель чтения и записи потока файла в компенсацию functionseek (Offset: longint; Origin: Word): Longint; переопределение; Origin = {sofrombeginning, sofromcurrent, sofromend} // Копировать количество из текущей позиции в другой потоке файлов в текущую позицию в текущем потоке файла functionCopyFrom (Источник: TSTREAM; COUNT: LONGINT): Longint; // Читать указанный файл в потоку файла Varmyfstream: tfileStream; начинать myfstream: = tfilestream.create (opendialog1.filename, fmopenread); конец; [JavaScript] Проверьте, установлен ли IE Plug-in Shockwave и QuickTime ------------------ Спасибо за терпение в чтении, у вас есть навык, надеюсь, вы продолжите публиковать его!