พูดคุยเกี่ยวกับทักษะการเขียนโปรแกรมอินเทอร์เน็ตภายใต้ Delphi (1)
ผู้แต่ง: lyboy99E-mail: [email protected] มาพร้อมกับการควบคุมการเขียนโปรแกรมแอปพลิเคชันอินเทอร์เน็ตมากมาย ซึ่งช่วยให้เราพัฒนาแอปพลิเคชันอินเทอร์เน็ตได้ง่ายขึ้น ด้านล่างนี้ฉันจะค่อยๆ แนะนำทักษะการเขียนโปรแกรมแอปพลิเคชันบางอย่างบนอินเทอร์เน็ต ด้านต่างๆ แต่สามารถเพิ่มฟังก์ชันสำคัญให้กับแอปพลิเคชันของคุณ ทำให้คุณพัฒนาแอปพลิเคชันภายใต้อินเทอร์เน็ตได้ง่ายขึ้น หลังจากการบรรยายเปิด เรามาแนะนำกันก่อน: การตั้งค่าเบราว์เซอร์เริ่มต้นของระบบและซอฟต์แวร์การส่งและรับอีเมลเริ่มต้นของระบบ 1. รับฟังก์ชันที่อยู่อินเทอร์เน็ตเบราว์เซอร์เริ่มต้น: ฟังก์ชันต่อไปนี้รับที่อยู่ของอินเทอร์เน็ตเบราว์เซอร์เริ่มต้นโดยการอ่านฟังก์ชันการตั้งค่ารีจิสทรี GetDefaultShellHTTP: string;varreg: TRegistry;begin Reg:=TRegistry.Create; Reg .RootKey:=HKEY_CLASSES_ROOT; ถ้า Reg.KeyExists('http/shell/open/command') ให้เริ่มต้น Reg.OpenKey('http/shell/open/command',false); Result:=Reg.ReadString(''); end else ผลลัพธ์:=''; Reg.Free;end;2 (CmdLine : string);varreg : TRegistry;begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; //ที่อยู่ของรีจิสทรี: Reg.OpenKey('http/shell/open/command',true);//ที่อยู่ของรีจิสทรี: Reg.WriteString('',CmdLine); Reg. ฟรี;สิ้นสุด;setDefaultshellhttp('"C:/PROGRA~1/INTERN~1/iexplorer.exe" -nohome');3. รับและตั้งค่าฟังก์ชันของซอฟต์แวร์การส่งและรับอีเมลเริ่มต้น ฟังก์ชันต่อไปนี้รับที่อยู่ของซอฟต์แวร์การส่งและรับอีเมลเริ่มต้นโดยการอ่านฟังก์ชันการตั้งค่ารีจิสทรี GetDefaultMail: string; varreg: TRegistry; start Reg:=Tregistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; if Reg.KeyExists('Mailto/shell/open/command') ให้เริ่มต้น Reg.OpenKey('Mailto/shell/open/command',false); Result:=Reg.ReadString(''); end else ผลลัพธ์:=''; Reg.Free;end;4 (CmdLine : string);varreg : TRegistry;begin Reg:=TRegistry.Create; Reg.RootKey:=HKEY_CLASSES_ROOT; Reg.OpenKey('Mailto/shell/open/command',true); Reg.WriteString('',CmdLine); Reg.Free;end;ใช้ //SetDefaultMail('E:/Foxmail/FoxMail.exe -T " %1" -S "%2"');5. คุณเคยอยากมีฟังก์ชันในการแปลงชื่อโดเมนเป็นที่อยู่ IP หรือไม่ ตอนนี้ฉันจะให้ฟังก์ชันแก่คุณในการแปลงชื่อโดเมนเป็นที่อยู่ IP: function รับ IPName (ชื่อ: สตริง): string;var WSAData: TWSAData; HostEnt: PHostEnt;begin WSAStartup(2, WSAData); HostEnt := gethostbyname(PChar(Name)); with HostEnt^ do Results := Format('%d.%d.% d.%d', [ไบต์(h_addr^[0]), ไบต์(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]); WSACleanup;end; 6. เมื่อเขียนซอฟต์แวร์อินเทอร์เน็ต คุณมักจะพบกับการตรวจสอบ URL, ที่อยู่อีเมล ฯลฯ ที่ผู้ใช้ป้อน จะแก้ไขปัญหานี้ได้อย่างไร? ฉันบังเอิญมีฟังก์ชันเขียนไว้ตรงนี้ ตรวจสอบว่า URL ถูกต้องใช้ wininet; Function CheckUrl(url:string):boolean; //ตรวจสอบว่า URL เป็นฟังก์ชันที่ถูกต้อง var hsession, hfile, hRequest: hInternet; dwcodelen:dWord; 20] ของ char; res : pchar; เริ่มต้นถ้า pos('http://',ตัวพิมพ์เล็ก(url))=0 แล้ว url := 'http://'+url; ผลลัพธ์ := false; hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0); หากได้รับมอบหมาย (hsession) ให้เริ่ม hfile := InternetOpenUrl(hsession, pchar (url), ไม่มี, 0, INTERNET_FLAG_RELOAD, 0); dwIndex := 0; dwCodeLen := 10; HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex); ผลลัพธ์ := (res = '200') หรือ (res = '302'); /200,302 แฟล็กการยกเลิกการย้ายหากได้รับมอบหมาย (hfile) แล้ว InternetCloseHandle (hfile); InternetCloseHandle (hsession); สิ้นสุด;
วิธีจัดการกับที่อยู่อีเมล นี่คือฟังก์ชันการประมวลผลที่อยู่อีเมล IsEMail(Email: String): Boolean; var s: String; ETpos: Integer; ETpos > 1 จากนั้นเริ่มต้น s:= copy(EMail,ETpos+1,Length(EMail)); if (pos('.', s) > 1) และ (pos('.', s) <length(s)) จากนั้น Result:= true else Result:= false; end else Result:= false; end; ถ้า isemail(Edit1.Text) ให้เริ่ม ShowMessage('eMail-Address!'); end;
ฟังก์ชั่นต่อไปนี้สามารถเพิ่มที่อยู่ของเซิร์ฟเวอร์ DNS
หากต้องการเพิ่ม 202.100.100.65 202.10.10.10
SetDNSAddresses('202.100.100.65 202.10.10.10');
//หมายเหตุ: คั่นแต่ละที่อยู่ด้วยการเว้นวรรค
SetTDNSAddresses ถูกกำหนดไว้ดังนี้: ขั้นตอน SetDNSAddresses ( sIPs : string );
เริ่ม
// ถ้าเป็น Windows NT ให้ใช้โค้ดต่อไปนี้
SaveStringToRegistry_LOCAL_MACHINE(
'ระบบ/ชุดควบคุมปัจจุบัน' +
'/บริการ/Tcpip/พารามิเตอร์',
'เนมเซิร์ฟเวอร์',
จิบ );
// หากคุณใช้ Windows 95 ให้ใช้โค้ดต่อไปนี้
SaveStringToRegistry_LOCAL_MACHINE(
'ระบบ/ชุดควบคุมปัจจุบัน' +
'/บริการ/VxD/MSTCP',
'เนมเซิร์ฟเวอร์',
จิบ );
สิ้นสุด โดยที่ SaveStringToRegistry_LOCAL_MACHINE ถูกกำหนดไว้:
ใช้รีจิสทรี;
ขั้นตอน SaveStringToRegistry_LOCAL_MACHINE(
sKey, ไซต์, sVal : string );
var
reg: TRegIniFile;
เริ่ม
reg := TRegIniFile.Create( '' );
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.WriteString( sKey, ไซต์, sVal + #0 );
reg.ฟรี;
จบ;