|
adica Http://www. se inlocuieste prin file://
|
səhifə | 6/16 | tarix | 03.01.2019 | ölçüsü | 1,42 Mb. | | #89992 |
| /
adica Http://www. se inlocuieste prin file://
EXEMPLU: pentru fisierul C:\my_pages\home.htm
se va utiliza urmatoarea adresa URL:
file:///C:/my_pages/home.htm
In cazul unei file din reteaua locala,o fila de genul:
\\servername\C_drive\my_pages\home.htm
se va accesa prin urmatoarea adresa URL:
file://servername/C_drive/my_pages/home.htm
Concret,pentru ca munca d-voastra sa fie cat mai simpla este bine sa
rezervati in unitatea C un folder special pentru filele de tip HTML cu
care lucrati in mod curent,sau pe care le descarcati din reteaua Internet.
Astfel,calea de acces la fila va fi simpla si clara,si puteti scrie o
serie de proceduri automate care selecteaza singure calea de acces.De
exemplu,adaugati un director denumit HTMLTXT in unitatea C si salvati in
acest director cateva file de tip HTML (puteti copia HTMLTXT din Prj44).
Pentru a lucra cu filele locale,puteti scrie un program similar cu cel
din Prj43,dar putin mai dezvoltat:
EXEMPLU: (vezi si Prj44)
Deschideti fila proiect din Prj43 si salvati atat fila cat si proiectul
intr-un nou director,denumit Prj44.Copiati directorul HTMLTXT pe unitatea
C si apoi inlocuiti in Object Inspector proprietatea Text din ComboBox1
cu urmatorul text: file:///C:/HTMLTXT/text1.htm
Tastati F9 si executati aplicatia.In mod normal in fila HTML se va afisa
un text exemplificativ.Pentru a putea utiliza in aplicatiile d-voastra
astfel de file,trebuie sa invatati si limbajul HTML (esentialul poate fi
parcurs intr-o singura zi -vezi www.w3.org/HTML).
Pentru a dezvolta putin aplicatia,adaugati un nou buton standard,
denumit Button1.Scrieti in Caption TEXT / COD,pentru a desemna functia
acestui buton,apoi selectati OnClick din Events si adaugati procedura:
procedure TForm1.Button1Click(Sender: TObject);
begin
HTML1.ViewSource:= not HTML1.ViewSource;
STARTClick(Sender);
end;
Tastati F9 si executati aplicatia.Acum puteti utiliza butonul TEXT / COD
pentru a afisa alternativ textul documentului sau codul sursa.
Puteti utiliza aceasta aplicatie pentru a invata limbajul de editare
HTML.Textele HTML pot fi editate in orice editor de text (MS-DOS,NotePad,
WordPad etc.).Procurati un manual pentru limabjul HTML si exersati cu
documente asemanatoare cu cel intitulat Text1.html.Nu incercati sa inva-
tati "dupa ureche" deoarece riscati sa produceti suprascrieri nedorite
ale memoriei sau chiar disfunctionalitati mai grave,sau cel putin sa va
obisnuiti cu tehnici incomplete sau neadecvate.Pentru a putea utiliza in
retea documentele de tip HTML,acestea trebuie sa respecte toate standarde-
le acestui limbaj.
-40-
Daca documentele de tip HTML sunt la alta locatie decat HTMLTXT,intro-
duceti calea completa de acces.
Browser-ul de internet s-a transformat astfel intr-un obiect simplu
de afisare a filelor de tip HTML.Acum puteti sa personalizati documentele,
astfel incat sa satisfaca toate preferintele d-voastra.
Executati un click pe HTML1 si utilizati proprietatie acestui obiect
pentru a schimba formatul de editare.De exemplu,schimbati ForeColor in
clRed sau utilizati Font si Heading1Font pentru a schimba culoarea si
dimensiunea sau stilul fonturilor.Pentru a schimba culoarea de fond se
poate utiliza BackColor,etc...
Dupa ce documentul are aspectul dorit,poate fi imprimat.Pentru a putea
imprima un document este necesara o procedura auxiliara.In primul rand
adaugati in unitatea d-voastra,in interfata Uses si unitatea Printers.
Acum,linia de cod va arata astfel:
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,OleCtrls,isp3,
StdCtrls,Buttons,ExtCtrls,Printers;
Daca doriti sa adaugati si alte functii in browser-ul d-voastra,va
trebui sa adaugati si unitatile necesare pentru implementarea acestor
functii.
Adaugati in Form un alt buton,denumit Button2 si introduceti in Caption
denumirea acestui buton: IMPRIMA.Apoi,selectati OnClick din Events si
adaugati urmatoarea procedura:
procedure TForm1.Button2Click(Sender: TObject);
var Cursor: TCursor;
begin
Cursor:=Screen.Cursor;
with Printer do begin
BeginDoc;
HTML1.AutoPrint(handle);
Title:=HTML1.URL;
EndDoc;
end;
Screen.Cursor:=Cursor;
end;
Tastati F9 si executati aplicatia.Acum puteti utiliza si butonul IMPRIMA
pentru a tipari textele redactate (cu conditia ca imprimanta sa fie
pornita,activa,incarcata cu hartie etc.).
Nu utilizati aceasta procedura pentru texte prea mari,sau simultan cu
alte operatii.Dupa cum observati,este o procedura simpla care utilizeaza
memoria cursorului pe post de tampon,pentru a prelua textul care trebuie
expediat la imprimanta.Daca dintr-un motiv oarecare,textul nu poate fi
imprimat complet,exista riscul de a bloca memoria inainte ca vechiul
cursor sa fie reinstalat (caz in care calculatorul trebuie oprit si
repornit).Puteti utiliza butonul de imprimare pentru documente scurte,
care nu depasesc cateva pagini.
In continuare,puteti dezvolta acest obiect,adaugand noi butoane si
functii,pentru a satisface necesitatile d-voastra,sau de ce nu,pentru
a dezvolta aplicatii profesionale,cu scop comercial.Pentru a verifica
filele editate,puteti utiliza cu succes programul Internet Explorer.
-41-
Dupa Web Browser,un alt serviciu extrem de utilizat este cel de chat.
Exista o serie intreaga de programe comerciale,destinate special acestui
scop.Cu obiectele descrise anterior,puteti realiza o astfel de aplicatie,
personalizata,care sa va permita conversatia cu colegii din retea.
Obiectele ServerSocket si ClientSocket sunt destul de rudimentare
pentru standardele actuale ale Internet-ului,dar pot fi extrem de utile
pentru retele locale sau pentru mici aplicatii de automatizare cu circuit
inchis(doua sau mai multe calculatoare conectate prin TCP/IP).
EXEMPLU: vezi si Prj45
Salvati o fila noua si proiectul.Adaugati un camp TMemo,apoi un obiect
TServerSocket si unul sau mai multe obiecte TClientSocket.Utilizati pentru
toate socket-urile acelasi numar de port(de exemplu 3333).Puteti utiliza
orice port doriti.Traditional,pentru serviciile standardizate se utilizea-
za urmatoarele porturi: 80 pentru HTTP,21 pentru FTP,110 pentru POP si
25 pentru SMTP.Este bine sa evitati aceste valori atunci cand alegeti
portul de comunicatie pentru aplicatia d-voastra pentru a nu interfera cu
eventualele comunicatii din retea.
Pentru a activa toate aceste obiecte puteti selecta Form si apoi din
Events alegeti OnCreate si atribuiti urmatoarea procedura:
procedure TForm.FormCreate(Sender: TObject);
begin
ServerSocket1.Active:=True;
ClientSocket1.Active:=True;
ClientSocket2.Active:=True;
ClientSocket3.Active:=True;
end;
Astfel,in momentul executiei,toate obiectele vor fi activate,iar serverul
va trece in stare de ascultare si va astepta solicitari.
Similar,pentru a dezactiva toate obiectele se poate utiliza din Form,
evenimentul On Close,cu urmatoarea procedura:
procedure TForm1.FormClose(Sender: TObject;var Action: TCloseAction);
begin
ServerSocket1.Active:=False;
ClientSocket1.Active:=False;
ClientSocket2.Active:=False;
ClientSocket3.Active:=False;
end;
Acum obiectele se pot utiliza pentru a trimite si/sau receptiona
mesaje.Pentru ca serverul sa receptioneze mesajele primite se va utiliza
evenimentul OnClientRead din TServerSocket.Pentru un singur client se
poate utiliza functia ServerSocket.Socket.ReceiveText.
In cazul in care serverul utilizat asteapta pe acelasi port,mesaje de
la mai mult decat un singur client,trebuie dezvoltat un algoriitm simplu
care sa parcurga la fiecare mesaj receptionat toate conexiunile active
si sa preia eventualele mesaje.
Pentru afisarea mesajelor primite se poate utiliza orice metoda de
afisare,dar cel mai comod este sa utilizati un obiect TMemo,deoarece
pastreaza cronologic ultimele mesaje receptionate si poate afisa simultan
mai multe mesaje (in cazul in care comunicati cu mai multe persoane
simultan).Exemplul din Prj45 a fost proiectat pentru trei clienti,dar
se poate adapta la orice alt numar de clienti.
-42-
Pentru doi sau mai multi clienti,se poate utiliza urmatoarea procedura:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var nr1:integer;
text1:string;
begin
for nr1:=0 to ServerSocket1.Socket.ActiveConnections - 1 do
begin
with ServerSocket1.Socket.Connections[nr1] do
begin
text1:=ReceiveText;
if text1 <> '' then
begin
Memo1.Lines.Add(RemoteAddress + ' trimite mesajul:');
Memo1.Lines.Add(text1);
end;
end;
end;
end;
Acum,toate mesajele receptionate de server vor fi afisate in Memo.
Pentru a transmite mesaje cu ajutorul obiectelor ClientSocket se vor
utiliza cate doua campuri TEdit si cate doua butoane,pentru fiecare
client.Unul dintre capurile TEdit va fi utilizat pentru introducerea
mesajului,iar cel de la doilea pentru specificarea adresei IP.
Adresa IP nu poate fi modificata dinamic decat daca conexiunea este
dezactivata.Pentru schimbarea adresei se va utiliza o procedura de genul:
procedure TForm1.SpeedButton1Click(Sender:TObject);
begin
ClientSocket1.Active:=False;
ClientSocket1.Address:=Edit2.Text;
ClientSocket1.Active:=True;
end;
Astfel,la apasarea butonului,conexiunea este intrerupta,se modifica
adresa si apoi se restabileste conexiunea cu noua adresa specificata.
Adresa implicita pentru toti clientii este 127.0.0.1.Aceasta adresa
corespunde cu un terminal neconectat la retea si este acceptabila pentru
orice utilizator.Pentru a incepe o conversatie reala,trebuie introdusa
o adresa IP reala,dupa care se apasa butonul de confirmare OK.
Pentru a transmite mesajul propriu zis,pentru fiecare client se va
asocia un buton si o procedura On Click de genul:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(Edit1.text);
Memo1.Lines.Add('textul expediat: ' + Edit1.Text);
Edit1.Text:=' ';
end;
Este bine ca textul expediat sa fie afisat si in Memo,astfel incat sa
puteti avea o imagine de ansamblu cu intreaga conversatie efectuata.
Dupa expedierea mesajului,TEdit utilizat pentru preluarea datelor este
sters,pentru a permite preluarea mesajului urmator.
Se atribuie o astfel de procedura,pentru fiecare client.
-43-
In continuare,puteti adauga un buton care sa transmita un anumit mesaj
la toate adresele IP cu care sunteti conectati prin clienti.De exemplu,
pentru a transmite textul din TEdit1 la trei clienti diferiti se va uti-
liza un buton cu urmatoarea procedura:
procedure TForm1.Button4Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(Edit1.Text);
ClientSocket2.Socket.Sendtext(Edit1.Text);
ClientSocket3.Socket.SendText(Edit1.Text);
Memo1.Lines.Add('text expediat la toate IP-urile: ');
Memo1.Lines.Add(Edit1.Text);
Edit1.text:=' ';
end;
Daca doriti sa fiti si mai selectivi,puteti adauga pentru fiecare client
cate un buton TRadioButton sau TCheckBox,cu ajutorul caruia sa puteti
selecta clientii la care doriti sa trimiteti un anumit mesaj.
Facultativ,puteti adauga o procedura suplimentara cu ajutorul careia,
serverul trimite automat un mesaj de raspuns,atunci cand primeste un
mesaj de solicitare,dar nu doriti sa raspundeti personal ( se va utiliza
tot un evenimet de tipul On ClientRead).
In cazul in care utilizati frecvent o serie de mesaje prestabilite,
puteti adauga o serie de butoane,care transmit automat mesajul respectiv.
Aplicatia poate fi personalizata,in functie de necesitatile d-voastra.
Principalele avantaje sunt reprezentate de volumul foarte mic de memorie
utilizata (nu ocupa spatiu din memoria de RAM) si de gradul mare de
maleabilitate.Se pot utiliza cu succes pentru actionari si automatizari
de procese elementare ( doar pentru cele care nu necesita o precizie
temporala foarte ridicata,deoarece timpul de stabilire a unei conexiuni
poate fi diferit de la o implementare la alta).
Principala aplicatie,ramane insa conversatia cu colegii,intr-o retea
locala,sau chiar intr-o retea Intranet (Internet cu acces limitat).
Daca aplicatia d-voastra este specializata pentru receptionarea de
informatii,puteti utiliza mai multe obiecte ServerSocket,setate pe porturi
diferite,care receptioneaza mesaje de la serii diferite de clienti.
Mesajele receptionate,pot fi arhivate in tabele,pot fi comparate,pot
fi analizate statistic,pot fi centralizate sau mixate in acceasi inter-
fata,pot declansa proceduri de raspuns automat etc...etc...
Obiectele de tip TSocket sunt proiectate exclusiv pentru transferul
de date de tip text.Nu pot fi utilizate pentru semnale audio-video sau
pentru imagini digitale si date de tip bitmap.Cu putina munca se pot
utiliza pentru a transmite si texte in format HTML,care pot fi apoi
preluate si afisate de un webbrowser,dar nu este nici practic si nici
util.Pentru acest gen de aplicatii,exista obiecte mult mai usor de
utilizat si exploatat(vezi versiunile recente de Delphi).
Desi sunt destul de rudimentare,si cu un numar redus de functii,
obiectele de tip tSocket sunt perfect functionale si in reteaua Internet.
Din acest motiv,este bine sa verificati cu atentie orice aplicatie,inainte
de a incerca utilizarea ei in retea.Este prudent sa verificati aplicatia
intr-o retea locala si apoi sa consultati si un administrator de retea,
inaite de a incerca exploatarea in reteaua Internet(orice eroare de
conceptie poate produce disfunctionalitati grave).
-44- Internet - THTTP
Un alt component extrem de util este THTTP (Hypertext Transport Pro-
tocol).Acest obiect,este destinat pentru transferul de file in format
HTML,atunci cand nu este necesara vizualizarea lor.Se utilizeaza pentru a
importa(cu GetDoc) sau pentru a exporta(cu SendDoc),file in format HTML,
care utilizeaza portul HTTP standard (port=80).Poate fi utilizat fie
impreuna cu un browser,fie separat (in cazul in care datele vor fi proce-
sate fara sa fie necesara vizualizarea lor).In plus,prin proprietatile si
metodele sale,THTTP poate oferii o serie de informatii utile referitoare
la datele transferate (numarul de bytes transferati,portul,adresa,metoda
de transfer,tipul de protocol,codul de raspuns etc.).Clasic,se utilizeaza
pentru a prelua periodic,o anumita fila,de la o anumita adresa.
Pentru a asocia un obiect HTTP,la un browser,copiati exemplul din
Prj44 intr-un director nou (Prj46).Adaugati in Form un obiect de tip
THTTP,un camp TLabel si un nou buton.Redenumiti butonul HTTP si apoi
atribuiti acestui buton urmatoarea procedura OnClick:
procedure TForm1.Button3Click(Sender: TObject);
begin
HTTP1.URL:='file:///C:/HTMLTXT/Text3.htm';
HTML1.RequestDoc(HTTP1.URL);
HTTP1.GetDoc(HTTP1.RemoteHost+HTTP1.Document,'','');
Label1.Caption:='adresa accesata= '+HTTP1.URL;
end;
Pentru a verifica daca documentul a fost preluat,selectati obiectul
THTTP si din Events alegeti OnDocOutput si adaugati urmatoarea procedura:
procedure TForm1.HTTPDocOutPut(Sender: TObject;
const DocOutput: DocOutput);
var b1: variant;
begin
beep;
b1:=HTTP1.BlockResult;
{ Label1.Caption:=b1; }
end;
Acum,in momentul in care documentul solicitat este preluat se va auzi un
beep.
Pentru a verifica daca nu exista nici o eroare,selectati pentru HTTP si
evenimentul OnError si adaugati urmatoarea procedura:
procedure: tForm1.HTTP1Error(Sender:TObject;Number:Smallint;
var Description: WideString; Scode: Integer;const Source,
HelpFile:WideString; HelpContext:Integer;var CancelDisplay:WordBool);
begin
Label1.Caption:=Description;
end;
Compilati si executati programul (F9).In mod normal,se va afisa fila HTML
din ComboBox.Text.La apasarea butonului HTTP,se va afisa fila specificata
in procedura OnClick si se va auzi un beep.Datorita faptului ca este o
fila locala,se va returna un mesaj de eroare de tipul : Error Connecting
Daca utilizati fila in retea,inlocuiti in HTTP.URL fila Text3.htm
printr-o adresa reala.In acest caz,puteti apela GetDoc,cu HTTP.UTL.
Daca nu se returneaza nici unmesaj de eroare,puteti indeparta acoladele
din linia { Label1.Caption:=b1 } pentru a afisa rezultatul operatiei de
preluare a filei.
-45- HTML(limbaj)
LIMBAJUL HTML (notiuni elementare)
Limbajul HTML(Hypertext markup language) necesita un manual separat.
Pentru intelegerea obiectelor si a functiilor care opereaza cu date de
tip text editate in acest limbaj,sunt necesare totusi un minimum de no-
tiuni.
Acest limbaj,a fost special conceput pentru filele din aplicatiile WEB,
cu scopul de a permite utilizarea de formate diferite,pentru date grupate
in aceeasi fila de text.Astfel,se pot utiliza titluri si subtitluri,liste
si tabele,imagini sau obiecte incluse,care utilizeaza fonturi diferite,
cu dimensiuni si culori diferite,sau chiar realizeaza si legatura cu
alte file,sau cu alte date continute in aceeasi fila.
Pentru acest scop,datele dintr-o fila HTML sunt subimpartite in unitati
de indexare mai mici,denumite TAG-uri.Fiecare TAG,contine un anumit tip
de date,cu un anumit format,si cu un anumit mod de executie.Pentru deli-
mitarea unui tag se utilizeaza caracterele < si >.Intre cele doua carac-
tere se include numele TAG-ului,iar datele se incud intre doua astfel de
grupuri: EXEMPLU: date
Pentru a specifica terminarea unui tag,se adauga si semnul /.
Pentru a delimita inceputul unei file se utilizeaza iar pentru a
marca sfarsitul filei se utilizeaza .
O fila HTML,poate fi subimpartita in titluri si date propriu zise.Pentru
acest scop se utilizeaza tag-urile: .... si respectiv
....si
....continutul propriu zis al documentului.....
(vezi si Text4.htm)
Pentru a ingrosa evident caracterele se poate utiliza tag-ul
EXEMPLU: Textul accentuat
Pentru a schimba tipul fontului se poate utiliza
EXEMPLU: Textul dorit
Pentru a schimba culoarea fontului se poate utiliza
EXEMPLU: Culoarea este verde
in expresia hexazecimala care urmeaza dupa caracterul # primele doua
caractere determina culoarea rosie,urmatoarele culoarea verde,iar ulti-
mele culoarea verde.Culoarea rezultata va fi cea determinata de combi-
narea celor trei culori fundamentale (la fel ca functia RGB() ).
Pentru culorile de baza (setul de 16 culori) se poate specifica si
textual numele culorii (color="red" sau color="lime" etc...).
Pentru a schimba dimensiunea fonturilor se poate utiliza
EXEMPLU: Text majorat
Cele trei setari se pot grupa in una singura:
EXEMPLU: Text
Pentru a adauga o cheie de acces (un short-cut) se poate utiliza
accesKey=" ".Cheia de acces va fi apasata impreuna cu tasta Atl(in sis-
temul Windows).De exemplu pentru a genera un short-cut spre un alt docu-
ment,se va utiliza un algoritm de genul:
Cheia de acces este litera s.(Tastati Alt + s)...apoi ENTER !
Va realiza un short-cut spre o fila locala.In mod similar,puteti realiza
un short-cut spre orice adresa de web.
Pentru a adauga comentarii,se va utiliza caracterul
tag-ului,apoi comentariile propriu zise vor fi incluse intre grupuri de
cate doua liniute: --comentariu-- --comentariu2--
EXEMPLU:
Pentru a realiza un tag transparent,se va utiliza semnul # imadiat
dupa <.Tag-urile transparente nu sunt afisate de catre browser,dar
pastreaza un spatiu de memorie si o adresa de indexare,care poate fi
utilizata de catre PageProducer pentru a reformata textul respectiv.
EXEMPLU: vezi Text5.htm si Prj50
Dostları ilə paylaş: |
|
|