procedura GetPaths # 40; Cerere: TWebRequest; var ScriptPath, LocalPath. șir # 41; ;
ScriptPath: = Cerere. SCRIPTNAME;
ScriptFileName: = ExtractFileName # 40; ParamStr # 40; 0 # 41; # 41; ;
// Eliminați numele EXE / DLL pentru a obține calea
șterge # 40; ScriptPath, Poz # 40; ScriptFileName, ScriptPath # 41; -1. lungime # 40; ScriptFileName # 41; +1 # 41; ;
// Îndepărtează oblicul principal
șterge # 40; ScriptPath, 1. 1 # 41; ;
LocalPath: = ExtractFilePath # 40; ParamStr # 40; 0 # 41; # 41; ;
// Eliminarea ScriptPath ne oferă calea principală
șterge # 40; LocalPath, Poz # 40; ScriptPath, LocalPath # 41; -1. lungime # 40; ScriptPath # 41; +1 # 41; ;
Procedura SetVariable va fi utilizată pentru a inițializa variabilele de care avem nevoie.
procedura SetVariable # 40; var S. String; const Valoare, Implicit. șir # 41; ;
începe
S: = valoare;
dacă S = "atunci
S: = Implicit;
se încheie;
Întreaga esență a scenariului CGI se află în evenimentul OnAction. Să ne uităm în pași.
procedura TWebModule1.WebModule1WebActionItem1Action (Expeditor: TObject;
Cerere: TWebRequest; Răspuns: TWebResponse; var manipulat: boolean);
În primul rând, declarăm câteva variabile locale.
Acum apelați GetPaths pentru a afla calea către scenariu, precum și calea locală. În acest exemplu, vom plasa contoarele noastre în directorul "contoare". Calea fizică va arăta mai degrabă ca "C: \ InetPub \ counters".
GetPaths # 40; Cerere, ScriptPath, LocalPath # 41; ;
LocalPath: = LocalPath + 'Counters';
Apoi, primim toți parametrii parcurși împreună cu apelul scenariului. Parametrii vin la noi prin proprietatea Request.QueryFields. Rețineți că dacă un parametru nu a fost trecut, atunci SetVariable îl setează la valoarea implicită.
cu Cerere. QueryFields începe
Numele fișierului: = LocalPath + Values # 91; 'FileName' # 93; + '.txt';
setVariable # 40; Txt, valori # 91; 'Txt' # 93;. "Sunteți vizitator. astăzi și. vreodată ". # 41; ;
setVariable # 40; FontName, valori # 91; 'FontName' # 93;. 'Arial' # 41; ;
setVariable # 40; FontSize, Values # 91; 'FONTSIZE' # 93;. '10' # 41; ;
setVariable # 40; FontColor, valori # 91; 'FONTCOLOR' # 93;. 'ClWhite' # 41; ;
setVariable # 40; BackgroundColor, Values # 91; 'BackgroundColor' # 93;. 'ClBlack' # 41; ;
Acum trebuie să fim siguri că există un dosar pentru acest contor. Dacă nu este, atunci o creăm pur și simplu.
// Scrieți un nou număr de contor gol dacă nu există
dacă nu FileExists # 40; FileName # 41; apoi începe
AssignFile # 40; fp, FileName # 41; ;
rescrie # 40; fp # 41; ;
WriteLn # 40; fp, 0 # 41; ;
WriteLn # 40; fp, Data # 41; ;
WriteLn # 40; fp, 0 # 41; ;
CloseFile # 40; fp # 41; ;
Deci, dosarul există. Estevstvenno dacă l-am creat, că contorul este egal cu 0, altfel vom citi valorile vechi și le zmenyat, dacă este necesar. Fiți atenți. cu privire la modul în care urmărim numărul total de vizite și vizite pe zi.
// Citiți vechile valori ale contorului
AssignFile # 40; fp, FileName # 41; ;
readln # 40; fp, LastEver # 41; ;
Încă: = LastEver +1;
readln # 40; fp, LastDate # 41; ;
readln # 40; fp, LastToday # 41; ;
dacă Data = LastDate atunci
Astăzi: = LastToday +1
CloseFile # 40; fp # 41; ;
În cele din urmă, trebuie să scrieți noile valori într-un fișier care conține datele contorului.
// Scrieți noile valori ale contorului
AssignFile # 40; fp, FileName # 41; ;
rescrie # 40; fp # 41; ;
WriteLn # 40; fp, Ever # 41; ;
WriteLn # 40; fp, Data # 41; ;
WriteLn # 40; fp, Astăzi # 41; ;
CloseFile # 40; fp # 41; ;
Acum, începeți să creați ceea ce va fi denumit în cele din urmă JPEG. Mai întâi, faceți TForm invizibil care conține TPanel și TMemo. De asemenea, instalați FontName și FontSize.
Formă: = TForm. crea # 40; zero # 41; ;
cu Formă. Fontul începe
Dimensiune: = StrToInt # 40; FONTSIZE # 41; ;
Ne asigurăm că textul pe care am pus în controlul memo, conține o valoare de contor citește din fișierul.
Txt: = Formatare # 40; txt, # 91; Astăzi, vreodată # 93; # 41; ;
Apoi, vom crea un panou. Lățimea și înălțimea vor fi determinate de lățimea textului pe care îl punem. De asemenea, setați cosit pentru efect 3D.
Panou: = TPanel. crea # 40; zero # 41; ;
cu Panoul începe
Lățime: = Formă. Canvas. textwidth # 40; txt # 41; + 9;
Înălțime: = Formă. Canvas. TextHeight # 40; txt # 41; + 9;
Am pus o notă în panoul și setați lățimea și înălțimea sa, precum si culoarea care este specificată în BackgroundColor.
Memo: = TMemo. crea # 40; zero # 41; ;
cu Memo să înceapă
Lățime: = Panou. Lățimea -5;
Înălțime: = Panou. Înălțimea -5;
Culoare: = StringToColor # 40; BackgroundColor # 41; ;
Acum trebuie să facem o imagine a elementului de control pe care l-am creat. Pentru aceasta, creați TBitmap și vopsiți-l cu panoul. Pentru a desena textul pe bitmap.
Bitmap: = TBitmap. Creați;
cu Bitmap să înceapă
Lățime: = Panou. Lățimea -1;
Înălțime: = Panou. Inaltime -1;
Panou. PaintTo # 40; Canvas. Mâner. 0. 0 # 41; ;
Canvas. Perie. Stil: = bsClear;
cu Canvas. Fontul începe
Dimensiune: = StrToInt # 40; FONTSIZE # 41; ;
Culoare: = StringToColor # 40; fONTCOLOR # 41; ;
Canvas. TextOut # 40; 4. 3, Txt # 41; ;
Apoi convertiți bitmap-ul la JPEG. JPEG va fi înregistrat în fluxul de memorie. Acest flux va fi conectat la browser și trimis vizitatorului paginii sub forma unei imagini.
Răspunsul trebuie început
MS: = TMemoryStream. Creați;
cu TJPEGImage. Creează nu începe
atribui # 40; Bitmap # 41; ;
SaveToStream # 40; MS # 41; ;