DELPHI の基本的な開発スキル
◇[DELPHI] Network Neighborhood からファイルをコピーする
シェラピを使用します。
copyfile(pchar('newfile.txt'),pchar('//コンピュータ名/方向/targer.txt'),false);
◇[DELPHI]はマウスドラッグ効果を生み出します
MouseMove イベント、DragOver イベント、EndDrag イベント (PANEL の LABEL など) を通じて実装されます。
varxpanel、ypanel、xlabel、ylabel:整数;
PANEL の MouseMove イベント:xpanel:=x;ypanel:=y;
PANEL の DragOver イベント:xpanel:=x;ypanel:=y;
LABEL の MouseMove イベント:xlabel:=x;ylabel:=y;
LABEL の EndDrag イベント: label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;
◇【DELPHI】WINDOWSディレクトリの取得
シェラピを使用します。
varwindir:配列[0..255]ofchar;
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]文字列リストの使い方
vartips:tstringlist;
ヒント:=tstringlist.create;
Tips.loadfromfile('ファイル名.txt');
edit1.text:=ヒント[0];
Tips.add('lastlineadditionstring');
Tips.insert(1,'insertstringatNO2line');
ヒント.savetofile('新しいファイル.txt');
ヒント.無料;
◇[DELPHI]簡単なクリップボード操作
リッチエディット1.selectall;
richedit1.クリップボードにコピー;
richedit1.カットクリップボード;
edit1.クリップボードから貼り付け;
◇【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】アセンブリの組み込みについて
AsmEnd;
EAX、ECX、および EDX は自由に変更できますが、ESI、EDI、ESP、EBP、および EBX は変更できません。
◇[DELPHI]型変換関数について
FloatToStr//浮動小数点を文字列に変換
FloatToStrF//フォーマットされた浮動小数点を文字列に変換
IntToHex//整数を 16 進数に変換
時間までの時間
DateToStr
DateTimeToStr
FmtStr//指定された形式で文字列を出力します
FormatDateTime('YYYY-MM-DD,hh-mm-ss',DATE);
◇[DELPHI]文字列プロシージャと関数
Insert(obj,target,pos);//文字列ターゲットが pos の位置に挿入されます。挿入結果がターゲットの最大長を超える場合、余分な文字は切り捨てられます。 Posが255以外の場合は動作エラーとなります。たとえば、st:='Brian' の場合、Insert('OK',st,2) は st を 'BrOKian' に変更します。
Delete(st,pos,Num);//st 文字列の pos (整数) 位置から始まる Num (整数) 文字の部分文字列を削除します。たとえば、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);//st 文字列の pos (整数) 位置から始まり、num (整数) 文字を含む部分文字列を返します。 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' を返します。
Length(st);//文字列式 st の長さを返します。たとえば、st:='Brian' の場合、Length(st) の戻り値は 5 になります。
Pos(obj, target);//ターゲット文字列 target 内で文字列 obj が最初に出現する位置を返します。target に一致する文字列がない場合、Pos 関数の戻り値は 0 です。たとえば、target:='BrianWilfred' の場合、Pos('Wil',target) の戻り値は 7 になり、Pos('hurbet',target) の戻り値は 0 になります。
◇[DELPHI]レジストリの取り扱いについて
レジストリを使用します。
varreg:レジストリ;
reg:=Tregistry.create;
reg.rootkey:='HKey_Current_User';
reg.openkey('コントロールパネル/デスクトップ',false);
reg.WriteString('タイトル壁紙','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)--$70億(123)
AZ:$41(65)--$5A(90)
0-9:$30(48)--$39(57)
◇【DELPHI】プログラムの母国語を事前に決定
DELPHI ソフトウェアの DOS プロンプト: ThisPROgramMustBeRunUnderWin32。
VC++ ソフトウェアの DOS プロンプト: ThisProgramCannotBeRunInDOSMode。
◇[DELPHI]クッキーの運用について
response.cookies("name").domain:='http://www.086net.com';
withresponse.cookies.adddo
始める
名前:='ユーザー名';
値:='ユーザー名';
終わり
◇ドキュメントメニューリンクに「DELPHI」を追加しました
シェルラピ、shlOBJ を使用します。
shAddToRecentDocs(shArd_path,pchar(filepath));//接続を追加
shAddToRecentDocs(shArd_path,nil);//クリア
◇【その他】バックアップインテリジェントABC入力方法辞書
ウィンドウ/システム/ユーザー.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=112then...//F1
ifmsg.message=113then...//F2
終わり;
◇[その他]共有フォルダーを非表示にする
共有効果: アクセス可能だが不可視 (リソース管理、ネットワーク ネイバーフッド)
共有に名前を付けます:direction$
://コンピュータ/方向/にアクセスしてください
◇【JavaScript】JavaScript Webページでよく使われるエフェクト
Web ページは 60 秒後に閉じるようにスケジュールされています
ウィンドウを閉じる
閉鎖
スケジュールされた URL 転送
動作中に TQuery を設定することもできます。詳細については、Delphi ヘルプを参照してください。
□◇[DELPHI] 画像上の特定の点のRGB値を取得します
プロシージャTForm1.Image1MouseDown(送信者:TObject;ボタン:TMouseButton;
Shift:TShiftState;X,Y:整数);
変数
赤、緑、青:バイト;
i:整数;
始める
i:=image1.Canvas.Pixels[x,y];
青:=GetBValue(i);
緑:=GetGValue(i):
赤:=GetRValue(i);
Label1.Caption:=inttostr(Red);
Label2.Caption:=inttostr(Green);
Label3.Caption:=inttostr(青);
終わり;
□◇[DELPHI]日付形式の分解と変換について
変動年、月、日:Word;now2:Tdatatime;
now2:=date();
decodedate(now2,年,月,日);
lable1.Text:=inttostr(年)+'年'+inttostr(月)+'月'+inttostr(日)+'日';
◇[DELPHI]現在のネットワーク接続モードを確認する方法
判定結果は、MODEM、LAN、またはプロキシサーバーモードです。
wininet を使用します。
FunctionConnectionKind:ブール値;
varflags:dword;
始める
結果:=InternetGetConnectedState(@flags,0);
if結果then
始める
if(flagsandINTERNET_CONNECTION_MODEM)=INTERNET_CONNECTION_MODEMthen
始める
showmessage('モデム');
終わり;
if(flagsandINTERNET_CONNECTION_LAN)=INTERNET_CONNECTION_LANthen
始める
showmessage('LAN');
終わり;
if(flagsandINTERNET_CONNECTION_PROXY)=INTERNET_CONNECTION_PROXYthen
始める
showmessage('プロキシ');
終わり;
if(flagsandINTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSYthen
始める
showmessage('モデムビジー');
終わり;
終わり;
終わり;
◇[DELPHI]文字列が有効な EMAIL アドレスかどうかを判断する方法
functionIsEMail(EMail:String):Boolean;
vars:文字列;ETpos:整数;
始める
ETpos:=pos('@',EMail);
ifETpos>1then
始める
s:=copy(EMail,ETpos+1,Length(EMail));
if(pos('.',s)>1)and(pos('.',s)<length(s))then
結果:=trueelse結果:=false;
終わり
それ以外
結果:=false;
終わり;
◇【DELPHI】システムがインターネットに接続されているかどうかを確認する
URL.DLL の InetIsOffline 関数を導入する必要があります。
関数の宣言は次のとおりです。
functionInetIsOffline(Flag:Integer):Boolean;stdcall;external'URL.DLL';
次に、この関数を呼び出して、システムがインターネットに接続されているかどうかを確認できます。
ifInetIsOffline(0)thenShowMessage('notconnected!')
elseShowMessage('接続されました!');
ローカル システムがインターネットに接続されていない場合、この関数は TRUE を返します。
添付:
IE または OFFICE97 を搭載したほとんどのシステムでは、この DLL を呼び出して使用できます。
Inetはオフラインです
BOOLInetIsOffline(
DWORDdwフラグ、
);
◇【DELPHI】WAVファイルの再生・一時停止が簡単にできる
mmシステムを使用します。
functionPlayWav(constFileName:string):ブール値;
始める
結果:=PlaySound(PChar(ファイル名),0,SND_ASYNC);
終わり;
プロシージャ停止Wav;
変数
バッファ:配列[0..2]ofchar;
始める
バッファ[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(nil,PChar(ソース),PChar(宛先),0,nil)=0;
を除外する
結果:=偽;
終わり;
終わり;
ifDownloadFile('http://www.borland.com/delphi6.zip,'c:/kylix.zip')then
ShowMessage('ダウンロード成功')
elseShowMessage('ダウンロード失敗')
◇[DELPHI]サーバーのIPアドレス解決
ウィンソックを使用する
functionIPAddrToName(IPAddr:String):String;
変数
SockAddrIn:TSockAddrIn;
HostEnt:PHosEnt;
WSAデータ:TWSAデータ;
始める
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;
変数
FDir、
名前、
実行名:PChar;
z:整数;
始める
ExeName:=StrAlloc(MAX_PATH);
FName:=StrAlloc(MAX_PATH);
FDir:=StrAlloc(MAX_PATH);
StrPCopy(FName,ExtractFileName(リンク名));
StrPCopy(FDir,ExtractFilePath(リンク名));
z:=FindExecutable(FName,FDir,ExeName);
ifz>32then
結果:=StrPas(ExeName)
それ以外
結果:='';
StrDispose(FDir);
StrDispose(FName);
StrDispose(ExeName);
終わり;
◇[DELPHI]TCombobox の自動補完を制御する
{TCombo ボックスの「Sorted」プロパティが true になる}
varlastKey:Word;//グローバル変数
//TCombobox の OnChange イベント
プロシージャTForm1.AutoCompleteChange(Sender:TObject);
変数
検索文字列:文字列;
retVal:整数;
始める
SearchStr:=(SenderasTCombobox).Text;
iflastKey<>VK_BACKthen//backspace:VK_BACKor$08
始める
retVal:=(SenderasTCombobox).Perform(CB_FINDSTRING,-1,LongInt(PChar(SearchStr)));
ifretVal>CB_Errthen
始める
(SenderasTCombobox).ItemIndex:=retVal;
(SenderasTCombobox).SelStart:=Length(SearchStr);
(SenderasTCombobox).SelLength:=
(長さ((SenderasTCombobox).Text)-長さ(SearchStr));
end;//retVal>CB_Err
end;//lastKey<>VK_BACK
lastKey:=0;//lastKey をリセット
終わり;
//TCombobox の OnKeyDown イベント
プロシージャTForm1.AutoCompleteKeyDown(Sender:TObject;varKey:Word;
Shift:TShiftState);
始める
lastKey:=キー;
終わり;
◇[DELPHI]ディレクトリをクリアする方法
functionEmptyDirectory(TheDirectory:String;Recursive:Boolean):
ブール値;
変数
検索記録:T検索記録;
解像度:整数;
始める
結果:=偽;
TheDirectory:=NormalDir(TheDirectory);
Res:=FindFirst(TheDirectory+'*.*',faAnyFile,SearchRec);
試す
whileRes=0do
始める
if(SearchRec.Name<>'.')and(SearchRec.Name<>'..')then
始める
if((SearchRec.AttrandfaDirectory)>0)andRecursive
それから始める
EmptyDirectory(ディレクトリ+検索記録名,True);
RemoveDirectory(PChar(TheDirectory+SearchRec.Name));
終わり
そうでなければ始める
DeleteFile(PChar(ディレクトリ+検索記録名))
終わり;
終わり;
Res:=FindNext(SearchRec);
終わり;
結果:=真;
ついに
FindClose(SearchRec.FindHandle);
終わり;
終わり;
◇[DELPHI]ディレクトリのサイズの計算方法
functionGetDirectorySize(constADirectory:string):整数;
変数
ディレクトリ:TSearchRec;
Ret:整数;
パス:文字列;
始める
結果:=0;
パス:=ExtractFilePath(ADirectory);
Ret:=Sysutils.FindFirst(ADirectory,faAnyFile,Dir);
ifRet<>NO_ERRORthenexit;
試す
whileret=NO_ERRORdo
始める
inc(結果,ディレクトリサイズ);
if(Dir.Attrin[faDirectory])and(Dir.Name[1]<>'.')then
Inc(Result,GetDirectorySize(Path+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 の下にある 2 つの文字列値をキー入力します。
これら 2 つの文字列値の名前は、DisplayName と UninstallString という固有のものです。
3. 文字列 DisplayName の値を、「アプリケーションの削除リスト」に表示される名前 (「AimingUninstallone」など) に割り当てます。
C:/WIN97/uninst.exe-f "C:/TestPro/aimTest.isu" など、実行された削除コマンドに文字列 UninstallString を割り当てます。
◇[DELPHI] WM_QUERYEND セッション シャットダウン メッセージを傍受しました
タイプ
TForm1=クラス(TForm)
プロシージャWMQueryEndSession(varMessage:TWWMQueryEndSession);メッセージWM_QUERYENDSESSION;
プロシージャCMEraseBkgnd(varMessage:TWMEraseBkgnd);MessageWM_ERASEBKGND;
プライベート
{非公開宣言}
公共
{公的宣言}
終わり;
プロシージャTForm1.WMQueryEndSession(varMessage:TWMQueryEndSession);
始める
Showmessage('コンピュータがシャットダウンしようとしています');
終わり;
◇[DELPHI]オンライン隣人を獲得する
proceduregetnethood();//NT がサーバーとして使用され、デバッグは WIN98 に渡されます。
変数
a,i:整数;
エラーコード:整数;
netres:ネットリソースの配列[0..1023];
列挙ハンドル:ハンドル;
列挙:dword;
バッファサイズ:dword;
s:文字列;
mylistitems:tlistitems;
mylistitem:tlistitem;
すべてのドメイン:文字列;
begin//listcomputerisalistviewtolistallcomputers;controlcenterisaform。
alldomain:=tstringlist.Create;
withnetres[0]ドビギン
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_ANY;
dwdisplaytype:=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage:=RESOURCEUSAGE_CONTAINER;
lplocalname:=nil;
lpremotename:=nil;
lpcomment:=nil;
lpprovider:=nil;
end;//すべてのドメインを取得します
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
iferrcode=NO_ERRORthenbegin
列挙:=1024;
バッファサイズ:=sizeof(netres);
errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
終わり;
a:=0;
mylistitems:=controlcenter.lstcomputer.Items;
mylistitems.クリア;
while(string(netres[a].lpprovider)<>'')and(errcode=NO_ERROR)do
始める
alldomain.Add(netres[a].lpremotename);
a:=a+1;
終わり;
wnetcloseenum(列挙ハンドル);
//すべてのコンピュータを取得します
mylistitems:=controlcenter.lstcomputer.Items;
mylistitems.クリア;
fori:=0toalldomain.Count-1do
始める
withnetres[0]ドビギン
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_ANY;
dwdisplaytype:=RESOURCEDISPLAYTYPE_SERVER;
dwusage:=RESOURCEUSAGE_CONTAINER;
lplocalname:=nil;
lpremotename:=pchar(alldomain[i]);
lpcomment:=nil;
lpprovider:=nil;
終わり;
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
iferrcode=NO_ERRORthen
始める
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
終わり;
a:=0;
while(string(netres[a].lpprovider)<>'')and(errcode=NO_ERROR)do
始める
mylistitem:=mylistitems.Add;
mylistitem.ImageIndex:=0;
mylistitem.Caption:=uppercase(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
a:=a+1;
終わり;
wnetcloseenum(列挙ハンドル);
終わり;
終わり;
◇【DELPHI】特定のコンピュータの共有ディレクトリを取得する
プロシージャgetsharefolder(constcomputername:string);
変数
エラーコード、a:整数;
netres:ネットリソースの配列[0..1023];
列挙ハンドル:ハンドル;
列挙型、バッファサイズ:dword;
s:文字列;
mylistitems:tlistitems;
mylistitem:tlistitem;
mystrings:tstringlist;
始める
withnetres[0]ドビギン
dwscope:=RESOURCE_GLOBALNET;
dwtype:=RESOURCETYPE_DISK;
dwdisplaytype:=RESOURCEDISPLAYTYPE_SHARE;
dwusage:=RESOURCEUSAGE_CONTAINER;
lplocalname:=nil;
lpremotename:=pchar(コンピュータ名);
lpcomment:=nil;
lpprovider:=nil;
end;//ルートノードを取得する
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
iferrcode=NO_ERRORthen
始める
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
終わり;
wnetcloseenum(列挙ハンドル);
a:=0;
mylistitems:=controlcenter.lstfile.Items;
mylistitems.クリア;
while(string(netres[a].lpprovider)<>'')and(errcode=NO_ERROR)do
始める
withmylistitemsdo
始める
mylistitem:=追加;
mylistitem.ImageIndex:=4;
mylistitem.Caption:=extractfilename(netres[a].lpremotename);
終わり;
a:=a+1;
終わり;
終わり;
◇【DELPHI】ハードディスクのシリアル番号を取得する
varSerialNum:pdword;a,b:dword;バッファ:配列[0..255]ofchar;
始める
ifGetVolumeInformation('c:/',Buffer,SizeOf(Buffer),SerialNum,a,b,nil,0)thenLabel1.Caption:=IntToStr(SerialNum^);
終わり;
◇[DELPHI]MEMOの自動ページめくり
ProcedureScrollMemo(メモ:TMemo;方向:char);
始める
ケースの方向
'd':開始
SendMessage(Memo.Handle,{MemoControl の HWND}
WM_VSCROLL、{Windowsメッセージ}
SB_PAGEDOWN,{ScrollCommand}
0){未使用}
終わり;
「う」:始めます
SendMessage(Memo.Handle,{MemoControl の HWND}
WM_VSCROLL、{Windowsメッセージ}
SB_PAGEUP,{スクロールコマンド}
0);{未使用}
終わり;
終わり;
終わり;
プロシージャTForm1.Button1Click(Sender:TObject);
始める
ScrollMemo(Memo1,'d');//ページをめくります
終わり;
プロシージャTForm1.Button1Click(Sender:TObject);
始める
ScrollMemo(Memo1,'u');//ページをめくります
終わり;
◇[DELPHI] DBGrid 内の次の位置まで Enter キーを押します (Tab キー)
プロシージャTForm1.DBGrid1KeyPress(Sender:TObject;varKey:Char);
始める
ifKey=#13then
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」-->「追加」-->「dpl ファイル名」を選択します。
4. 上記の [インストール] ボタンが無効な場合は、[コンパイル] ボタンを試してください。
5. runtimelib の場合は、オプションの下のパッケージの下の runtimepackes に追加します。
コンパイル中にファイルが見つからないというメッセージが表示される場合は、通常、コントロールのインストール ディレクトリが Delphi の Lib ディレクトリにないことが原因です。問題を解決するには、次の 2 つの方法があります。
1. 元のインストール ファイルを delphi の Lib ディレクトリにコピーします。
2. または、コントロールの元のコード パスを [ツール] --> [環境オプション] の Delphi Lib ディレクトリに追加します。
◇【DELPHI】ディレクトリを完全削除(deltree)
プロシージャTForm1.DeleteDirectory(strDir:String);
変数
sr:TSearchRec;
ファイル属性:整数;
strfilename:文字列;
strPth: 文字列;
始める
strpth:=Getcurrentdir();
FileAttrs:=faAnyFile;
ifFindFirst(strpth+'/'+strdir+'/*.*',FileAttrs,sr)=0then
始める
if(sr.AttrandFileAttrs)=sr.Attrthen
始める
strfilename:=sr.Name;
iffileexists(strpth+'/'+strdir+'/'+strfilename)then
deletefile(strpth+'/'+strdir+'/'+strfilename);
終わり;
whileFindNext(sr)=0do
始める
if(sr.AttrandFileAttrs)=sr.Attrthen
始める
strfilename:=sr.name;
iffileexists(strpth+'/'+strdir+'/'+strfilename)then
deletefile(strpth+'/'+strdir+'/'+strfilename);
終わり;
終わり;
FindClose(sr);
削除されたir(strpth+'/'+strdir);
終わり;
終わり;
◇[DELPHI] TMemoコントロールのカレントカーソルの行と列の情報をTpointに取得する
1.functionReadCursorPos(SourceMemo:TMemo):TPoint;
varPoint: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;
a,b:dword;
バッファ:配列[0..255]ofchar;
始める
結果:="";
ifGetVolumeInformation(PChar(diskchar+":/"),Buffer,SizeOf(Buffer),SerialNum,
a、b、nil、0)その後
結果:=IntToStr(SerialNum^);
終わり;
◇【INTERNET】共通CSS総合スキル
1. P:first-letter{font-size:300%;float:left}//最初の文字は通常のフォントの 3 倍大きくなります。
2.
3.スタイルシートを埋め込む
4.
Arial//SPAN は STYLE、CLASS、ID 属性を受け入れます
DIV には段落、タイトル、表、さらにはその他の部分を含めることができます
5.
6. //定義については 3 を参照してください。 7.物件一覧 フォント スタイル:font-style:[標準|斜体|斜体]; フォント サイズ: font-size: [xx-small|x-small|small|medium|large|x-large|xx-large|larger|smaller|<length>|<percent>] 文字装飾: text-decoration: [下線||上線||線通し||点滅] テキスト変換:[なし|大文字|大文字|小文字] 背景色:背景色:[<color>|transparent] 背景画像:背景画像:[ 行の高さ:[normal|<数値>|<長さ>|<パーセント>] 境界線のスタイル:[なし|点線|破線|実線|二重|溝|尾根|インセット|アウトセット] float:float:[左|右|なし] 8.長さの単位 相対単位: em (em、要素のフォントの高さ) ex(x-高さ、文字「x」の高さ) px (ピクセル、画面解像度に対する相対値) 絶対長さ: インチ (インチ、1 インチ = 2.54 センチメートル) cm (センチメートル、1 センチメートル = 10 ミリメートル) mm(メートル) pt (ポイント、1 ポイント = 1/72 インチ) pc (Pa、1 Pa = 12 ポイント) ◇【DELPHI】VCL作成の簡単な手順 1. コンポーネント属性メソッドイベントの作成 (ライブラリユニットの作成、新しい型として継承、プロパティ、メソッド、イベントの追加、コンポーネントの登録、パッケージファイルの作成) 2.メッセージ処理 3.例外処理 4. 見える部分 ◇[DELPHI] ダイナミックリンクライブラリのロード 静的読み込み: プロシージャ名;外部 'lib.dll'; 動的ロード:varhandle:Thandle; ハンドル:=loadlibrary('lib.dll'); ifhandle<>0then 始める {何かをする} フリーライブラリ(ハンドル); 終わり; ◇[DELPHI]ポインタ変数とアドレス varx,y:integer;p:^integer;//INTEGER 変数へのポインタ x:=10; //変数の代入 p:=@x;//変数xのアドレス y:=p^;//ポインタ P を Y に代入 @@procedure//プロセス変数のメモリアドレスを返します ◇[DELPHI] 文字が漢字かどうかを判定します ByteType('調子はどうですか、笑',1)=mbLeadByte//は最初の文字です ByteType('調子はどうですか、笑',2)=mbTrailByte//は 2 番目の文字です ByteType('お元気ですか、笑',5)=mbSingleByte//漢字ではありません ◇[DELPHI]メモ位置決め操作 memo1.lines.delete(0)//1行目を削除 memo1.selstart:=10//10バイトを検索 ◇【DELPHI】全角文字の内部コードを取得 functiongetit(s:string):整数; 始める 結果:= バイト(s[1])*$100+バイト(s[2]); 終わり; 使用: getit('calculation')//$bcc6 は 10 進数の 48326 ◇[DELPHI]ADDデータ格納プロシージャの呼び出し ストアド プロシージャは次のとおりです。 作成プロシージャ追加レコード( レコード1varchar(10) レコード2varchar(20) ) として 始める insertintotablename(field1,field2)values(:record1,:record2) 終わり ストアド プロシージャを実行します。 EXECUTEprocedureaddrecord("urrecord1","urrecord2") ◇[DELPHI] ファイルを BLOB フィールドに保存する functionblobcontenttostring(constfilename:string):string; 始める withtfilestream.create(ファイル名,fmopenread)do 試す setlength(結果,サイズ); read(ポインタ(結果)^,サイズ); ついに 無料; 終わり; 終わり; //フィールドを保存 始める if(opendialog1.execute)then 始める sFileName:=OpenDialog1.FileName; adotable1.edit; adotable1.fieldbyname('visio').asstring:=Blobcontenttostring(ファイル名); adotable1.post; 終わり; ◇[DELPHI]すべてのファイルをクリップボードにコピー shlobj、activex、clipbrd を使用します。 プロシージャTform1.copytoclipbrd(varFileName:string); 変数 FE:Tフォーマットなど; 中:TStg中; ドロップファイル: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; ドロップファイル:=GlobalLock(Medium.hGlobal); 試す ドロップファイル^.pfiles:=SizeOf(TDropFiles); ドロップファイル^.fwide:=False; longint(pFile):=longint(dropfiles)+SizeOf(TDropFiles); StrPCopy(pFile,FileName); Inc(pFile,Length(ファイル名)+1); pFile^:=#0; ついに GlobalUnlock(Medium.hGlobal); 終わり; Clipboard.SetAsHandle(CF_HDROP,Medium.hGlobal); 終わり; 終わり; ◇[DELPHI] 現在システムが実行しているプロセスを一覧表示する TLHelp32 を使用します。 プロシージャTForm1.Button1Click(Sender:TObject); varlppe:TProcessEntry32; 見つかった:ブール値; ハンド:Tハンドル; 始める Hand:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); 見つかりました:=Process32First(Hand,lppe); その間見つけました 始める ListBox1.Items.Add(StrPas(lppe.szExeFile)); 見つかりました:=Process32Next(Hand,lppe); 終わり; 終わり; ◇[DELPHI]BDETable1に基づいて新しいテーブルTable2を作成します Table2:=TTable.Create(nil); 試す テーブル 2.データベース名:=テーブル 1.データベース名; Table2.FieldDefs.Assign(Table1.FieldDefs); Table2.IndexDefs.Assign(Table1.IndexDefs); Table2.TableName:='新しいテーブル'; Table2.CreateTable(); ついに 表2.Free(); 終わり; ◇【DELPHI】DLLの作成と参照を理解する最良の方法 //最初に DLLsource(FILE-->NEW-->DLL) を見てください ライブラリプロジェクト1; 用途 SysUtils、クラス; functionaddit(f:integer;s:integer):integer;エクスポート; 始める makeasum:=f+s; 終わり; 輸出 追加します。 終わり。 //(INurPROJECT)を呼び出す 実装 functionaddit(f:integer;s:integer):integer;far;external'project1';//宣言 {呼び出しは addit(2,4) で、結果は 6 を示します} ◇【DELPHI】プログラム自体のサイズを動的に読み取る functionGesSelfSize:整数; 変数 f:バイトのファイル; 始める ファイルモード:=0; assignfile(f,application.exename); リセット(f); Result:=filesize(f);//単位はバイト ファイルを閉じる(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(Sender:TObject); varMyList:TStringList; 始める MyList:=TStringList.Create; 試す withMyListdo 始める Add('サーバー名=210.242.86.2'); Add('DATABASENAME=db'); Add('ユーザー名=sa'); 終わり; 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('PASSWORD='); Database1.Connected:=True; 終わり; 終わり; プロシージャTForm1.Button2Click(Sender:TObject); 始める Database1.Connected:=False; Session1.DeleteAlias('TESTSQL'); 終わり; ◇[DELPHI] BGMを再生する mmシステムを使用します //音楽を再生する 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]インターフェースとクラスのサンプルコード Type{インターフェイスとクラス宣言: 違いは、データ メンバー、非パブリック メソッド、およびパブリック メソッドがインターフェイスで PUBLIC キーワードを使用しないことです。} Isample=interface//Isample インターフェイスを定義 関数getstring:文字列; 終わり; Tsample=クラス(TInterfacedObject,Isample) 公共 関数getstring:文字列; 終わり; //関数定義 functionTsample.getstring:string; 始める 結果:='何がショー'; 終わり; //クラスオブジェクトを呼び出す varsample:Tsample; 始める サンプル:=Tsample.create; showmessage(sample.getstring+'classobject!'); サンプル.無料; 終わり; // インターフェースを呼び出す varsampleinterface:Iサンプル; サンプル:サンプル; 始める サンプル:=Tsample.create; sampleInterface:=sample;//インターフェイスの実装にはクラスを使用する必要があります {上の 2 行は、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); Application.CreateForm(TForm1,Form1); アプリケーション.実行; 終わり。 ◇[DELPHI]ALT+CTRL+DELで番組が見れない 実装後に宣言を追加します。 functionRegisterServiceProcess(dwProcessID,dwType:Integer):Integer;stdcall;external'KERNEL32.DLL'; RegisterServiceProcess(GetCurrentProcessID,1);//非表示 RegisterServiceProcess(GetCurrentProcessID,0);//表示 ◇[DELPHI]光学式ドライブのシンボルを検出 vardrive:char; cdromID:整数; 始める fordrive:='d'to'z'do 始める cdromID:=GetDriveType(pchar(ドライブ+':/')); ifcdromID=5thenshowmessage('CD-ROM ドライブは:'+ドライブ+'ディスク!'); 終わり; 終わり; ◇【DELPHI】サウンドカードを検出 ifauxGetNumDevs()<=0thenshowmessage('Nosoundcardfound!')elseshowmessage('Anysoundcardfound!'); ◇[DELPHI]文字列グリッドに描画する StringGrid.OnDrawCell イベント withStringGrid1.Canvasdo Draw(Rect.Left,Rect.Top,Image1.Picture.Graphic); ◇【SQLSERVER】SQLでLike文を書く別の方法 たとえば、ユーザー名に「c」が含まれるすべてのユーザーを検索するには、次を使用できます。 私のデータベースを使用してください select*fromtable1whereusernamelike'%c%" 上記の機能を完了する別の方法は次のとおりです。 私のデータベースを使用してください select*fromtable1wherecharindex('c',username)>0 理論的には、このメソッドの判定ステートメントは前のメソッドより 1 つ多く、つまり >0 になりますが、この判定プロセスが最も高速であると考えられます。操作の 80% 以上が単語の検索に費やされます。 文字列やその他の操作の場合、charindex 関数を使用することには大きな利点はありません。つまり、% や | などに like を直接使用できないということです。 見つかった文字は、次のようにこの charindex で直接使用できます。 私のデータベースを使用してください select*fromtable1wherecharindex('%',username)>0 次のように書くこともできます。 私のデータベースを使用してください select*fromtable1wherecharindex(char(37),username)>0 ASCII 文字は % です ◇[DELPHI]SQL は複数のデータベース/テーブルを表示します SELECTDISTINCTA.bianhao,a.xingming,b.gongziFROM"jianjie.dbf"a,"gongzi.DBF"b WHEREA.bianhao=b.bianhao ◇[DELPHI]RFC(RequestForComment)関連 IETF (Internet Engineering Task Force) は RFC 文書を保守しています http://www.ietf.cnri.reston.va.us RFC882: メッセージヘッダーの構造 RFC1521: MIME Part 1、送信メッセージ方式 RFC1945: マルチメディアドキュメント転送ドキュメント ◇[DELPHI]TNMUUPプロセッサの使用法 varinStream、outStream:TFileStream; 始める inStream:=TFileStream.create(infile.txt,fmOpenRead); outStream:=TFileStream(outfile.txt,fmCreate); NMUUE.Method:=uuCode;{UUEncode/Decode} //NMUUE.Method:=uuMIME;{MIME} NMUUE.InputStream:=InStream; NMUUE.OutputStream:=アウトストリーム; NMUUE.Encode;{エンコード処理} //NMUUE.Decode;{デコード処理} インストリーム.フリー; アウトストリーム.フリー; 終わり; ◇[DELPHI]TFileStream 操作 // ファイルストリームの現在位置からバッファ BUFFER に count バイトを読み取ります。 functionread(varbuffer;count:longint):longint;override; // バッファ BUFFER をファイル ストリームに読み込みます functionwrite(constbuffer;count:longint):longint;override; // ファイル ストリームの現在の読み取りおよび書き込みポインタを OFFSET に設定します Functionseek(offset:longint;origin:word):longint;override; 原点={soFromBeginning,soFromCurrent,soFromEnd} //別のファイル ストリームの現在位置から現在のファイル ストリームの現在位置に COUNT をコピーします functioncopyfrom(source:TStream;count:longint):longint; //指定されたファイルをファイルストリームに読み込みます varmyFStream:TFileStream; 始める myFStream:=TFileStream.create(OpenDialog1.filename,fmOpenRead); 終わり; 【JavaScript】IEプラグインShockwave&Quicktimeがインストールされているか確認する ------------------ 辛抱強く読んでいただきありがとうございます。あなたにはスキルがあります。投稿を続けていただければ幸いです。