先人から受け継いだDELPHIの基本開発スキル
編集: テナント 出典: モノポリー フォーラム
◇[DELPHI] Network Neighborhood からファイルをコピーする
シェラピを使用します。
copyfile(pchar('newfile.txt'),pchar('//コンピュータ名/方向/targer.txt'),false);
◇[DELPHI]はマウスドラッグ効果を生み出します
MouseMove イベント、DragOver イベント、EndDrag イベント (PANEL の LABEL など) を通じて実装されます。
var xpanel、ypanel、xlabel、ylabel:integer;
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ディレクトリの取得
シェラピを使用します。
var Windir:char の配列 [0..255];
getwindowsdirectory(windir,sizeof(windir));
または、レジストリの場所から読み取ります。
HKEY_LOCAL_MACHINE/ソフトウェア/Microsoft/Windows/CurrentVersion
SystemRoot キー、C:/WINDOWS として取得
◇【DELPHI】FORMなどのコンテナに線を引く
var x,y:array [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]文字列リストの使い方
var ヒント:tstringlist;
ヒント:=tstringlist.create;
Tips.loadfromfile('ファイル名.txt');
edit1.text:=ヒント[0];
Tips.add('最終行追加文字列');
tips.insert(1,'NO 2 行に文字列を挿入');
ヒント.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 (attr および faReadonly)=faReadonly then ... //読み取り専用
if (attr および faSysfile)=faSysfile then ... //システム
if (attr および faArchive)=faArchive then ... //アーカイブ
if (attr および faHidden)=faHidden then ... //非表示
◇[DELPHI]プログラム外でファイルを実行する
WINEXEC//実行ファイルを呼び出す
winexec('command.com /c copy *.* c:/',SW_Normal);
winexec('abc.txt を開始');
ShellExecute または ShellExecuteEx//ファイル関連付けプログラムを開始します
functionexecutefile(const filename,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】システム上で動作しているプロセス名を取得する
var hCurrentWindow:HWnd;szText:array[0..254] の char;
始める
hCurrentWindow:=Getwindow(ハンドル,GW_HWndFrist);
while hCurrentWindow <> 0 は実行します
始める
if Getwindowtext(hcurrnetwindow,@sztext,255)>0 then listbox1.items.add(strpas(@sztext));
hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);
終わり;
終わり;
◇【DELPHI】アセンブリの組み込みについて
アズムエンド;
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) は 'Brian Wilfred' を返します。
Length(st);//文字列式 st の長さを返します。たとえば、st:='Brian' の場合、Length(st) の戻り値は 5 です。
Pos(obj,target);//ターゲット文字列 target 内で文字列 obj が最初に出現する位置を返します。target に一致する文字列がない場合、Pos 関数の戻り値は 0 です。たとえば、target:='Brian Wilfred' の場合、Pos('Wil',target) の戻り値は 7 になり、Pos('hurbet',target) の戻り値は 0 になります。
◇[DELPHI]レジストリの取り扱いについて
レジストリを使用します。
var reg:レジストリ;
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 プロンプト: このプログラムは Win32 で実行する必要があります。
VC++ ソフトウェアの DOS プロンプト: このプログラムは DOS モードでは実行できません。
◇[DELPHI]クッキーの運用について
response.cookies("name").domain:='http://www.086net.com';
response.cookies.add を使用して実行します
始める
名前:='ユーザー名';
値:='ユーザー名';
終わり
◇ドキュメントメニューリンクに「DELPHI」を追加しました
shellapi、shlOBJを使用します。
shAddToRecentDocs(shArd_path,pchar(filepath));//接続を追加
shAddToRecentDocs(shArd_path,nil);//クリア
◇【その他】バックアップインテリジェントABC入力方法辞書
ウィンドウ/システム/ユーザー.rem
ウィンドウ/システム/tmmr.rem
◇【DELPHI】マウスボタンを決定する
if GetAsyncKeyState(VK_LButton)<>0 then ... //左ボタン
if GetAsyncKeyState(VK_MButton)<>0 then ... //中キー
if GetAsyncKeyState(VK_RButton)<>0 then ... //右クリック
◇[DELPHI]フォームの最大表示を設定する
onFormCreateイベント
self.width:=screen.width;
self.height:=screen.height;
◇メッセージを受け付ける[DELPHI]ボタン
OnCreate イベントで処理されます: application.OnMessage:=MyOnMessage;
プロシージャ TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean);
始める
if msg.message=256 then ... //任意のキー
if msg.message=112 then ... //F1
if msg.message=113 then ... //F2
終わり;
◇[その他]共有フォルダーを非表示にする
共有効果: アクセス可能だが不可視 (リソース管理、ネットワーク ネイバーフッド)
共有に名前を付けます:direction$
アクセス: //コンピュータ/方向/
◇【JavaScript】JavaScript Webページでよく使われるエフェクト
Web ページは 60 秒後に閉じるようにスケジュールされています
<script language="java script"><!--
settimeout('window.close();',60000)
--></script>
ウィンドウを閉じる
<a href="/" onclick="Javascript:window.close();return false;">閉じる</a>
スケジュールされた URL 転送
<meta http-equiv="refresh" content="40;url=http://www.086net.com">
ホームページとして設定する
<a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="#">ホームページとして設定</a>
このサイトをブックマークする
<a href="javascript:window.external.addfavorite('http://086net.com','[無名pier]')">このサイトをお気に入りに追加</a>
チャンネルに参加する
<a href="javascript:window.external.addchannel('http://086net.com')">チャンネルを追加</a>
◇[DELPHI]テキスト編集関連
checkbox1.checked:=checkbox1.checked ではありません;
if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsBold] else richedit1.font.style:=richedit1.font.style-[fsBold]//bold
if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsItalic] else richedit1.font.style:=richedit1.font.style-[fsItalic]//italic
if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsUnderline] else richedit1.font.style:=richedit1.font.style-[fsUnderline]//underline
memo1.alignment:=taLeftJustify;//左
memo1.alignment:=taRightJustify;//right
memo1.alignment:=taCenter;//中央揃え
◇【DELPHI】文字色をランダム生成
ランダム化;//ランダムシード
memo1.font.color:=rgb(ランダム(255),ランダム(255),ランダム(255));
◇[DELPHI]DELPHI5 UPDATEアップグレードパッチシリアル番号
1000003185
90X25fx0
◇【DELPHI】ファイル名の不正文字フィルタリング
for i:=1 から length(s) まで
if s[i] in ['/','/',':','*','?','<','>','|']
◇[DELPHI]変換関数の定義と説明
datetimetofiledate (datetime:Tdatetime):longint; Tdatetime 形式の日付と時刻の値を DOS 形式の日付と時刻の値に変換します。
datetimetostr (datetime:Tdatetime):string; datetime パラメータに日付値が含まれていない場合、返される文字列の日付は 00/00/00 として表示されます。 datetime パラメータの場合、返される文字列は次のようになります。時刻部分は 00:00:00 AM として表示されます。
datetimetostring (var 結果文字列;
定数形式:文字列;
datetime:Tdatetime); 指定された形式文字列に従って時刻と日付の値を変換します。result は結果文字列、format は変換形式文字列、datetime は日付と時刻の値です。
datetostr (date:Tdatetime) は、shortdateformat グローバル変数で定義された書式文字列を使用して、日付パラメータを対応する文字列に変換します。
floatto10 進数 (var result:Tfloatrec;value:
拡張;精度、小数:
整数); 浮動小数点数を 10 進数表現に変換します
floattostr (value:extended):string 浮動小数点値を文字列形式に変換します。この変換では通常の数値形式が使用され、変換される有効桁数は 15 です。
floattotext (バッファ:pchar;値:拡張;
形式:Tfloatformat;精度、
数値:整数):整数; 指定された形式、精度、および 10 進数を使用して、浮動小数点値を 10 進数表現に変換します。変換結果は、バッファーに保管されている文字数です。バッファは 0 結果文字列バッファではありません。
floattotextfmt (バッファ:pchar;値:拡張;
format:pchar):integer 指定された形式を使用して、浮動小数点値の値を 10 進数表現に変換します。変換結果は、バッファーに格納されている文字数です。
inttohex (値:倍長整数;数字:整数):
string; 指定された数値を 16 進数の文字列に変換します。パラメータ数値は、変換結果文字列に含まれる桁数を示します。
inttostr (value:longint):string 整数を 10 進数の文字列に変換します
strtodate (const S:string):Tdatetime 文字列を日付値に変換します。S には有効な形式の日付文字列が含まれている必要があります。
strtodatetime (const S:string):Tdatetime 文字列 S を日付時刻形式に変換します。S は MM/DD/YY HH:MM:SS[AM|PM] 形式でなければなりません。日付と時刻の区切り文字はシステム期間と同じです。時定数の設定関連。 AM または PM の情報が指定されていない場合は、24 時間制が使用されます。
strtofloat (const S:string):extended; 指定された文字列を浮動小数点数に変換します。文字列の形式は次のとおりです。
[+|-]nnn…[.]nnn…[<+|-><E|e><+|->nnnn]
strtoint (const S:string):longint 数値文字列を整数に変換します。文字列は 10 進数または 16 進数の形式にすることができます。文字列が有効な数値文字列でない場合、システムは ECONVERTERROR 例外を生成します。
strtointdef (const S:string;デフォルト:
longint):longint; 文字列 S を数値に変換します。 S を数値に変換できない場合、strtointdef 関数はパラメーターのデフォルトの値を返します。
strtotime (const S:string):Tdatetime 文字列 S を TDATETIME 値に変換します。S の形式は、システムの時刻関連のグローバル変数に関連します。
timetostr (time:Tdatetime):string; パラメータ TIME を文字列に変換します。変換結果の文字列の形式は、システムの時間関連の定数の設定に関連します。
◇ALT+CTRL+DELで[DELPHI]プログラムが表示されない
実装後に宣言を追加します。
関数 RegisterServiceProcess(dwProcessID, dwType: Integer): 外部 'KERNEL32.DLL';
RegisterServiceProcess(GetCurrentProcessID, 1);//非表示
RegisterServiceProcess(GetCurrentProcessID, 0);//表示
ALT+DEL+CTRLで非表示
◇[DELPHI]プログラムがタスクバーに表示されない
窓を使用する
変数
ExtendedStyle : 整数;
始める
アプリケーションの初期化;
//=============================================== ==============
ExtendedStyle := GetWindowLong (Application.Handle、GWL_EXSTYLE);
SetWindowLong(Application.Handle、GWL_EXSTYLE、ExtendedStyle または WS_EX_TOOLWINDOW
WS_EX_APPWINDOW ではありません);
//=============================================== ===============
Application.CreateForm(TForm1, Form1);
アプリケーション.実行;
終わり。
◇[DELPHI]ダイヤルアップ ネットワークがオンかオフかを確認する方法
GetSystemMetrics(SM_NETWORK) AND $01 = $01 の場合
showmessage('オンライン!')
else showmessage('オンラインではありません!');
◇[DELPHI]IPをドメイン名に変換
関数 GetDomainName(Ip:string):string;
変数
pH:PH
データ:twsadata;
ii:dWord;
始める
WSAStartup($101, データ);
ii:=inet_addr(pchar(ip));
pH:=gethostbyaddr(@ii,sizeof(ii),PF_INET);
if (ph<>nil) then
結果:=pH.h_name
それ以外
結果:='';
WSACクリーンアップ;
終わり;
◇【DELPHI】「右クリックメニュー」の対処方法
変数
reg: TRegistry;
始める
reg := TRegistry.Create;
reg.RootKey:=HKEY_CLASSES_ROOT;
reg.OpenKey('*/shell/check/command', true);
reg.WriteString('', ''"' + application.ExeName + '" "%1"');
reg.CloseKey;
reg.OpenKey('*/shell/diary', false);
reg.WriteString('', 'オペレーション(&C)');
reg.CloseKey;
登録無料。
showmessage('完了!');
終わり;
◇[DELPHI]仮想キー値の送信 ctrl V
プロシージャ送信ペースト;
始める
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), 0, 0);
keybd_event(ord('V'), MapVirtualKey(ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0);
終わり;
◇[DELPHI]現在の光学ドライブのドライブレター
プロシージャ getcdrom(var cd:char);
変数
文字列:文字列;
ドライバ:整数;
ドライバー:文字;
i,temp:整数;
始める
ドライバー:=getlogicaldrives;
temp:=(1 とドライバー);
for i:=0 ~ 26 を実行します
始める
温度=1の場合
始める
driver:=char(i+integer('a'));
str:=ドライバー+':';
getdrivetype(pchar(str))=drive_cdrom の場合、
始める
cd:=ドライバー;
出口;
終わり;
終わり;
ドライバー:=(ドライバー shr 1);
temp:=(1 とドライバー);
終わり;
終わり;
◇[DELPHI]文字の暗号化と復号化
関数 cryptstr(const s:string; stype:dword):string;
変数
i: 整数;
fkey: 整数;
始める
結果:='';
ケースタイプの
0: セットパス。
始める
ランダム化;
fkey := ランダム($ff);
for i:=1 から length(s) まで
result := result+chr( ord(s[i]) xor i xor fkey);
結果 := 結果 + char(fkey);
終わり;
1:ゲットパス
始める
fkey := ord(s[長さ]);
for i:=1 から length(s) - 1 まで
result := result+chr( ord(s[i]) xor i xor fkey);
終わり;
終わり;
□◇[DELPHI] シミュレートされたキーを他のアプリケーションに送信する
変数
h:Tハンドル;
始める
h := FindWindow(nil, 'アプリケーションタイトル');
PostMessage(h, WM_KEYDOWN, VK_F9, 0);// F9 キーを送信
終わり;
□◇[DELPHI] DELPHIがサポートするDAOデータ形式
td.Fields.Append(td.CreateField ('dbBoolean',dbBoolean,0));
td.Fields.Append(td.CreateField ('dbByte',dbByte,0));
td.Fields.Append(td.CreateField ('dbInteger',dbInteger,0));
td.Fields.Append(td.CreateField ('dbLong',dbLong,0));
td.Fields.Append(td.CreateField ('dbCurrency',dbCurrency,0));
td.Fields.Append(td.CreateField ('dbSingle',dbSingle,0));
td.Fields.Append(td.CreateField ('dbDouble',dbDouble,0));
td.Fields.Append(td.CreateField ('dbDate',dbDate,0));
td.Fields.Append(td.CreateField ('dbBinary',dbBinary,0));
td.Fields.Append(td.CreateField ('dbText',dbText,0));
td.Fields.Append(td.CreateField ('dbLongBinary',dbLongBinary,0));
td.Fields.Append(td.CreateField ('dbMemo',dbMemo,0));
td.Fields['ID'].Set_Attributes(dbAutoIncrField);//自動インクリメントフィールド
□◇[DELPHI]DELPHI による MS SQL 7 および BDE の設定手順
最初のステップは、ODBC を構成することです。
まずODBCにデータソースを設定します。 SQL Server7.0をインストールすると、ODBCの「システムDSN」に2つの項目があるはずです。
データ ソース、1 つは MQIS、もう 1 つは LocalSever です。いずれかを選択して、[設定] ボタンをクリックします。SQL7.0 がわかりません。
ローカル マシンにインストールされていますか? そうであれば、次のステップに直接進みます。そうでない場合は、サーバー列に入力します。
次に、次のステップに進み、ログイン ID とパスワードを入力します (SQL7.0 では、ログイン ID とパスワードはユーザー オプションです)
中心部に位置します)。
2 番目のステップは、BDE を構成することです。
Delphi の BDE を開き、MQIS または LocalServer をクリックします。これは、ユーザー名とパスワードの入力を求められます。
ODBC ユーザー名とパスワードは同じなので、入力するだけです。
3 番目のステップは、プログラムを構成することです。
TTable を使用している場合は、TTable の DatabaseName で MQIS または LocalServer を選択し、
TableName で Sale を選択し、Active を True に変更するだけで、Delphi はプロンプト ダイアログを表示し、ユーザーを入力します。
名前とパスワード。
TQuery を使用している場合は、TQuery を右クリックし、[SQL ビルダー] をクリックします。これはインターフェイス モードで構成されています。
SQL ステートメントを使用するか、TQuery の SQL に SQL ステートメントを入力します。最後に、Active を True に変更することを忘れないでください。
動作中に TQuery を設定することもできます。詳細については、Delphi ヘルプを参照してください。
□◇[DELPHI] 画像上の特定の点のRGB値を取得します
プロシージャ TForm1.Image1MouseDown(送信者: TObject; ボタン: TMouseButton;
シフト: 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]日付形式の分解と変換について
var 年、月、日:単語;now2:Tdatatime;
now2:=date();
decodedate(now2,年,月,日);
lable1.Text :=inttostr(年)+'年'+inttostr(月)+'月'+inttostr(日)+'日';
◇[DELPHI]現在のネットワーク接続モードを確認する方法
判定結果は、MODEM、LAN、またはプロキシサーバーモードです。
wininetを使用します。
関数 ConnectionKind :boolean;
var フラグ: dword;
始める
結果 := InternetGetConnectedState(@flags, 0);
if 結果 then
始める
if (フラグと INTERNET_CONNECTION_MODEM) = INTERNET_CONNECTION_MODEM then
始める
showmessage('モデム');
終わり;
if (フラグと INTERNET_CONNECTION_LAN) = INTERNET_CONNECTION_LAN then
始める
showmessage('LAN');
終わり;
if (フラグと INTERNET_CONNECTION_PROXY) = INTERNET_CONNECTION_PROXY then
始める
showmessage('プロキシ');
終わり;
if (フラグと INTERNET_CONNECTION_MODEM_BUSY)=INTERNET_CONNECTION_MODEM_BUSY then
始める
showmessage('モデムビジー');
終わり;
終わり;
終わり;
◇[DELPHI]文字列が有効な EMAIL アドレスかどうかを判断する方法
関数 IsEMail(EMail: String): ブール値;
var s: 文字列;ETpos: 整数;
始める
ETpos:= pos('@', メール);
ETpos > 1 の場合
始める
s:= コピー(EMail,ETpos+1,長さ(EMail));
if (pos('.', s) > 1) かつ (pos('.', s) < length(s))
結果:= true、そうでない場合、結果:= false;
終わり
それ以外
結果:= false;
終わり;
◇【DELPHI】システムがインターネットに接続されているかどうかを確認する
URL.DLL の InetIsOffline 関数を導入する必要があります。
関数の宣言は次のとおりです。
関数 InetIsOffline(フラグ: 整数): 外部 'URL.DLL';
次に、この関数を呼び出して、システムがインターネットに接続されているかどうかを確認できます。
if InetIsOffline(0) then ShowMessage('接続されていません!')
else ShowMessage('接続されました!');
ローカル システムがインターネットに接続されていない場合、この関数は TRUE を返します。
添付:
IE または OFFICE97 を搭載したほとんどのシステムでは、この DLL を呼び出して使用できます。
Inetはオフラインです
BOOL InetIsOffline(
DWORD dwFlags、
);
◇【DELPHI】WAVファイルの再生・一時停止が簡単にできる
mmsystem を使用します。
関数 PlayWav(const FileName: string): ブール値;
始める
結果 := PlaySound(PChar(ファイル名), 0, SND_ASYNC);
終わり;
プロシージャ StopWav;
変数
バッファ: 文字の配列[0..2]。
始める
バッファ[0] := #0;
PlaySound(バッファ, 0, SND_PURGE);
終わり;
◇【DELPHI】マシンのBIOS情報を取得する
Memo1.Lines を使用すると、
始める
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 を使用します。
関数 DownloadFile(Source, Dest: string): ブール値;
始める
試す
結果 := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0;
を除外する
結果 := False;
終わり;
終わり;
if DownloadFile('http://www.borland.com/delphi6.zip, 'c:/kylix.zip') then
ShowMessage('ダウンロード成功')
else ShowMessage('ダウンロード失敗')
◇[DELPHI]サーバーのIPアドレス解決
ウィンソックを使用します
関数 IPAddrToName(IPAddr : String): 文字列;
変数
SockAddrIn: TSockAddrIn;
ホストエント: PHostEnt;
WSAデータ: TWSAデータ;
始める
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then result:=StrPas(Hostent^.h_name) else result:='';
終わり;
◇【DELPHI】ショートカットで接続を取得
関数 ExeFromLink(const linkname: 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);
z > 32 の場合
結果:= StrPas(ExeName)
それ以外
結果:= '';
StrDispose(FDir);
StrDispose(FName);
StrDispose(ExeName);
終わり;
◇[DELPHI]TCombobox の自動補完を制御する
{TCombobox の 'Sorted' プロパティを true に設定 }
var lastKey: // グローバル変数;
//TCombobox の OnChange イベント
プロシージャ TForm1.AutoCompleteChange(Sender: TObject);
変数
検索文字列: 文字列;
retVal: 整数;
始める
SearchStr := (TCombobox として送信者).Text;
if lastKey <> VK_BACK then // バックスペース: VK_BACK または $08
始める
retVal := (TCombobox として送信).Perform(CB_FINDSTRING, -1, LongInt(PChar(SearchStr)));
retVal > CB_Err の場合
始める
(TCombobox として送信者).ItemIndex := retVal;
(送信者は TCombobox です).SelStart := Length(SearchStr);
(送信者は TCombobox です).SelLength :=
(Length((TCombobox としての送信者).Text) - Length(SearchStr));
終了; // retVal > CB_Err
終了; // lastKey <> VK_BACK
lastKey := 0; // lastKey をリセットします。
終わり;
//TCombobox の OnKeyDown イベント
プロシージャ TForm1.AutoCompleteKeyDown(送信者: TObject; var Key: Word;
シフト: TShiftState);
始める
lastKey := キー;
終わり;
◇[DELPHI]ディレクトリをクリアする方法
関数 EmptyDirectory(TheDirectory :String ; Recursive : Boolean) :
ブール値;
変数
SearchRec : TSearchRec;
Res : 整数。
始める
結果 := False;
TheDirectory := NormalDir(TheDirectory);
Res := FindFirst(TheDirectory + '*.*', faAnyFile, SearchRec);
試す
Res = 0 の場合は実行します
始める
if (SearchRec.Name <> '.') および (SearchRec.Name <> '..') then
始める
if ((SearchRec.Attr および faDirectory) > 0) および再帰的
それから始めます
EmptyDirectory(ディレクトリ + SearchRec.Name, True);
RemoveDirectory(PChar(TheDirectory + SearchRec.Name));
終わり
そうでなければ始まる
DeleteFile(PChar(ディレクトリ + SearchRec.Name))
終わり;
終わり;
Res := FindNext(SearchRec);
終わり;
結果 := True;
ついに
FindClose(SearchRec.FindHandle);
終わり;
終わり;
◇[DELPHI]ディレクトリのサイズの計算方法
関数 GetDirectorySize(const ADirectory: string): 整数;
変数
監督: TSearchRec;
Ret: 整数;
パス: 文字列;
始める
結果 := 0;
パス := ExtractFilePath(ADirectory);
Ret := Sysutils.FindFirst(ADirectory, faAnyFile, Dir);
Ret <> NO_ERROR の場合は終了します。
試す
while ret=NO_ERROR を実行します
始める
inc(結果, ディレクトリサイズ);
if ([faDirectory] の Dir.Attr) および (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 の値を、「アプリケーションの削除リスト」に表示される名前 (「Aiming Uninstall one」など) に割り当てます。
C:/WIN97/uninst.exe -f "C:/TestPro/aimTest.isu" など、実行された削除コマンドに文字列 UninstallString を割り当てます。
◇[DELPHI] WM_QUERYEND セッション シャットダウン メッセージを傍受しました
タイプ
TForm1 = クラス(TForm)
プロシージャ WMQueryEndSession(var メッセージ: TWMQueryEndSession); メッセージ WM_QUERYENDSESSION;
プロシージャ CMEraseBkgnd(var Message:TWMEraseBkgnd);メッセージ WM_ERASEBKGND;
プライベート
{プライベート宣言}
公共
{公的宣言}
終わり;
プロシージャ TForm1.WMQueryEndSession(var メッセージ: TWMQueryEndSession);
始める
Showmessage('コンピュータがシャットダウンしようとしています');
終わり;
◇[DELPHI]オンライン隣人を獲得する
プロシージャ getnethood();//NT がサーバーとして使用され、デバッグは WIN98 で行われます。
変数
a,i:整数;
エラーコード:整数;
netres:ネットリソースの配列[0..1023];
列挙ハンドル:ハンドル;
列挙:dword;
バッファサイズ:dword;
s:文字列;
mylistitems:tlistitems;
mylistitem:tlistitem;
すべてのドメイン:文字列;
begin //listcomputer はすべてのコンピュータを一覧表示するリストビューであり、controlcenter はフォームです。
alldomain:=tstringlist.Create;
netres[0] で始まります
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=nil;
lpコメント:=nil;
lpprovider :=nil;
// すべてのフィールドを取得します。
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
errcode=NO_ERROR の場合は開始します
列挙:=1024;
バッファサイズ:=sizeof(netres);
errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
終わり;
a:=0;
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.クリア;
while (string(netres[a].lpprovider)<>'') と (errcode=NO_ERROR) は実行します
始める
alldomain.Add (netres[a].lpremotename);
a:=a+1;
終わり;
wnetcloseenum(列挙ハンドル);
// すべてのコンピュータを取得します
mylistitems :=controlcenter.lstcomputer.Items;
mylistitems.クリア;
for i:=0 から alldomain.Count-1 まで
始める
netres[0] で始まります
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(alldomain[i]);
lpコメント:=nil;
lpprovider :=nil;
終わり;
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
errcode=NO_ERROR の場合
始める
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
終わり;
a:=0;
while (string(netres[a].lpprovider)<>'') と (errcode=NO_ERROR) は実行します
始める
mylistitem :=mylistitems.Add;
mylistitem.ImageIndex :=0;
mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'//','',[rfReplaceAll]));
a:=a+1;
終わり;
wnetcloseenum(列挙ハンドル);
終わり;
終わり;
◇【DELPHI】特定のコンピュータの共有ディレクトリを取得する
プロシージャ getsharefolder(const コンピュータ名:string);
変数
エラーコード、a:整数;
netres:ネットリソースの配列[0..1023];
列挙ハンドル:ハンドル;
列挙型、バッファサイズ:dword;
s:文字列;
mylistitems:tlistitems;
mylistitem:tlistitem;
mystrings:tstringlist;
始める
netres[0] で始まります
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_DISK;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SHARE;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(コンピュータ名);
lpコメント:=nil;
lpprovider :=nil;
end; // ルートノードを取得します。
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
errcode=NO_ERROR の場合
始める
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)<>'') と (errcode=NO_ERROR) は実行します
始める
mylistitemsを使用して行う
始める
mylistitem:=追加;
mylistitem.ImageIndex :=4;
mylistitem.Caption :=extractfilename(netres[a].lpremotename);
終わり;
a:=a+1;
終わり;
終わり;
◇【DELPHI】ハードディスクのシリアル番号を取得する
var SerialNum : pdword; a、b : dword : 配列 [0..255] の char;
始める
if GetVolumeInformation('c:/', Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0) then Label1.Caption := IntToStr(SerialNum^);
終わり;
◇[DELPHI]MEMOの自動ページめくり
プロシージャ ScrollMemo(メモ: TMemo; 方向: char);
始める
ケースの方向
'd': 始まります
SendMessage(Memo.Handle, { メモ コントロールの HWND }
WM_VSCROLL、{ Windows メッセージ }
SB_PAGEDOWN, { スクロールコマンド }
0) { 未使用 }
終わり;
'u' : 始まります
SendMessage(Memo.Handle, { メモ コントロールの HWND }
WM_VSCROLL、{ Windows メッセージ }
SB_PAGEUP, { スクロールコマンド }
0); { 未使用 }
終わり;
終わり;
終わり;
プロシージャ TForm1.Button1Click(送信者: TObject);
始める
ScrollMemo(Memo1,'d'); //ページアップ
終わり;
プロシージャ TForm1.Button1Click(送信者: TObject);
始める
ScrollMemo(Memo1,'u'); //ページをめくります
終わり;
◇[DELPHI] DBGrid 内の次の位置まで Enter キーを押します (Tab キー)
プロシージャ TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
始める
キー = #13 の場合
if DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 then
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl
それ以外
始める
表1.次へ;
DBGrid1.Columns[0].field.FocusControl;
終わり;
終わり;
◇[DELPHI]コントロールの取り付け方法
インストール方法:
1. 単一のコントロールの場合、コンポーネント --> コンポーネントのインストール.. --> PAS または DCU ファイル --> インストール
2. *.dpk ファイルを含むコントロール パッケージの場合は、[ファイル] --> [開く] (ドロップダウン リスト ボックスで *.dpk を選択) --> インストールします。
3. *.dpl ファイルを含む制御パッケージの場合は、「パッケージのインストール」-->「追加」-->「dpl ファイル名」を選択します。
4. 上記の [インストール] ボタンが無効な場合は、[コンパイル] ボタンを試してください。
5. ランタイム ライブラリの場合は、オプションの下のパッケージの下の runtimepackes に追加します。
コンパイル中にファイルが見つからないというメッセージが表示される場合は、通常、コントロールのインストール ディレクトリが Delphi の Lib ディレクトリにないことが原因です。問題を解決するには、次の 2 つの方法があります。
1. 元のインストール ファイルを delphi の Lib ディレクトリにコピーします。
2. または、コントロールの元のコード パスを [ツール] --> [環境オプション] の Delphi Lib ディレクトリに追加します。
◇【DELPHI】ディレクトリを完全削除(deltree)
プロシージャ TForm1.DeleteDirectory(strDir:String);
変数
sr: TSearchRec;
FileAttrs: 整数;
strfilename:文字列;
strPth: 文字列;
始める
strpth:=Getcurrentdir();
FileAttrs := faAnyFile;
if FindFirst(strpth+'/'+strdir+'/*.*', FileAttrs, sr) = 0 then
始める
if (sr.Attr および FileAttrs) = sr.Attr then
始める
strfilename:=sr.Name;
ファイルが存在する場合(strpth+'/'+strdir+'/'+strfilename)
deletefile(strpth+'/'+strdir+'/'+strfilename);
終わり;
while FindNext(sr) = 0 実行します
始める
if (sr.Attr および FileAttrs) = sr.Attr then
始める
strfilename:=sr.name;
ファイルが存在する場合(strpth+'/'+strdir+'/'+strfilename)
deletefile(strpth+'/'+strdir+'/'+strfilename);
終わり;
終わり;
FindClose(sr);
削除されたir(strpth+'/'+strdir);
終わり;
終わり;
◇[DELPHI] TMemoコントロールのカレントカーソルの行と列の情報をTpointに取得する
1.関数 ReadCursorPos(SourceMemo: TMemo): TPoint;
var ポイント: 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]ハードディスクのシリアル番号を読み取る
関数 GetDiskSerial(DiskChar:Char): 文字列;
変数
シリアル番号: pdword;
a、b:ダブルワード。
バッファ: char の配列 [0..255]。
始める
結果 := "";
getVolumeInformation(PCHAR(diskchar+":/")、buffer、sizeof(buffer)、serialnum、
a、b、nil、0)その後
結果:= inttostr(serialnum^);
終わり;
◇[インターネット]一般的なCSS包括的なスキル
1. P:First-Letter {font-size:300%; left} //最初の文字は通常のフォントの3倍です。
2. <link rel = styleSheet href = "basics.css" title = "Conternporary"> //外部スタイルシートを接続します
3.スタイルシートを埋め込みます
<style type = "text/css" media = screen>
<! -
@import url(http://www.htmlhelp.com/style.css); //スタイルシートを外部からインポートします
@import url(/stylesheets/punk.css); //上記と同じ
ボディ{背景:url(foo.gif)赤:黒}
.punk {color:lime;
#wdg97 {font-size:ergare} //参照については6を参照してください。
-->
</style>
4. <p style = "color:red; font-family: 'new Century Schoolbook'、serif"> //インラインスタイル
<span style = "font-family:arial"> arial </span> //スパンは、スタイル、クラス、およびID属性を受け入れます
<div class = note> <p> divには、段落、タイトル、テーブル、さらにはその他のパーツを含めることができます</p> </div>
5. <h1 class = punk> class属性</h1> //定義については3を参照してください。
6. <p id = wdg97> id属性</p> //定義については3を参照してください。
7.プロパティリスト
フォントスタイル:フォントスタイル:[通常|
フォントサイズ:[x-small |
テキスト装飾:[アンダーライン||。
テキスト変換:[なし|
背景色:[<color> |
背景画像:背景イメージ:[<urls> |
Line-Height:[number> |
ボーダースタイル:[
フロート:[左|
8.長さの単位
相対ユニット:
em(em、要素のフォントの高さ)
ex(x-height、文字「x」の高さ)
PX(画面解像度と比較してピクセル)
絶対的な長さ:
(インチ、1インチ= 2.54センチメートル)
CM(センチメートル、1センチ= 10ミリメートル)
mm(メーター)
PT(ポイント、1ポイント= 1/72インチ)
PC(PA、1 PA = 12ポイント)
◇[Delphi] VCLを作成するための簡単な手順
1.コンポーネント属性メソッドイベントを作成します
(ライブラリユニットを作成し、新しいタイプとして継承し、プロパティ、メソッド、イベント、登録コンポーネントを登録し、パッケージファイルを作成します)
2.メッサージ処理
3.Exception処理
4。パーツが表示されます
◇[Delphi]動的リンクライブラリの読み込み
静的荷重:手順名;外部 'lib.dll';
動的荷重:varハンドル:thandle;
ハンドル:= LoadLibrary( 'lib.dll');
ハンドル<> 0の場合
始める
{dosomhine}
Freelibrary(ハンドル);
終わり;
◇[delphi]ポインター変数とアドレス
var x、y:integer; p:^integer; //整数変数へのポインター
x:= 10; //
p:=@x; //変数xのアドレス
y:= p^; // pointer pをyに割り当てます
@@手順//プロセス変数のメモリアドレスを返します
◇[Delphi]は、キャラクターが漢字であるかどうかを決定します
byteType( 'how you haha'、1)= mbleadbyte //は最初の文字です
byteType( 'how you haha'、2)= mbtrailbyte //は2番目の文字です
byteType( 'how you haha'、5)= mbsinglebyte //漢字ではありません
◇[Delphi]メモ位置操作
memo1.lines.delete(0)//行1を削除します
memo1.selstart:= 10 // 10バイトを見つけます
◇[delphi]二重バイト文字内部コードを取得します
関数getIT(s:string):integer;
始める
結果:= byte(s [1]) * $ 100 + byte(s [2]);
終わり;
使用:GetIT( 'Calculation')// $ BCC6は10進48326です
◇[delphi]データストレージ手順を追加します
ストアドプロシージャは次のとおりです。
手順AddRecordを作成する(
Record1 varchar(10)
Record2 varchar(20)
)
として
始める
TableName(field1、field2)値に挿入(:record1、:record2)
終わり
ストアドプロシージャを実行します:
procedute addRecord( "urrecord1"、 "urrecord2")を実行
◇[delphi]ファイルをブロブフィールドに保存します
function blobcontenttostring(const filename:string):string;
始める
tfilestream.create(filename、fmopenread)を使用します
試す
setLength(result、size);
read(pointer(result)^、size);
ついに
無料;
終わり;
終わり;
//フィールドを保存します
始める
if(opendialog1.execute)then
始める
sfilename:= opendialog1.filename;
adotable1.edit;
adotable1.fieldbyname( 'visio')。asstring:= blobcontenttostring(filename);
adotable1.post;
終わり;
◇[delphi]すべてのファイルをクリップボードにコピーします
shlobj、activex、clipbrdを使用します。
手順tform1.copytoclipbrd(var filename:string);
変数
Fe:tformatetc;
中:TSTGMedium;
ドロップファイル:pdropfiles;
pfile:pchar;
始める
fe.cfformat:= cf_hdrop;
fe.dwaspect:= dvaspect_content;
fe.tymed:= tymed_hglobal;
medium.hglobal:= globalAlloc(gmem_shareまたはgmem_zeroinit、sizeof(tdropfiles)+length(filename)+1);
medium.hglobal <> 0の場合、開始します
medium.tymed:= tymed_hglobal;
dropfiles:= globallock(medium.hglobal);
試す
dropfiles^.pfiles:= sizeof(tdropfiles);
dropfiles^.fwide:= false;
longint(pfile):= longint(dropfiles)+sizeof(tdropfiles);
strpcopy(pfile、filename);
inc(pfile、length(filename)+1);
pfile^:=#0;
ついに
GlobalUnLock(Midion.hglobal);
終わり;
clipboard.setashandle(cf_hdrop、medium.hglobal);
終わり;
終わり;
◇[delphi]現在のシステムの実行プロセスをリストします
USESTLHELP32;
プロシージャ TForm1.Button1Click(送信者: TObject);
var lppe:tprocessentry32;
見つかった:boolean;
手:サンドル;
始める
Hand:= createToolhelp32Snapshot(th32cs_snapall、0);
見つかった:= process32first(hand、lppe);
見つかったが、そうします
始める
listbox1.items.add(strpas(lppe.szexefile));
見つかった:= process32next(hand、lppe);
終わり;
終わり;
◇[delphi] Bdetable1に基づいて新しいテーブルTable2を作成します
表2:= ttable.create(nil);
試す
表2.Databasename:= table1.databasename;
表2.FieldDefs.Assign(Table1.FieldDefs);
表2.indexdefs.Assign(table1.indexdefs);
表2.tableName:= 'new_table';
表2.createtable();
ついに
表2.free();
終わり;
◇[delphi] dllの作成と参照を理解するための最良の方法
//最初にDLLソース(ファイル - > new-> dll)を見てください
ライブラリProject1;
用途
sysutils、クラス;
function addit(f:integer; s:integer):integer; export;
始める
MakeAsum:= f+s;
終わり;
輸出
addit;
終わり。
//呼び出し(プロジェクトで)
実装
function addit(f:integer; s:integer):integer; far; external 'project1'; //宣言
{コールはadditです(2,4)。
◇[Delphi]プログラム自体のサイズを動的に読み取ります
関数gesselfsize:integer;
変数
F:バイトのファイル。
始める
filemode:= 0;
assightfile(f、application.exename);
リセット(f);
結果:= filesize(f); //ユニットはバイトです
closefile(f);
終わり;
◇[Delphi] BIOS情報を読んでください
MEMO1.LINESを使用します
始める
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);
var mylist:tstringlist;
始める
mylist:= tstringlist.create;
試す
mylistで行います
始める
add( 'サーバー名= 210.242.86.2');
add( 'データベース名= db');
add( 'user name = sa');
終わり;
session1.addalias( 'testsql'、 'mssql'、mylist);
session1.saveconfigfile;
ついに
mylist.free;
session1.Active:= true;
database1.databasename:= 'db';
database1.aliasname:= 'testsql';
database1.loginprompt:= false;
database1.params.add( 'user name = sa');
database1.params.add( 'password =');
database1.connected:= true;
終わり;
終わり;
プロシージャ TForm1.Button2Click(送信者: TObject);
始める
database1.connected:= false;
session1.deletealias( 'testsql');
終わり;
◇[Delphi]バックグラウンドミュージックを再生します
MMSystemを使用します
//音楽を再生します
McIsendString( 'Open E:/1.MIDタイプシーケンサーエイリアスnn'、 ''、0、0);
McIsendString( 'Play nn from 0'、 ''、0、0);
McIsendString( 'Close Animation'、 ''、0、0);
終わり;
//再生を停止します
McIsendString( 'Open E:/1.MIDタイプシーケンサーエイリアスnn'、 ''、0、0);
McIsendString( 'Stop nn'、 ''、0、0);
McIsendString( 'Close Animation'、 ''、0、0);
◇[Delphi]インターフェイスとクラスのサンプルコード
タイプ{インターフェイスとクラス宣言:違いは、データメンバー、非公開の方法、およびパブリックメソッドがインターフェイスの公開キーワードを使用しないことです}
isample = interface // isampleインターフェイスを定義します
関数GetString:string;
終わり;
tsample = class(tinterfacedobject、isample)
公共
関数GetString:string;
終わり;
//関数定義
関数tsample.getString:string;
始める
結果:= 'ショーは何ですか';
終わり;
//クラスオブジェクトを呼び出します
varサンプル:tsample;
始める
サンプル:= tsample.create;
showmessage(sample.getString+'class object!');
sample.free;
終わり;
//インターフェイスを呼び出します
var sampleinterface:isample;
サンプル:tsample;
始める
サンプル:= tsample.create;
sample interface:= sample; //インターフェイスの実装はクラスを使用する必要があります
{上記の2行は、SampleInterface:= tsample.create;}として表現することもできます。
showmessage(sampleinterface.getString+'interface!');
//sample.free; {unlike like local classes、interfaceのクラスは自動的にリリースされます}
SampleInterface:= nil; {インターフェイスオブジェクトをリリース}
終わり;
◇[delphi]タスクバーは適切なプログラムのようには見えません
変数
拡張スタイル:整数;
始める
アプリケーションの初期化;
extendedStyle:= getWindowlong(application.handle、gwl_exstyle);
setWindowlong(application.handle、gwl_exstyle、extendedStyleまたはws_ex_toolwindowおよびws_ex_appwindow);
Application.CreateForm(TForm1, Form1);
アプリケーション.実行;
終わり。
◇[delphi] alt+ctrl+delはプログラムを見ることができません
実装後に宣言を追加します:
関数RegisterServiceProcess(dwprocessid、integer):integer;
RegisterServiceProcess(getCurrentProcessid、1); // hide
RegisterServiceProcess(getCurrentProcessid、0); // display
◇[delphi]光学駆動シンボルを検出します
varドライブ:char;
CDROMID:整数;
始める
ドライブの場合:= 'd'から 'z' do
始める
CDROMID:= getDriveType(PCHAR(drive+':/'));
cdromid = 5の場合、showmessage( 'cd-romドライブは'+drive+'disk!');
終わり;
終わり;
◇[delphi]サウンドカードを検出します
auxgetnumdevs()<= 0の場合、showmessage( 'サウンドカードは見つかりません!')
◇[delphi]文字列グリッドを描画します
stringgrid.ondrawcellイベント
stringgrid1.canvas do
draw(rect.left、rect.top、image1.picture.graphic);
◇[SQL Server] SQLで同様のステートメントを書く別の方法
たとえば、ユーザー名に「C」が含まれているすべてのユーザーを見つけるには、使用できます
mydatabaseを使用してください
select * from table1ここで、「%c%」のようなユーザー名
上記の関数を完了する別の方法を次に示します。
mydatabaseを使用してください
table1から * charindex( 'c'、username)> 0から *を選択します
理論的には、この方法には以前の方法、つまり> 0よりも1つの判断ステートメントがありますが、この判断プロセスは最速であると考えています。
文字列やその他の操作の場合、Charindex関数を使用することは大したことではありません。つまり、%、|などのように直接使用することはできません。
見つかった文字は、次のように、このCharindexで直接使用できます。
mydatabaseを使用してください
[table1] from carindex( '%'、username)> 0を選択します
次のように書くこともできます。
mydatabaseを使用してください
[table1から] select * charindex(char(37)、username)> 0
ASCII文字は%です
◇[Delphi] SQLは、複数のデータベース/テーブルを表示します
「jianjie.dbf "a、" gongzi.dbf "b
ここで、a.bianhao = b.bianhao
◇[Delphi] RFC(コメントのリクエスト)関連
IETF(インターネットエンジニアリングタスクフォース)は、RFCドキュメントhttp://www.ietf.cnri.reston.va.usを維持しています
RFC882:メッセージヘッダー構造
RFC1521:MIMEパート1、メッセージ送信方法
RFC1945:マルチメディアドキュメント転送ドキュメント
◇[delphi] tnmuupprocessorの使用
var instream、outstreem:tfilestream;
始める
instream:= tfilestream.create(file.txt、fmopenread);
アウトストリーム:= tfilestream(outfile.txt、fmcreate);
nmuue.method:= uucode; {uuencode/decode}
//nmuue.method:=uumime; {mime}
nmuue.inputStream:= instream;
nmuue.outputStream:= outstream;
nmuue.encode; {エンコード処理}
//nmuue.decode; {decoding processing}
instream.free;
アウトストリーム。
終わり;
◇[delphi] tfilestream操作
//ファイルストリームの現在の位置からバッファバッファーへのカウントバイトを読み取ります
関数read(var buffer; count:longint):longint; override;
//ファイルストリームにバッファバッファーを読み取ります
function write(const buffer; count:longint):longint; override;
//ファイルストリームの現在の読み取りと書き込みポインターをオフセットするように設定します
function seek(offset:longint; rugin:word):longint; override;
Origin = {sofrombegining、sofromcurrent、sofromend}
//別のファイルストリームの現在の位置から現在のファイルストリームの現在の位置にコピーカウント
関数copyfrom(出典:tstream; count:longint):longint;
//指定されたファイルをファイルストリームに読み取ります
var myfstream:tfilestream;
始める
myfstream:= tfilestream.create(opendialog1.filename、fmopenread);
終わり;
[JavaScript] IEプラグインショック波とQuickTimeがインストールされているかどうかを確認します
<スクリプト言語= "javascript">
var myplugin = navigator.plugins ["shockwave"];
if(myplugin)
document.writeln( "shockwave!"をインストールしました! ")
それ以外
document.writeln( "shockwaveをインストールしていません!")
</scrip> <br>
<スクリプト言語= "javascript">
var myplugin = navigator.plugins ["QuickTime"];
if(myplugin)
document.writeln( "QuickTimeインストール!"))
それ以外
document.writeln( "QuickTimeをインストールしていません!")
</script>
[インターネット]テーブル内のiframeを参照する効果
<table cellpadding="0" cellpacing="0">
<tr>
<td> <ilayer id = "ad1" visiability = "hidden"> </ilayer> <nolayer> <iframe src = "i:/jinhtml/zj/h21.htm" marginwidth = "0" marginheight = "110" hspace = "10" vspace = "20" frameborder = "0"スクロール= "1"> </iframe> </nolayer> </td>
</tr>
</テーブル>
◇[Delphi] Webbrowserコントロールスキル
1.印刷機能を実現します
Var Vain、Vaout:Olevariant;
webbrowser.controlinterface.execwb(olecmdid_print、olecmdexecopt_dontpromptuser、vain、vaout);
2. WebbrowserはStreamからページを読み取ります
function tform1.loadfromstream(const astream:tstream):hresult;
始める
astream.seek(0、0);
result:=(webbrowser1.document as ipersistStreaminit).load(tstreamadapter.create(Astream));
終わり;
3. 「About:」プロトコルでは、HTML文字列に移動できます。
手順tform1.loadhtmlstring(shtml:string);
Var Flags、TargetFramename、Postdata、Headers:Olevariant;
webbrowser1.navigate( 'about:' + shtml、flags、targetframename、postdata、ヘッダー)
4. 「RES:」プロトコルでは、リソースとして保存されているHTMLファイルに移動できます。
手順tform1.loadhtmlresource;
Var Flags、TargetFramename、Postdata、Headers:Olevariant;
webbrowser1.navigate( 'res://' + application.exename + '/myhtml'、flags、targetframename、postdata、headers)
BRCC32.exeを使用してリソースファイル(*.rc)を作成します
myhtml 23 "./html/myhtml.htm"
morehtml 23 "./html/morehtml.htm"
{$ r html.res} //html.rcはhtml.resにコンパイルされます
5.完全なHTMLファイルを保存します
変数
htmldocument:ihtmldocument2;
stavesfile:ipersistfile;
始める
htmldocument:= webbrowser1.document as ihtmldocument2;
stavesfile:= htmldocument as ipersistfile;
stavesfile.save(stringtoolestr( 'test.htm')、true);
htmldocument.readystate <> 'complete' do
application.processmessages;
終わり;
◇[delphi] Webbrowserコントロールをインストールする(埋め込みIEコントロール)
最初に、システムにインターネットエクスプローラー4以降がインストールされていることを確認する必要があります。デルファイメニュー - コンポーネント - Import ActiveXコントロール、Microsoftインターネットコントロールを選択し、既存のパッケージファイルに追加すると、Webbrowserコントロールが表示されますActiveXコントロールパネル。
◇[Delphi] Windows2000半透明フォームを実装します
関数setlayeredwindowattributes(hwnd:hwnd; crkey:longint; byte; dwflags:longint):stdcall; //関数宣言
プロシージャ TForm1.FormCreate(送信者: TObject);
var l:longint;
始める
L:= getWindowlong(ハンドル、GWL_EXSTYLE);
l:= lまたは$ 80000;
SetWindowlong(ハンドル、GWL_EXSTYLE、L);
setLayeredWindowattributes(ハンドル、0、180、2);
終わり;
[[Delphi]プログラムには、広告Webbrowserの読み込み写真が表示されます
varフラグ、フレーム、pdata、ヘッダー:olevariant;
始める
webbrowser1.navigate( 'http://www.chineseall.com/images/logo.jpg'、flag、frame、pdata、header)
終わり;
◇[delphi]ディレクトリのサイズを計算します
関数getDirectorySize(const Adirectory:string):integer;
変数
dir:tsearchrec;
Ret:整数;
パス:文字列;
始める
結果:= 0;
パス:= extractfilepath(adirectory);
ret:= sysutils.findfirst(adirectory、faanyfile、dir);
ret <> no_errorの場合
出口;
試す
ret = no_errorはします
始める
Inc(result、dir.size);
//それがディレクトリであり、「..」ではない場合、再帰的な呼び出しを行います
if(dir.attr in [fadirectory])and(dir.name [1] <> '。')then
Inc(result、getDirectorySize(path + dir.name + '/* .*'));
ret:= sysutils.findnext(dir);
終わり;
ついに
sysutils.findclose(dir);
終わり;
終わり;
◇[delphi]ディレクトリをクリアします
function emptyDirectory(thedirectory:string; recursive:boolean):
ブール;
変数
SearchRec:TsearchRec;
Res:整数;
始める
結果:= false;
thedirectory:= normaldir(thedirectory);
res:= findfirst(thedirectory + '*。*'、faanyfile、searchRec);
試す
Res = 0はします
始める
if(searchrec.name <> '。')および(searchrec.name <> '..')then
始める
if((searchrec.attr and fadirectory)> 0)および再帰
それから始めます
emptyDirectory(thedirectory + searchrec.name、true);
removedirectory(pchar(thedirectory + search.name));
終わり
そうでなければ始まる
deletefile(pchar(thedirectory + search.name)))
終わり;
終わり;
res:= findnext(searchRec);
終わり;
結果:= true;
ついに
findclose(searchrec.findhandle);
終わり;
終わり;
◇[Delphi] ADOプログラムを公開し、ADOをインストールします
MDAC_TYP.EXEを1回実行します。
インストールプログラムがインストールされた後のディレクトリは、プログラムに設定されたディレクトリパスと同じです。インストールされていない場合は、MS Office2000がコンパイルされます。
◇[delphi] Windowsシステムメッセージの傍受:wm_closeメッセージ
手順wmclose(var msg:tmessage);メッセージwm_close;
手順tmainform.wmclose(var msg:tmessage);
始める
m_bclosenoquery:= false;
継承された。
終わり;