Perkenalan
Pengembangan program web menimbulkan tantangan besar terhadap alat pengembangan. Dihadapkan dengan banyaknya kebutuhan pengguna, banyak perusahaan telah meluncurkan sejumlah besar platform pengembangan: platform untuk mengembangkan aplikasi desktop dan program C/S, platform untuk mengembangkan middleware, dan platform untuk mengembangkan Web. server. Hal ini mengakibatkan pemrogram menghadapi sejumlah besar alat tanpa cara untuk memulai.
DELPHI berbeda dari alat pengembangan lainnya karena merupakan sistem terbuka. Selama Anda menggunakan beberapa kontrol secara fleksibel, Anda dapat mengembangkan berbagai jenis sistem, baik program N-Tie, program multi-thread, program komputasi terdistribusi (termasuk DCOM dan CORBAR). ), program TCP, program Web, ActiveX, middleware, program push, dan Anda bahkan dapat menggunakannya untuk menulis program perakitan.
DELPHI dengan cerdik merangkum ISAPI/NSAPI/CGI/WCGI, dll. ke dalam sebuah kelas. Pengguna bisa mendapatkan sistem yang berbeda selama mereka memilih hasil kompilasi selama kompilasi.
Di DELPHI4, InPRise semakin memperkuat dukungannya terhadap pengembangan program Web dan dapat mengembangkan sistem yang lebih baik dan lebih kuat. Berikut ini adalah beberapa masalah umum dalam pengembangan aplikasi web untuk referensi Anda. Jika tidak ada keterangan khusus berarti program berjalan di bawah DELPHI 4.
Bagaimana cara mengembalikan gambar dari aplikasi Web Server?
Aplikasi Server Web tidak hanya dapat menghasilkan dokumen halaman yang kompleks, tetapi juga mengembalikan gambar yang berbeda sesuai permintaan pengguna. Tentu saja, ada metode yang lebih sederhana. Tergantung pada parameter masukan, tag <img src...> juga menunjuk ke alamat URL yang berbeda. Kami tidak menggunakan metode ini di sini, tetapi menggunakan DLL untuk mengembalikan gambar.
Tentunya Anda harus terlebih dahulu membuat penampung halaman (page producer) dengan konten sebagai berikut:
〈html〉
〈body〉Ini adalah ujian〈BR〉〈img src=″/scripts/mydll.dll/picture″〉〈/body〉
〈/html〉
Selanjutnya, kita atur event aksi yang sesuai dengan PathInfo dan kembalikan hasil gambarnya.
(Catatan: Unit JPEG harus disertakan dalam deklarasi unit)
procedure TWebModule1.WebModule1WebActionItem1Action(Pengirim: TObject;Permintaan: TWebRequest; Respons: TWebResponse; var Ditangani: Boolean);
var
Jpg: TJpegImage;
S: Aliran Memori;
mulai
Jpg := TJpegImage.Buat;
mencoba
Jpg.LoadFromFile(′test′);
S := TMemoryStream.Buat;
mencoba
Jpg.SaveToStream(S);
S.Posisi := 0;
Respon.ContentType := ′image/jpeg′;
Respon.ContentStream := S;
//Harus diselesaikan sebelum streaming dirilis
Respon.SendResponse;
Akhirnya
S.Gratis;
akhir;
Akhirnya
Jpg.Gratis;
akhir;
akhir;
Faktanya, cara ini lebih aman dan fleksibel dibandingkan cara sederhana yang disebutkan di atas. Ini dapat digunakan secara fleksibel di beberapa tempat, dan sedikit modifikasi berdasarkan itu dapat menghasilkan efek yang sulit dicapai dengan alat pengembangan umum.
Bagaimana cara menggunakan driver akses asli dengan perpustakaan tautan dinamis (DLL) ISAPI/NSAPI?
Hal ini karena DAO 3.0 atau DAO 3.5 disebut thread-safe (program thread-safe), dan server Web (seperti IIS) akan menghasilkan banyak thread sesuai permintaan pengguna, dan DLL yang sesuai dengan ISAPI juga terdaftar. sebagai benang. Saat ini, ISAPI akan memberi tahu DAO melalui BDE, memberitahukannya bahwa mereka tidak mematuhi peraturan keselamatan benang.
Ada banyak solusi. Jika Anda harus mengakses perpustakaan Access 95/97, Anda dapat mengaksesnya melalui ODBC. ODBC tidak melalui DAO dan juga merupakan program thread-safe. Selain itu, terdapat beberapa set kontrol pihak ketiga yang melaluinya Access 95/97 dapat diakses langsung dari BDE, yang lebih efisien.
Pengguna mengakses DLL ISAPI di server web saya, tetapi melaporkan: "Nama file tidak valid", meskipun file tersebut ada. Omong-omong, database saya ada di server Novell. Mengapa ini?
Anda belum mengonfigurasi pemetaan jalur drive (MAPING) yang sesuai dengan akun IUSR_XXX Anda. Karena Novell tidak menggunakan FAT, maka pemetaan jalur harus ditambahkan secara manual. Tentu saja bisa dijadikan script boot login. Ingatlah bahwa jika Anda menjalankan IIS sebagai server Web dan Anda terlibat dengan Novell, baik sebagai server file atau server database, Anda harus menentukan pemetaan jalur.
"Parameter konfigurasi tidak valid untuk alias {alias_name}" (konfigurasi alias tidak valid), kesalahan seperti itu terjadi ketika saya menyiapkan ODBC DSN dan mengakses server ISAPI/NSAPI melaluinya.
Jika Anda ingin membuat alias ODBC untuk pengguna akses (pengguna IIS), berhati-hatilah saat membuat SISTEM DSN (DNS sistem) daripada membuat "DNS pengguna", meskipun "DNS pengguna" adalah pengaturan default.
Bagaimana cara mendapatkan nama dan alamat IP klien (mesin pengakses)?
Sangat mudah untuk mengimplementasikan fungsi ini menggunakan kontrol TCP. Pilih kontrol TCP dari halaman Internet dan dapatkan yang Anda perlukan secara langsung:
Memo1.Lines.Add(TCP1.LocalHostName);
Memo1.Lines.Add(TCP1.LocalIp);
Tentu saja, jika Anda tidak ingin melakukan ini, ada cara yang lebih rumit:
menggunakan Winsock;
prosedur TForm1.FormCreate(Pengirim: TObject);
var
wVersionRequested : Kata;
wsaData : Data TWSA;
mulai
{Buat WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
akhir;
prosedur TForm1.Button1Click(Pengirim: TObject);
var
p: PHostEnt;
s : array[0..128] dari char;
p2: pchar;
mulai
{dapatkan nama komputer}
DapatkanHostName(@s,128);
p:=GetHostByName(@s);
Memo1.Garis.Tambahkan(p^.h_Name);
{Dapatkan alamat IP mesin}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Memo1.Garis.Tambahkan(p2);
akhir;
prosedur TForm1.FormDestroy(Pengirim: TObject);
mulai
{Lepaskan WinSock}
Pembersihan WSA;
akhir;
Ini adalah unit independen yang disebut WINSOCK, yang dapat Anda tanamkan langsung ke dalam program Anda.
Mengapa saya tidak bisa membuat DLL multi-utas yang sebenarnya di DELPHI 3?
Meskipun wizard ISAPI DLL di DELPHI3 telah menghasilkan banyak kode untuk membuat DLL multi-thread, masih ada kelemahan serius: tidak menyatakan bahwa aplikasi ini adalah program multi-thread. Jadi, Anda perlu menambahkan kalimat:
IsMultiThread := BENAR;
Letakkan kalimat ini di awal blok awal-akhir program DPR, sehingga menjadi kalimat pertama.
Bagaimana saya tahu jika saya sedang terhubung ke Internet?
Cara termudah adalah dengan menggunakan komponen TCP untuk mendapatkan IP Anda saat ini, dan menentukan apakah Anda terhubung ke Internet dengan menilai IP tersebut. Misalnya:
jika TCP1.LocalIp = '0.0.0.0' maka
ShowMessage('Saat ini tidak terhubung ke Internet!');
Perlu dicatat bahwa karena tidak ada perbedaan mendasar antara Internet dan Intranet, umumnya tidak mungkin untuk menentukan apakah terhubung ke Internet atau hanya terhubung ke Intranet. tentu. Anda juga dapat menambahkan komponen PING ke PING situs yang relatif stabil dan cepat. Jika terhubung, berarti Anda memiliki akses ke Internet. Namun, metode ini tidak terlalu serbaguna.
Bagaimana cara mencetak halaman web?
Anda dapat memilih untuk menggunakan metode AutoPrint pada kontrol HTML. Misalnya:
menggunakan Printer;
prosedur TForm1.Button1Click(Pengirim: TObject);
var
Kursor Lama: Kursor;
mulai
OldCur := Layar.Kursor;
dengan Printer lakukan
mulai
MulaiDok;
HTML1.AutoPrint(pegangan);
Judul := HTML1.URL;
Dokumen Akhir;
akhir;
Layar.Kursor := OldCur;
akhir;
Selain itu, Anda juga bisa menggunakan metode PrintPage-nya. Namun saya menyarankan Anda untuk menggunakan AutoPrint, karena kontrol ini lebih fleksibel dan dapat memfilter beberapa konten yang tidak ingin Anda cetak.
Blog Penulis: http://blog.csdn.net/zou5655/