Category: Computers

Computers

Live mail issue with Outlook

Recently, I have had a major issue with MS Office 2016 Live mail account. It stopped receiving emails while sending emails was not a problem at all. I had to use Web interface of Live mail. There were several drawbacks because the free Web interface lacks some of the features that are found in MS Outlook Windows app.

I tried to see if the account settings were fine, there were no changes as before of October 10th, 2017. But, aftermath it kept saying that no new emails are present. But in the Live Mail Web interface, there were new emails contained. Thus, it made me think what has happened.

I have tried to do compacting the account, repairing, changing the IMAP from
imap-mail.outlook.com, I tweaked the port but no luck, then I ran into one page:

https://answers.microsoft.com/en-us/windowslive/forum/livemail-email-send/windows-live-mail-and-outlook-mail/6edb5ba6-f9f2-40fd-80a1-fc23cc6fbfe0

And it was recommended to use outlook.office365.com but, still, I could not get the emails, except that on November 2nd, 2017, I received the only couple of emails despite in Live mail Web Interface there were new emails.

On the November 6th, 2017, I decided to go to a radical solution. I deleted the account from the MS Outlook and later I have added it again and I set the parameters Receive imap-mail.outlook.com and Send smtp-mail.outlook.com and then EUREKA I did get all emails.

Advertisements
Computers

Thinking out of the box

Back in 2007, I have worked in one company and we had to go to a restaurant to install our application. When went there I saw that the restaurant was a rotational restaurant. We installed the NCR Point of Sale and then we installed the receipt printer at the counter so it could print the receipt or invoice.

7198wht

NCR Thermal printer NCR 7197

Then we had to install another receipt printer in the kitchen. But to go the kitchen we had to send the cable to the center pole that was holding the restaurant and then to the kitchen. The total distance between the computer and the receipt printer was over 30 meters. The receipt printer could be connected by USB cable or COM port cable but since we had no Com port cable and limitation of the USB cable up to 10 meters according to the technical specification.

 

So, I came up with a quick fix, I told the other guys to go and buy a simple desktop computer and a 40 meters CAT4 network cable and a switch. Then we ran the network cable through the center pole to the kitchen, then I went to the kitchen and configured the desktop computer and I installed the receipt printer. Everyone else was skeptical that it could work but I have insisted that it works.

Then we ran the system, made an order for the kitchen and on the receipt printer of the kitchen the order was printed. So, since that time the orders for the kitchen were printed directly to the kitchen so there was no delay in the order.

Computers

Konvertimi i tekstit nga shkronjat serbe latine në ato cirilike

Nëpër punë të ndryshme kam parë që ka pasur njerëz të kenë mosnjohuri në leximin e shkrimeve me alfabet cirilik. Tani e kam bërë këtë program që e kthen tekstin nga shkronjat latine në ato cirilike si dhe anasjelltas.

Programin mund ta shkarkoni nga këtu: Text ConverterLatin_to_CyrillicCyrillic_to_latin

IT Security

Ca shpjegime në lidhje me sigurinë e kompjuterëve

Në botën e tanishme shfrytëzimi i kompjuterëve është bërë më se i domosdoshëm në shumë aspekte të jetës saqë çdo moment e shfrytëzojmë kompjuterin për të kryer një pjesë të madhe të punëve ditore. Të lidhurit e kompjuterit me botën e internetit, që ofron një mori të mirash, por edhe një mori të këqijash, hap edhe një portë për infiltrimin e softuerëve keqbërës, që me aktivitetet e tyre të ndryshme për nga natyra e të punuar pengojnë në punën normale të kompjuterit tuaj.

MaxPixel.freegreatpicture.com-It-Security-Cyber-Security-Computer-Security-1784985

Softuerët keqbërës janë të dizajnuar në mënyrë që të punojnë në mënyrë të fshehtë pa u diktuar nga përdoruesi i zakonshëm i kompjuterit. Disa programe keqbërëse në një moment të caktuar nga vet zhvilluesi i tyre aktivizohen dhe bllokojnë punën e kompjuterit. Disa të tjerë e zënë hapësirën e diskut dhe në këtë mënyrë ia zvogëlojnë mundësitë e kompjuterit të punojë si duhet, pasi që një pjesë goxha e madhe në sistemin operativ të Microsoft e përdor si pagefile.sys. Kjo është një memorie punuese dytësore, pasi që memorie punuese parësore është RAM memoria. Kjo memorie përdoret pasi që ta hapni një program të punoni me të, të mbaroni punë me të tani ta mbyllni. Programi në fakt në mbyllet në tërësi por bartet nga RAM memoria në pagefile.sys, pastaj po të ndodh ta hapni për së dyti programin e njëjtë ai do të ekzekutohet më lehtë. E këto programe keqbërëse e zvogëlojnë hapësirën e gatshme kështu që ky pagesfile.sys zvogëlohet dhe në këtë mënyrë kompjuteri punën më ngadalë. Disa programe tjera keqbërëse e ngarkojnë shumë procesorin sa që rëndohet shumë puna. Disa virus janë të specializuar në atë mënyrë që të shpërndahen në tërë rrjetin e brendshëm kështu është më problem heqja e viruseve të tillë.

  • Viruset kompjuterik
  • Krimbat (Worms),
  • Kuajt e Trojës (trojan horses),
  • Vjedhësit e informatave (spyware),
  • Reklama të pandershme (dishonest adware),
  • Vepra dhe vegla kriminale (crimeware) si dhe
  • Vegla rrënjësore (Rootkits)
  • Veglat Ransomware – përfitim ilegal

Virusët kompjuterik

Virusët kompjuterik i hasim kudo, ata zakonisht vijnë si bashkëngjitje në postat elektronike (e-mail), pastaj në pajisjet memorie të largueshme siç mund të jenë CD, DVD, BluRay Disk, USB memorie etj. Në kohërat e hershme disketat kanë qenë burim kryesor i viruseve ndërsa tash janë të paraqitura shumë burime të mundshme të viruseve. Gjatë historisë ka pasur virus të ndryshëm që kanë shërbyer për të kryer vepra të ndryshme që nga bllokimi i sektorit nismëtar – boot sektor deri te fshirja e të gjithë skedarëve që gjenden në disk por jo nëse në diskun e fortë ju keni disa particione – virusët e tillë i fshijnë shënimet veç në particionin e parë.

Krimbat (Worms)

Krimbat janë programe keqbërëse që e zënë hapësirën e diskut si dhe në disa raste janë edhe mass mailer që i marrin të gjitha adresat nga kompjuteri jua dhe i dërgohet një kopje. Rëndom në MSN Messenger, Outlook Express si dhe Outlook kanë shprehur aktivitetin e tyre këto programe keqbërëse pasi që përmes këtyre programeve kryesisht janë shpërndarë, por ka raste që edhe përmes mediumeve tjera të shpërndahen kryesisht me anë të USB memorieve që përmes një skedari të quajtur autorun.inf e ekzekuton virusin dhe krimbin etj.

Kuajt e trojës (trojan horses)

Kuajt e Trojës (trojan horses) – janë programe keqbërëse por puna e tyre e vetme është që pasi që të instalohen në kompjuterin tuaj të hap një port ku personi që e ka dërguar atë të merr kontrollin mbi kompjuterin tuaj. Pastaj, keqbërësi mund të instalojë çfarëdo programe në kompjuterin tuaj e për disa do të flasim më vonë. Eliminimi i këtyre programeve kërkon aftësi të nivelit të lartë pasi që nuk mjafton thjeshtë të hiqet programi keqbërës por edhe mbyllja e portit(eve) që ky program keqbërës mund t’i ketë hapur fillimisht.

Vjedhësit e informatave (spyware)

Vjedhësit e informatave (spyware)– janë programe keqbërëse me efekt në aspektin financiar sidomos për ata persona që bëjnë transaksione bankare. Nëse kompjuteri juaj është i infektuar me të paktën një vjedhës të informatave atëherë nofka dhe fjalëkalimi që përdorni për tu kyçur në ueb faqe të ndryshe për shit-blerje siç është ebay.com. Ky program është i dizajnuar t’i mbledhë të dhënat e bankave në mënyrë që personi që ua ka dërguar të mund të merr para nga llogarit tuaja bankare.

Reklama të pandershme (dishonest adware)

Reklama të pandershme (dishonest adware janë programe që kur bleni një tufë të softuerëve, ju vijnë edhe reklama për programe tjera që nuk iu interesojnë. Nga zhvilluesit kjo shikohet si një mënyrë për shpagimin e punës së tyre duke reklamuar programet e tyre në këtë mënyrë.

Vepra dhe vegla kriminale – Crimeware

Vepra dhe vegla kriminale, këtu përfshihen të gjitha programet keqbërëse që merren me vjedhjen e informatave me anë të keylogger (program për regjistrimin shtypjeve te tasteve në tastierë), me anë të të cilëve zakonisht te postat elektronike (e-mail) vidhet nofka dhe fjalëkalimi për qëllime të caktuara siç mund të jenë presione morale, ekonomike dhe politike, shantazhe, përftimi i fjalëkalimeve nga memoria e përkohshme e sistemit etj. Me një fjalë të gjitha këto veprime janë të sanksionueshme me ligj.

Vegla rrënjësore (Rootkits)

Veglat rrënjësore – këto programe keqbërëse instalohen në kompjuterit tuaj pas hapjes së portit nga ana e kuajve të Trojës dhe shërbejnë për marrjen e funksionalitetit administrativ të kompjuterit në largësi, që do të thotë që keqbërësi mund të jetë në anën tjetër të botës dhe ta ketë kontrollin në nivel administrativ të kompjuterit tuaj. Në këtë mënyrë ai/ajo mund të bëjë çfarë të dojë në kompjuterin tuaj dhe ju nuk mund ta vëreni fare punën e tij.

Veglat Ransomware – përfitim ilegal

Veglat ransomware – përfitim ilegal, janë programe keqbërëse që zakonisht merren përmes bashkëngjitjes në postën elektronike apo përmes klikimit në vjegëza që në mënyrë direkte e shkarkon programin keqbërës. Programi funksionalitetin e tij e ka të tillë që i enkripton skedarët e kompjuterit dhe tani kërkohet që të paguhet një shumë e caktuar kryesisht me monedha virtuale siç është Bitcoin. Por, edhe nëse kryhet pagesa e tarifës së kërkuar nuk të garantohet se mund t’i rikthesh të dhënat e tua që janë të enkriptuara.

Kështu që për tu mbrojtur nga këto të këqija ne duhet që çdo kompjuter ta pajisim me programe për mbrojtje nga virusët si dhe të pajisur me murin e zjarrtë (Firewall). Si sisteme më të sigurta paraqiten ato programe që janë të integruara edhe si Firewall edhe si Antivirus. Këto programe na mbrojnë edhe nga sulmet e hakerëve të ndryshëm si dhe bëjnë mbrojtje ndaj infektimit të kompjuterit tuaj me anë të USB Memorieve. Gjithashtu është e rëndësishme që përditësimi i sistemit operativ si dhe i sistemeve të sigurisë të jetë në nivel të lartë pasi që në këtë mënyrë eliminohen disa lëshime të mundshem në pjesë të ndryshme të sistemeve operative që i kemi në dispozicion.

Computers

Programimi në Python

Përshëndetje ky është një mësim i thjeshtë se si të përdorim klasë e Python dhe të ruajmë të dhëna në bazën e të dhënave MySQL ose MariaDB.

Kodi:

 
# coding=utf8
 # importimi i ndërlidhësit të mysql dhe riemërtimi i saj si mariadb
import mysql.connector as mariadb 
 

# Klasa Person
class Person():
 cursor = 0; # ndryshore globale kursori i bazës së të dhënave
 sleeping = 0; # ndryshore globale ndryshore e cila e ruan gjendjen e fjetur
 
 mariadb_connection = 0; # deklarimi i ndryshorës globale për lidhjen me bazën e të dhënave
 
 def __init__(self): # konstruktori i klasës 
 self.sleeping = 0; #rivendosja e gjendjes së zgjuar
 self.personalID = ""; # pastrimi i ndryshores 
 self.employeeName = "";# pastrimi i ndryshores 
 self.employeeJobDescription = "";# pastrimi i ndryshores 
 self.employeeAddress = "";# pastrimi i ndryshores 
 self.employeeCity = "";# pastrimi i ndryshores 
 self.employeePhone = "";# pastrimi i ndryshores 
 
 #konstruktori i plotë
 def __init__(self, personalID= None, employeeName= None, employeeJobDescription= None, employeeAddress= None, employeeCity= None, employeePhone= None): 
 self.personalID = personalID; #pasimi i vlerës 
 self.employeeName = employeeName;#pasimi i vlerës 
 self.employeeJobDescription = employeeJobDescription;#pasimi i vlerës 
 self.employeeAddress = employeeAddress;#pasimi i vlerës 
 self.employeeCity = employeeCity;#pasimi i vlerës 
 self.employeePhone = employeePhone;#pasimi i vlerës 
 self.mariadb_connection = mariadb.connect(user='root', password='', database='flowershop'); # krijimi i lidhjes me db
 self.cursor = self.mariadb_connection.cursor(); # krijimi i kursorit dhe bartja në ndryshoren globale


 def insert(self): # metodë për futjen e të dhënave në bazën e të dhënave
 try: # provon ta ekzekutojë strukturën
 
 self.cursor.execute("INSERT INTO employee( "+
 " personalID, "+
 "employeeName, "+
 "employeeJobDescription,"+
 " employeeAddress, "+
 "employeeCity, "+
 "employeePhone) VALUES (%s, %s, %s, %s, %s, %s)", (
 self.personalID, 
 self.employeeName, 
 self.employeeJobDescription, 
 self.employeeAddress, 
 self.employeeCity, 
 self.employeePhone));
 self.mariadb_connection.commit(); # rëndom auto_commit është e pasivizuar dhe duhet bërë commit
 print("Data are stored perfectly.");
 except ValueError:
 self.mariadb_connection.rollback(); # nëse ka ndodhur ndonjë problem transaksioni dështon
 print("Data are not stored.");
 return ; 
 
 def sleep(self): # metodë për të nisur fjetjen
 if(self.sleeping == 0): #kontrollon nëse personi është i zgjuar
 print("Person " + self.employeeName + " is sleeping"); 
 self.sleeping = 1; # e vë gjendjen 1 te self.sleeping që do të thotë personi është duke fjetur
 else:# përndryshe
 print("Person " + self.employeeName + " is already sleeping"); 
 return;
 
 def wakeup(self):# metodë për të nisur zgjimin
 if(self.sleeping == 1): #kontrollon nëse personi është i fjetur
 self.sleeping = 0; # e vë gjendjen 0 te self.sleeping që do të thotë i zgjuar
 print("Person " + self.employeeName + " is awake."); 
 else:# përndryshe
 print("Person " + self.employeeName + " is not sleeping to be woken up");
 
 def walk(self): # metodë për të nisur zgjimin
 if(self.sleeping == 0):# kontrollon nëse personi është i zgjuar
 print("Person " + self.employeeName + " is walking"); 
 else:# përndryshe
 print("Person " + self.employeeName + " can't walk he is sleeping");
 return;
 
 def run (self):# metodë për të nisur vrapimin
 if(self.sleeping == 0):# kontrollon nëse personi është i zgjuar
 print("Person " + self.employeeName + " is running"); 
 else:# përndryshe
 print("Person " + self.employeeName + " can't run he is sleeping");
 return;
 
 # inicializimi i ndryshores p me instancën e klasës Person
p = Person(employeeName="Ahmet");
 # ekzekutimi i metodave të klasës Person
p.sleep(); 
p.walk();
p.wakeup();
p.walk();
p.run();

Nëse duam t’i ruajmë të dhënat e një punëtori të ri atëherë duhet t’i inicializojmë të gjitha parametrat e konstruktorit si në vijim:

p = Person("131213123123", "Ahmet Murati", "Software Developer", "Murati Road 1", "Murati", "+38349000000"); 
p.insert();

Dhe dalja nga ekzekutimi:
Person Ahmet is sleeping
Person Ahmet can’t walk he is sleeping
Person Ahmet is awake.
Person Ahmet is walking
Person Ahmet is running

Projekti është i bërë me Netbeans 8.2 dhe me Python 3.4
Person in Python

Computers

Programi im i parë komplet i bërë në Turbo Pascal 1999

(****************************************************************************)
{ Ahmet Murati, Detyra 1, Kursi 1d}
{ Punuar me TPX.EXE p‰r shkak se Turbo.exe jep k‰t‰ mesazh: }
{ Not enough memory to run program }
(****************************************************************************)
program Detyra;
(****************************************************************************)
{ Librarit‰ q‰ is shfryt‰zon programi }
uses Graph,Crt, TutConst, Drivers, Objects, Views, Menus, App, MsgBox;
(****************************************************************************)
{ Blloku p‰r deklarimin i Tipeve }
TYPE
DetyraApp = Object(TApplication)
Constructor Init;
PROCEDURE Shto;
PROCEDURE Permbajtja;
PROCEDURE kerkesa_a;
PROCEDURE kerkesa_b;
PROCEDURE DoAboutBox;
PROCEDURE HandleEvent(VAR Event: TEvent); virtual;
PROCEDURE InitMenuBar; virtual;
PROCEDURE InitStatusLine; virtual;
END;
VEND =1..5;
gjinia =(m,f);
pergjigje=RECORD
emer,mbiemer: STRING [15];
mosha:INTEGER;
g:gjinia;
zgjedhja: ARRAY [1..5] OF VEND;
END; { Fundi i Bllokut t‰ deklarimeve t‰ tipeve }

(****************************************************************************)

CONST n=30; {Konstatet}

(****************************************************************************)

PROCEDURE Ngj(tc,tb:word);FORWARD; {Deklarimi FORWARD i procedurave}
PROCEDURE DESKTOPI;FORWARD; {q‰ kan‰ vler‰ t‰ nj‰t‰ p‰rdorimi}
PROCEDURE box(x1,y1,x2,y2:INTEGER);FORWARD;

(****************************************************************************)

PROCEDURE INTRO;
{Kjo PROCEDURE Intro ‰sht‰ krijuar si uvertyr‰ e programit.}
LABEL PA_GRAFIK;
CONST pr=’presents’; th= ‘D.J. ThemA’; dItem= ‘Detyr‰ Kursi 1′;
VAR i,j,grDriver,wid,VAR1,leng,x,y:INTEGER;
ErrorCode:INTEGER;
Begin
grDriver:=detect;
InitGraph(grdriver,VAR1,”);SetTextStyle(7,0,4);
ErrorCode:=GraphResult;
if ErrorCode <> grOk then goto pa_grafik;
SetTextJustify(1,1); x:=GetMaxX div 2 ;Y:=GetMaxY div 2; Delay(2000);
FOR i:= 1 TO 63 DO
Begin SetRGBPalette(2, 0, i, i); Setcolor(2);delay(15);outtextxy(x,y,th);
SetColor(2); DELAY(10); OutTextXY(x,200,’Ahmet Murati’);
END; DELAY(850);
FOR i:= 60 DownTO 0 DO
Begin SetRGBPalette(2, 0 , i, i); SetColor(2);DELAY(15);OutTextXY(x,y,th);
END;
ClearViewPort;
DELAY(500);
SetRGBPalette(2, 63, 0,63);SetTextStyle(10,0,5);
SetColor(2);OutTextXY(x,y,pr);
VAR1 := TextWidth(pr) div 2;
j:=TextHeight(‘a’)div 2;
DELAY(2500);
FOR i:= 1 TO VAR1 DO
Begin DELAY(10);
SetColor(11);
LINE (x-VAR1+i-1,y-10,x-VAR1+i-1,y+49);
LINE (x+VAR1-i+1,y-10,x+VAR1-i+1,y+49); SetColor(0);
LINE (x-VAR1+i-2,y-10,x-VAR1+i-2,y+49);
LINE (x+VAR1-i+2,y-10,x+VAR1-i+2,y+49);
LINE (x-VAR1+i,y-10,x-VAR1+i,y+49);
LINE (x+VAR1-i,y-10,x+VAR1-i,y+49); END;
FOR i:= 1 TO 36 DO
Begin DELAY(10);
LINE (318,225+i,320,225+i); LINE (318,300-i,320,300-i);
END;
FOR i:= 262 DownTO 100 DO
Begin DELAY(1);
PutPixel(318,i,11); PutPixel(320,i,11);
PutPixel(318,i+5,0); PutPixel(320,i+5,0);
END;
SetColor(0);
LINE (318,101,318,105); LINE (320,101,320,105);
FOR i:= 0 TO 100 DO
Begin DELAY(10);
PutPixel(319-i,100,11); PutPixel(319+i,100,11);
END;
FOR i:= 0 TO 100 DO Begin DELAY(3); PutPixel(319-i,100,11);
PutPixel(319+i,100,11); END;
FOR i:= 0 TO 80 DO Begin DELAY(3); PutPixel(219,100+i,11);
PutPixel(419,100+i,11); END;
FOR i:= 0 TO 100 DO Begin DELAY(3); PutPixel(219+i,180,11);
PutPixel(419-i,180,11); END; DELAY(500);
FOR i:= 1 TO 60 DO Begin SetTextStyle(7,0,1);
SetRGBPalette(2, 0, i, i);
SetColor(2);DELAY(10);OutTextXY(x,y-100,dItem);
END; DELAY(850);
FOR i:= 60 DownTO 0 DO
Begin
SetRGBPalette(2, 0, i, i);SetTextStyle(7,0,1);
SetColor(2);DELAY(10);OutTextXY(x,y-100,dItem);
LINE (219,100,219,180); LINE (419,100,419,180);
LINE (219,100,419,100); LINE (219,180,419,180);
END; closegraph; PA_GRAFIK: END;
(****************************************************************************)
FUNCTION kenga(n:BYTE):STRING;
Begin CASE n OF
1:kenga:=(‘When a man loves a woman ‘); 2:kenga:=(‘E kam emrin kosovar ‘);
3:kenga:=(‘Krah p‰r krah me U€K-n‰ ‘); 4:kenga:=(‘Unchain my heart ‘);
5:kenga:=(‘Dov”‚ l”amore ‘);6:kenga:=(‘Amore erotique ‘);
7:kenga:=(‘Said I loved but I lied ‘); 8:kenga:=(‘Marshi i U€K-s‰ ‘);
9:kenga:=(‘Give it To me baby… ‘); 10:kenga:=(‘Wind of change ‘);
11:kenga:=(‘Twister faith ‘); 12:kenga:=(‘Oxygen 1O ‘);
13:kenga:=(‘What a falling in love ‘); 14:kenga:=(‘Ushtarit tim ‘);
15:kenga:=(‘Born to touch your feelings ‘); 16:kenga:=(‘Fr Elize ‘);
17:kenga:=(‘Big Big Girl ‘); 18:kenga:=(‘Harroj ‘);
19:kenga:=(‘Would you… ‘); 20:kenga:=(‘Equador ‘);
21:kenga:=(‘Iho de la luna ‘); 22:kenga:=(‘You and me ‘);
23:kenga:=(‘Get freaky ‘); 24:kenga:=(‘Sound of music ‘);
25:kenga:=(‘Time to say goodbay ‘); 26:kenga:=(‘Out of dark ‘);
27:kenga:=(‘Rock me Amadeus ‘); 28:kenga:=(‘Jeany ‘);
29:kenga:=(‘Emotional ‘); 30:kenga:=(‘Naked ‘);
ELSE kenga:=’—————————‘;
END;END;
(****************************************************************************)
FUNCTION singer(n:BYTE):STRING;
Begin
CASE n OF
1:singer:=(‘Michael Bolton ‘); 2:singer:=(‘Shkurte Fejza ‘);
3:singer:=(‘Mjellma ‘); 4:singer:=(‘Joe Cocker ‘);
5:singer:=(‘Cher ‘); 6:singer:=(‘Carolina Marquez ‘);
7:singer:=(‘Michael Bolton ‘); 8:singer:=(‘Arif Vlladi ‘);
9:singer:=(‘OffSpring ‘);10:singer:=(‘Scorpions ‘);
11:singer:=(‘Emilia ‘);12:singer:=(‘Jean Michel-Jarr‚ ‘);
13:singer:=(‘Chris Rea ‘);14:singer:=(‘Edona Llalloshi ‘);
15:singer:=(‘Scorpions ‘);16:singer:=(‘Johan Sebastian Bach ‘);
17:singer:=(‘Emilia ‘);18:singer:=(‘Burhan Halili ‘);
19:singer:=(‘Touch & Go ‘);20:singer:=(‘Sash ‘);
21:singer:=(‘Mejan¢ ‘);22:singer:=(‘Scorpions ‘);
23:singer:=(‘Music Instructor ‘);24:singer:=(‘Jean Micheal-Jarr‚ ‘);
25:singer:=(‘A. Bocello & S.Brightmen’);26:singer:=(‘Falco ‘);
27:singer:=(‘Falco ‘);28:singer:=(‘Falco ‘);
29:singer:=(‘Falco ‘);30:singer:=(‘Falco ‘);
ELSE singer:=’———————–‘;
END;END;
(****************************************************************************)
{ Procedura spc mbush nj‰ varg t‰ caktuar me hapsira boshe }
PROCEDURE spc(n:BYTE); VAR i:INTEGER; Begin FOR i:= 1 TO n DO WRITE(#32); END;
{ Fundi i procedur‰s SPC }
(****************************************************************************)
{ Funksioni Merr_str merr nj‰ varg t‰ caktuar me shkrojna dhe disa
shenja t‰ caktuara.}
FUNCTION Merr_Str(n:BYTE;VAR abort:BOOLEAN):STRING;
VAR poz,x,y,i: INTEGER; ch:char; str1:STRING; LABEL a1;
Begin abort:=FALSE; x:=WhereX;y:=WhereY; poz:=1;
str1:=”; GoToXY(x,y); FOR i:=1 TO n DO WRITE(‘ú’);GoToXY(x,y);
a1: ch := ReadKey;
CASE ch OF ‘ ‘,’A’..’Z’,’a’..’z’,’0′..’9′,’‰’,’‡’,’€’:Begin
If poz <= n then Begin str1 := str1 + ch; poz := poz + 1; WRITE(ch);
END; goto a1; END;
chr(8) : Begin if length(str1) < 2 THEN str1 :=”; IF poz > 1 THEN Begin
delete(str1,length(str1),1); WRITE(#8,’ú’,#8); poz := poz – 1; END;
goto a1;END;
#27:Begin merr_str:=”;abort:=true;END;
chr(13): Merr_str:=str1; ELSE goto a1;
{Fundi i Funksionit Merr_Str.}END;END;
(****************************************************************************)

(****************************************************************************)
{ Funksioni Merr_Num merr num‰r t‰ plot‰}
FUNCTION merr_num(n:BYTE; abort:BOOLEAN):longint;
VAR x,y,poz:BYTE; c:char; m:real; i,code:INTEGER;
LABEL a1;
Begin
x:=WhereX; y:=WhereY;
poz:=1; Merr_num := 0; m:= 0;
GoToXY(x,y); FOR i:=1 TO n DO
Write(‘ú’); GoToXY(x,y);
a1: c:= ReadKey; m := Trunc(m);
CASE c OF
‘0’: Begin
IF ((poz > 1) and (poz <= n)) THEN Begin
m := m * 10; Write(c); poz := poz + 1;
END; Goto a1; END;
‘1’..’9′: Begin
IF poz <= n THEN Begin
val(c,i,code); m := (m * 10) + i; WRITE(c);
poz := poz + 1; END;
goto a1;
END;
#8: Begin IF poz > 1 THEN Begin WRITE(#8,’ú’,#8); poz:=poz-1;
m := m/10; END; GoTo a1; END;
#27: Begin abort := true;END;
#13: Begin merr_num := trunc(m); END; ELSE GoTo a1;
END END; { P‰rfundimi i procedur‰s Merr_Num }
(****************************************************************************)

(****************************************************************************)
{ Procedura Desktop kthen pamjen e desktopit.}
PROCEDURE Desktopi; VAR i,j:INTEGER;
Begin Ngj(1, 7);
FOR i:=1 TO 80 DO FOR j:= 2 TO 24 DO Begin
GoToXY(i,j); WRITE(‘°’); END; END;
{ Fundi i PROCEDUREs DESKTOPI }
(****************************************************************************)

(****************************************************************************)
PROCEDURE prit; {Procedura prit}
VAR c:char; Begin c:=ReadKey; END; {Fundi i procedur‰s prit}
(****************************************************************************)

(****************************************************************************)
{ Procedura Ngj b‰n rregullimin e ngjyrave n‰ vEND se t‰ shkruhen
dy intruksionet e bibliotek‰s CRT, TextColor dhe TextBackground }
PROCEDURE Ngj(tc,tb:WORD); Begin textcolor(tc); textbackground(tb);END;
(****************************************************************************)

(****************************************************************************)
{ Procedura BOX vizaton nj‰ Kuti nd‰rmjet koordinatave t‰ dh‰na.}
PROCEDURE box{(x1,y1,x2,y2:INTEGER)}; VAR boxwdth,i,j:INTEGER;
Begin BoxWdth := x2 – x1 + 1; GoToXY(x1,y1);Write(‘Ú’);
FOR i:= 1 TO BoxWdth – 2 DO Write(‘Ä’);Write(‘¿’);
FOR i := y1 +1 TO y2 -1 DO Begin GoToXY(x1,i);Write(‘³’);
FOR j := 1 TO boxwdth – 2 DO WRITE(‘ ‘);WRITE(‘³’); END;
GoToXY(x1,y2);WRITE(‘À’); FOR i:= 1 TO (boxwdth – 2) DO WRITE(‘Ä’);
WRITE(‘Ù’); END; { Fundi i PROCEDUREs BOX }
(****************************************************************************)

(****************************************************************************)
{CONSTRUCTOR-i ‰sht‰ metod‰ speciale q‰ inicializon nj‰ objekt q‰ p‰rmban
metoda virtuale.}
CONSTRUCTOR DetyraApp.Init;
Begin INHERITED Init; END;
{Fundi i CONSTRUCTOR-it.}
(****************************************************************************)
{Kjo procedur‰ shfaq list‰n e t‰ anketuar‰ve}
PROCEDURE Te_anketuarit;
VAR rest,i,l:INTEGER; rec:pergjigje; f1: FILE OF pergjigje;
zgj,delta:BYTE; ch: CHAR; abort:BOOLEAN;
LABEL a1,a2,a4,fundi;
Begin ngj(1,7); box(05,6,75,19);
GoToXY(30,6);WRITE(‘Lista e t‰ anketuar‰ve’);
Begin ASSIGN (f1,’a:\Anketa.ahm’); RESET(f1); zgj:=1; l:=FileSize(f1);
a4: ;GoToXY(25,2);
GoToXY(15,7);WRITE(‘ Emri Mbiemri Mosha Gjinia’);
GoToXY(11,8);WRITE(‘ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ’);
a1: SEEK(f1,zgj-1);
READ (f1, rec);
GoToXY(11, 9); WRITE(zgj:2,’.’);
GoToXY(15, 9);WRITE(rec.emer);FOR rest := length(rec.emer) TO 15 DO WRITE(‘ ‘);
GoToXY(35, 9);WRITE(rec.mbiemer);FOR rest := length(rec.mbiemer) TO 15 DO WRITE(‘ ‘);
GoToXY(54, 9);WRITE(rec.mosha:3,’ vje‡’:5);
GoToXY(58, 9);
CASE rec.g OF
m:Begin WRITE(‘Mashkull’);END;
f:Begin WRITE(‘Fem‰r ‘);END;
END;
GoToXY(67,17); WRITE(zgj:2,’/’,l);
GoToXY(8,17);WRITE(‘Gjithesej ndodhen ‘,l:3,’ rekorde ne skedarin kryesor. ³’);
GoToXY(8,11);WRITE(‘Pref. 1: ‘,kenga(rec.zgjedhja[1]),’ úúú ‘,singer(rec.zgjedhja[1]));
FOR i:= length(kenga(rec.zgjedhja[1])) TO 25 DO WRITE(‘ ‘);
GoToXY(8,12);WRITE(‘ 2: ‘,kenga(rec.zgjedhja[2]),’ úúú ‘,singer(rec.zgjedhja[2]));
FOR i:= length(kenga(rec.zgjedhja[2])) TO 25 DO WRITE(‘ ‘);
GoToXY(8,13);WRITE(‘ 3: ‘,kenga(rec.zgjedhja[3]),’ úúú ‘,singer(rec.zgjedhja[3]));
FOR i:= length(kenga(rec.zgjedhja[3])) TO 25 DO WRITE(‘ ‘);
GoToXY(8,14);WRITE(‘ 4: ‘,kenga(rec.zgjedhja[4]),’ úúú ‘,singer(rec.zgjedhja[4]));
FOR i:= length(kenga(rec.zgjedhja[4])) TO 25 DO WRITE(‘ ‘);
GoToXY(8,15);WRITE(‘ 5: ‘,kenga(rec.zgjedhja[5]),’ úúú ‘,singer(rec.zgjedhja[5]));
FOR i:= length(kenga(rec.zgjedhja[5])) TO 25 DO WRITE(‘ ‘);
a2: ch:=READKey;
CASE ch OF
‘H’:Begin IF zgj > 1 THEN Begin zgj := zgj – 1; GoTo a1; END; GoTo a2;END;
‘P’:Begin IF zgj < l THEN Begin zgj := zgj + 1; GoTo a1; END; GoTo a2;END;
#27:Begin exit; ;END ELSE GoTo a2; END; fundi: close(f1); END; END;
{ Fundi i procedur‰s q‰ liston t‰ anketuarit}
(****************************************************************************)

(****************************************************************************)
{Kjo procedur‰ liston k‰nget q‰ marin pjes‰ n‰ konkurrim}
{Fillimi i procedur‰s lista_Kenge}
PROCEDURE lista_Kenge;
CONST
a = ‘ Nr.Rend. Titulli K‰ndon’;
b1 = ‘ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ’;
type str = RECORD Kg:BYTE; kendon:BYTE; END;
VAR i:BYTE; c: CHAR; LABEL poz1,poz2,fill,fundi,lex;
Begin DESKTOPI;Ngj(1,7);
box(10,12,79,20);GoToXY(40,12);
GoToXY(37,12);WRITE(‘ Lista e k‰ng‰ve ‘);
GoToXY(12,13);WRITE(a);GoToXY(12,14);WRITEln(b1); i:=1;
GoToXY(15,15); WRITE((1):2,’.’,kenga(1):30,’ úúúú ‘,singer(1):20);
GoToXY(15,16); WRITE((2):2,’.’,kenga(2):30,’ úúúú ‘,singer(2):20);
GoToXY(15,17); WRITE((3):2,’.’,kenga(3):30,’ úúúú ‘,singer(3):20);
GoToXY(15,18); WRITE((4):2,’.’,kenga(4):30,’ úúúú ‘,singer(4):20);
GoToXY(15,19); WRITE((5):2,’.’,kenga(5):30,’ úúúú ‘,singer(5):20);
fill:
c:=readkey;
case c of
#72:BEGIN IF i=26 THEN GOTO POZ1;
Inc(i);
GoToXY(15,15); WRITE((i):2,’.’, kenga(i):30,’ úúúú ‘, singer(i):20);
GoToXY(15,16); WRITE((i+1):2,’.’,kenga(i+1):30,’ úúúú ‘,singer(i+1):20);
GoToXY(15,17); WRITE((i+2):2,’.’,kenga(i+2):30,’ úúúú ‘,singer(i+2):20);
GoToXY(15,18); WRITE((i+3):2,’.’,kenga(i+3):30,’ úúúú ‘,singer(i+3):20);
GoToXY(15,19); WRITE((i+4):2,’.’,kenga(i+4):30,’ úúúú ‘,singer(i+4):20);
poz1:
END;
#80:begin IF i=1 THEN GOTO POZ2;
IF i=2 THEN GOTO POZ2;
Dec(i);
GoToXY(15,15); WRITE((i):2,’.’, kenga(i):30,’ úúúú ‘, singer(i):20);
GoToXY(15,16); WRITE((i+1):2,’.’,kenga(i+1):30,’ úúúú ‘,singer(i+1):20);
GoToXY(15,17); WRITE((i+2):2,’.’,kenga(i+2):30,’ úúúú ‘,singer(i+2):20);
GoToXY(15,18); WRITE((i+3):2,’.’,kenga(i+3):30,’ úúúú ‘,singer(i+3):20);
GoToXY(15,19); WRITE((i+4):2,’.’,kenga(i+4):30,’ úúúú ‘,singer(i+4):20);
POZ2:
end;
#27: GOTO FUNDI;
END;
GOTO FILL;
FUNDI:
DESKTOPI; END; {Fundi i procedur‰s lista_Kenge}
(****************************************************************************)

(****************************************************************************)
{Procedura p‰r b‰rjen Kutis‰ s‰ InFORmatave mbi programin}
PROCEDURE DetyraApp.DOAboutBox;
Begin DESKTOPI;
MessageBox(#3’Detyr‰ kursi 1’#13 + #3’E drejte e kopjes 1999’#13#3’Ahmet Murati’, nil, mfInFORmation or mfOKButton); END;
{Fun i procedur‰s DOAboutBox}
(****************************************************************************)

(****************************************************************************)
(****************************************************************************)
{Kjo PROCEDURE shfaq p‰rgjigjen p‰r k‰rkes‰n a t‰ detyr‰s 1 s‰ kursit}
PROCEDURE DetyraApp.kerkesa_A; {SHFAQ Kenget simbas rENDit te preferencave }
CONST
a = ‘ Vendi Titulli K‰ndon Pik‰t Nr.’;
b = ‘ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ’;
type str = RECORD Kg:BYTE; piket:BYTE; END;
VAR de:STRING; W,i,j,gama: INTEGER; rec:pergjigje; f1: FILE OF pergjigje;
delta:BYTE; ch: CHAR; vektor:ARRAY [1..n]OF BYTE; vek:ARRAY [1..n]OF str;
temp:str;
LABEL poz1,poz2,fill,fundi,lex,lart,poshte,poz3;
Begin ASSIGN (f1,’a:\anketa.ahm’);
RESET(f1);Ngj(1,7); box(2,15,78,23);
FOR i:= 1 TO n DO
Begin vektor[i] := 0; vek[i].piket := 0; vek[i].kg := 0;
END;{Pastrohen vektorin VEKTOR }
while not eOF(f1) DO
Begin
READ (f1,rec);
FOR j:= 1 TO 5 DO
Begin gama:= rec.zgjedhja[j];
IF (gama > 0) and (gama <= 30) THEN
vektor[gama]:= vektor[gama] + 1; END; END;
close(f1);
FOR i:= 1 TO n DO
Begin vek[i].piket := vektor[i];vek[i].kg:=i;END;
FOR i:= 1 TO n DO
FOR J:= i+1 TO n DO
Begin IF vek[i].piket < vek[j].piket THEN
Begin temp.piket:=vek[i].piket;temp.kg:=vek[i].kg;
vek[i].piket:=vek[j].piket;vek[i].kg:=vek[j].kg;
vek[j].piket:=temp.piket;vek[j].kg:=temp.kg;
END; END;
Begin
GoToXY(25,15); WRITE(‘ K‰rkesa (a). Lista e k‰ng‰ve Fituese ‘);
GoToXY(04,16); WRITE(a);GoToXY(4,17);WRITEln(b); i:=1;
GoToXY(04,18); WRITE((1):2,’.’,kenga(vek[1].kg):30,’ úú ‘,singer(vek[1].kg):20,’ úú ‘,vek[1].piket:2,'(‘:3,vek[1].kg:2,’)’);
GoToXY(04,19); WRITE((2):2,’.’,kenga(vek[2].kg):30,’ úú ‘,singer(vek[2].kg):20,’ úú ‘,vek[2].piket:2,'(‘:3,vek[2].kg:2,’)’);
GoToXY(04,20); WRITE((3):2,’.’,kenga(vek[3].kg):30,’ úú ‘,singer(vek[3].kg):20,’ úú ‘,vek[3].piket:2,'(‘:3,vek[3].kg:2,’)’);
GoToXY(04,21); WRITE((4):2,’.’,kenga(vek[4].kg):30,’ úú ‘,singer(vek[4].kg):20,’ úú ‘,vek[4].piket:2,'(‘:3,vek[4].kg:2,’)’);
GoToXY(04,22); WRITE((5):2,’.’,kenga(vek[5].kg):30,’ úú ‘,singer(vek[5].kg):20,’ úú ‘,vek[5].piket:2,'(‘:3,vek[5].kg:2,’)’);

W:=1;
fill:
ch:=readkey;
case ch of
#72:BEGIN IF W<1 THEN GOTO POZ2; IF W=26 THEN GOTO POZ1;if vek[W+5].piket=0 then goto poz2;
Inc(W);
GoToXY(04,18); WRITE((W):2,’.’, kenga(vek[W].kg):30,’ úú ‘, singer(vek[W].kg):20,’ úú ‘, vek[W].piket:2,'(‘:3,
vek[W].kg:2,’)’);
GoToXY(04,19); WRITE((W+1):2,’.’,kenga(vek[W+1].kg):30,’ úú ‘,singer(vek[W+1].kg):20,’ úú ‘,vek[W+1].piket:2,'(‘:3,
vek[W+1].kg:2,’)’);
GoToXY(04,20); WRITE((W+2):2,’.’,kenga(vek[W+2].kg):30,’ úú ‘,singer(vek[W+2].kg):20,’ úú ‘,vek[W+2].piket:2,'(‘:3,
vek[W+2].kg:2,’)’);
GoToXY(04,21); WRITE((W+3):2,’.’,kenga(vek[W+3].kg):30,’ úú ‘,singer(vek[W+3].kg):20,’ úú ‘,vek[W+3].piket:2,'(‘:3,
vek[W+3].kg:2,’)’);
GoToXY(04,22); WRITE((W+4):2,’.’,kenga(vek[W+4].kg):30,’ úú ‘,singer(vek[W+4].kg):20,’ úú ‘,vek[W+4].piket:2,'(‘:3,
vek[W+4].kg:2,’)’);
poz1:
END;
#80:begin IF W<3 THEN GOTO POZ2 ;
IF vek[W+4].piket <> 0 THEN Begin
Dec(W);
GoToXY(04,18); WRITE((W):2,’.’,kenga(vek[W].kg):30,’ úú ‘,singer(vek[W].kg):20,’ úú ‘,vek[W-4].piket:2,'(‘:3,
vek[W].kg:2,’)’);
GoToXY(04,19); WRITE((W+1):2,’.’,kenga(vek[W+1].kg):30,’ úú ‘,singer(vek[W+1].kg):20,’ úú ‘,vek[W+1].piket:2,'(‘:3,
vek[W+1].kg:2,’)’);
GoToXY(04,20); WRITE((W+2):2,’.’,kenga(vek[W+2].kg):30,’ úú ‘,singer(vek[W+2].kg):20,’ úú ‘,vek[W+2].piket:2,'(‘:3,
vek[W+2].kg:2,’)’);
GoToXY(04,21); WRITE((W+3):2,’.’,kenga(vek[W+3].kg):30,’ úú ‘,singer(vek[W+3].kg):20,’ úú ‘,vek[W+3].piket:2,'(‘:3,
vek[W+3].kg:2,’)’);
GoToXY(04,22); WRITE((W+4):2,’.’,kenga(vek[W+4].kg):30,’ úú ‘,singer(vek[W+4].kg):20,’ úú ‘,vek[W+4].pIket:2,'(‘:3,
vek[W+4].kg:2,’)’);END;
POZ2:
end;

#27: GoTo FUNDI;END;GoTo FILL;END;fundi:DESKTOPI;END;
{Fundi i procedur‰s q‰ liston k‰ng‰t fituese}
(****************************************************************************)

(****************************************************************************)
PROCEDURE DetyraApp.kerkesa_b; {SHFAQ Kenget simbas rENDit te preferencave }
CONST
c = ‘ Emri Mbiemri Mosha Nr.Rekordit ‘;
d = ‘ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ’;
ma =’1.Meshkuj (t‰ anketuar) ‘; fe= ‘2.Femra (t‰ anketuara) ‘;
mbi=’Mbi 25 vje‡’; nen=’N‰n 25 vje‡’;
type str = RECORD Kg:BYTE; piket:BYTE; end;
fit = ARRAY [1..3] OF BYTE;
VAR i:BYTE; rec:pergjigje; f1: FILE OF pergjigje;
FlSize:BYTE; ch,ch2: CHAR; Fituese:fit;
flag_mbi,flag_nen,enter_flag:BOOLEAN;
LABEL lart,poshte,fundi,lex,ask,ask2,ask3,go;

(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)

Procedure mM25(fituese:fit);
VAR i,k,lr,j:INTEGER; rec:pergjigje; f1: FILE OF pergjigje;
pr,tmp,fll,fnd:BYTE; Personi:ARRAY [1..n]OF BYTE;
what: CHAR; Flag:BOOLEAN;
LABEL fund,lex,sss;
BEGIN ASSIGN (f1,’a:\anketa.ahm’); Ngj(0,11); box(10,3,70,23); GoToXY(22,2);
for i:= 1 to n do personi[i]:=0; pr:=0;j:=0;
reset(f1);
while not eOF(f1) do begin
READ (f1,rec); pr:=pr+1;
IF ((rec.g = m) and (rec.mosha > 25) ) THEN begin flag := true;
for k:= 1 to 5 do for lr:= 1 to 3 do IF (flag=true) THEN
IF rec.zgjedhja[k] = fituese[Lr] THEN
begin j:=j+1;personi[j]:= pr;flag:=FALSE; end; end; end;
pr:=0; Ngj(0,11); GoToXY(11,4);write(c);GoToXY(11,5);write(d); Ngj(1,11);
begin for i := 1 to j do begin
SEEK(f1,personi[i]-1);READ (f1,rec); GoToXY(11,5+i);
Write(rec.Emer:15,’ ‘,rec.mbiemer:15,’ úúú ‘);
write(rec.mosha:3,’ úúú ‘,personi[i]:3);
end; sss:what:=READKey;if (what <> #27) THEN GoTo sss;
GoTo fund; end;
lex: what:=READKey;
CASE what OF #27: begin DESKTOPI; GoTo fund; end;
ELSE GoTo lex; end; fund: end; {fundi i procedures mM25}

(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)

Procedure mN25(fituese:fit);
VAR i,k,lr,j:INTEGER; rec:pergjigje; f1: FILE OF pergjigje;
pr,tmp,fll,fnd:BYTE; Personi:ARRAY [1..n]OF BYTE;
what: CHAR; Flag:BOOLEAN;
LABEL fund,lex,sss;
BEGIN ASSIGN (f1,’anketa.dat’); Ngj(0,11); box(10,3,70,23); GoToXY(22,2);
for i:= 1 to n do personi[i]:=0; pr:=0;j:=0;
reset(f1);
while not eOF(f1) do begin
READ (f1,rec); pr:=pr+1;
IF ((rec.g = m) and (rec.mosha < 25) ) THEN begin flag := true;
for k:= 1 to 5 do for lr:= 1 to 3 do IF (flag=true) THEN
IF rec.zgjedhja[k] = fituese[Lr] THEN
begin j:=j+1;personi[j]:= pr;flag:=FALSE; end; end; end;
pr:=0; Ngj(0,11); GoToXY(11,4);write(c);GoToXY(11,5);write(d); Ngj(1,11);
begin for i := 1 to j do begin
SEEK(f1,personi[i]-1);READ (f1,rec); GoToXY(11,5+i);
Write(rec.Emer:15,’ ‘,rec.mbiemer:15,’ úúú ‘);
write(rec.mosha:3,’ úúú ‘,personi[i]:3);
end; sss:what:=READKey;if (what <> #27) THEN GoTo sss;
GoTo fund; end;
lex: what:=READKey;
CASE what OF #27: begin DESKTOPI; GoTo fund; end;
ELSE GoTo lex; end; fund: end; {fundi i procedures mM25}

(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)

Procedure fM25(fituese:fit);
VAR i,k,lr,j:INTEGER; rec:pergjigje; f1: FILE OF pergjigje;
pr,tmp,fll,fnd:BYTE; Personi:ARRAY [1..n]OF BYTE;
what: CHAR; Flag:BOOLEAN;
LABEL fund,lex,sss;
BEGIN ASSIGN (f1,’anketa.dat’); Ngj(0,11); box(10,3,70,23); GoToXY(22,2);
for i:= 1 to n do personi[i]:=0; pr:=0;j:=0;
reset(f1);
while not eOF(f1) do begin
READ (f1,rec); pr:=pr+1;
IF ((rec.g = f) and (rec.mosha > 25) ) THEN begin flag := true;
for k:= 1 to 5 do for lr:= 1 to 3 do IF (flag=true) THEN
IF rec.zgjedhja[k] = fituese[Lr] THEN
begin j:=j+1;personi[j]:= pr;flag:=FALSE; end; end; end;
pr:=0; Ngj(0,11); GoToXY(11,4);write(c);GoToXY(11,5);write(d); Ngj(1,11);
begin for i := 1 to j do begin
SEEK(f1,personi[i]-1);READ (f1,rec); GoToXY(11,5+i);
Write(rec.Emer:15,’ ‘,rec.mbiemer:15,’ úúú ‘);
write(rec.mosha:3,’ úúú ‘,personi[i]:3);
end; sss:what:=READKey;if (what <> #27) THEN GoTo sss;
GoTo fund; end;
lex: what:=READKey;
CASE what OF #27: begin DESKTOPI; GoTo fund; end;
ELSE GoTo lex; end; fund: end; {fundi i procedures mM25}

(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)

Procedure fN25(fituese:fit);
VAR i,k,lr,j:INTEGER; rec:pergjigje; f1: FILE OF pergjigje;
pr,tmp,fll,fnd:BYTE; Personi:ARRAY [1..n]OF BYTE;
what: CHAR; Flag:BOOLEAN;
LABEL fund,lex,sss;
BEGIN ASSIGN (f1,’anketa.dat’); Ngj(0,11); box(10,3,70,23); GoToXY(22,2);
for i:= 1 to n do personi[i]:=0; pr:=0;j:=0;
reset(f1);
while not eOF(f1) do begin
READ (f1,rec); pr:=pr+1;
IF ((rec.g = f) and (rec.mosha < 25) ) THEN begin flag := true;
for k:= 1 to 5 do for lr:= 1 to 3 do IF (flag=true) THEN
IF rec.zgjedhja[k] = fituese[Lr] THEN
begin j:=j+1;personi[j]:= pr;flag:=FALSE; end; end; end;
pr:=0; Ngj(0,11); GoToXY(11,4);write(c);GoToXY(11,5);write(d); Ngj(1,11);
begin for i := 1 to j do begin
SEEK(f1,personi[i]-1);READ (f1,rec); GoToXY(11,5+i);
Write(rec.Emer:15,’ ‘,rec.mbiemer:15,’ úúú ‘);
write(rec.mosha:3,’ úúú ‘,personi[i]:3);
end; sss:what:=READKey;if (what <> #27) THEN GoTo sss;
GoTo fund; end;
lex: what:=READKey;
CASE what OF #27: begin DESKTOPI; GoTo fund; end;
ELSE GoTo lex; end; fund: end; {fundi i procedures mM25}

(* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)

Procedure jep_fit(VAR fituese:fit;VAR flsize:BYTE);
VAR i,j,gama:INTEGER; vektor:ARRAY [1..n]OF BYTE; vek:ARRAY [1..n]OF str;
temp:str;
begiN ASSIGN (f1,’anketa.dat’); reset(f1);
for i:= 1 to n do begin {Pastrohet vektori VEKTOR }
vektor[i] := 0; vek[i].piket := 0; vek[i].kg := 0; end;

while not eOF(f1) do begin READ (f1,rec);
for j:= 1 to 5 do begin
gama:= rec.zgjedhja[j]; IF (gama > 0) and (gama <= N) THEN
vektor[gama]:= vektor[gama] + 1; end; end;
close(f1);
for i:= 1 to n do begin
vek[i].piket := vektor[i];vek[i].kg:=i;end;
for i:= 1 to n do for J:= i+1 to n do
begin IF vek[i].piket < vek[j].piket THEN begin
temp.piket:=vek[i].piket;temp.kg:=vek[i].kg;
vek[i].piket:=vek[j].piket;vek[i].kg:=vek[j].kg;
vek[j].piket := temp.piket; vek[j].kg:=temp.kg;
end; end; for i:= 1 to 3 do fituese[i]:= vek[i].kg; end;
begin
go: desktopi; Ngj(7,1); box(16,8,65,16);
GoToXY(22,11);Write(‘ Zgjidhni kategorin‰ q‰ ju intereson.’);
GoToXY(22,12);Write(‘* * * * * * * * * * * * * * * * * * *’);
ask: GoToXY(30,13);Ngj(12,1);Write(ma); GoToXY(30,14);Write(fe);Ngj(0,15);
ch:=READKey;CASE ch OF
‘1’,’m’,’M’:begin Ngj(12,1);GoToXY(25,14);Write(fe);
Ngj(1,white); GoToXY(25,13);Write(ma);
box(49,13,63,16);Ngj(white,red); GoToXY(51,14);Write(nen);Ngj(1,7);
GoToXY(51,15);Write(Mbi);GoToXY(52,15);
flag_mbi:=true;Flag_nen:=FALSE;GoToXY(1,25);
ask2:ch2:=READKey;
CASE ch2 OF
#32:begin IF (flag_mbi=true) THEN begin
flag_mbi:=FALSE;flag_nen:=true;;Ngj(15,red);
GoToXY(51,15);Write(Mbi);GoToXY(52,15); Ngj(1,7);
GoToXY(51,14);Write(Nen);Ngj(1,7);GoToXY(1,1);
GoTo ask2;end
ELSE begin flag_mbi:=true;flag_nen:=FALSE; Ngj(1,7);
GoToXY(51,15);Write(Mbi);GoToXY(52,15); Ngj(15,red);
GoToXY(51,14);Write(Nen);GoToXY(1,1);GoTo ask2;
end; end;

#13:begin jep_fit(fituese,flsize);
IF (flag_mbi=FALSE) THEN begin mM25(fituese); GoTo go;end
ELSE begin mN25(fituese); GoTo go;end; end;

#27:begin desktopi; Ngj(7,1); box(16,8,65,16);
GoToXY(22,11);Write(‘ Zgjidhni kategorin‰ q‰ ju intereson.’);
GoToXY(22,12);Write(‘* * * * * * * * * * * * * * * * * * *’);
GoToXY(30,13);Ngj(12,1);Write(ma);
GoToXY(30,14);Write(fe);Ngj(0,15);
GoTo ask;end;
ELSE GoTo ask2;end;
end;
‘2’,’f’,’F’:begin;
Ngj(1,7);
GoToXY(25,14);Write(fe);
box(49,14,63,17);Ngj(white,red);
GoToXY(51,15);Write(nen);Ngj(1,7);
GoToXY(51,16);Write(Mbi);GoToXY(52,15);
flag_mbi:=true;Flag_nen:=FALSE;GoToXY(1,25);

ask3:ch2:=READKey;
CASE ch2 OF
#32:begin IF (flag_mbi=true) THEN begin
flag_mbi:=FALSE;flag_nen:=true; Ngj(15,red);
GoToXY(51,16);Write(Mbi);Ngj(1,7);
GoToXY(51,15);Write(Nen);Ngj(1,7);GoToXY(1,1);
GoTo ask3;end
ELSE begin flag_mbi:=true;flag_nen:=FALSE;Ngj(1,7);
GoToXY(51,16);Write(Mbi);Ngj(15,red);
GoToXY(51,15);Write(Nen);GoToXY(1,1);GoTo ask3;
end; end;
#13:begin jep_fit(fituese,flsize);
IF (flag_mbi=FALSE) THEN begin fM25(fituese);
GoTo go;end
ELSE begin fN25(fituese); GoTo go;end;end;
#27:begin
DESKTOPI; Ngj(7,1); box(16,8,65,16);
GoToXY(22,11);Write(‘ Zgjidhni kategorin‰ q‰ ju intereson.’);
GoToXY(22,12);Write(‘* * * * * * * * * * * * * * * * * * *’);
GoToXY(30,13);Ngj(12,1);Write(ma);
GoToXY(30,14);Write(fe);Ngj(0,15);
GoTo ask;end;
ELSE GoTo ask3;end;
end;
#27:GoTo fundi;
ELSE exit;end;
fundi: end; { Fundi i procedures Pergjigje_B. }
(****************************************************************************)

(****************************************************************************)
{Procedura p‰r shtimin e t‰ dhenave}
PROCEDURE DetyraApp.shto;
CONST
a = ‘Nr.Rendor Titulli K‰ndon’;
b = ‘ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ’;
type str = RECORD Kg:BYTE; kendon:BYTE; END;
LABEL poz1,poz2,fill,fundi,lex,fp,b1,a1,a2,a3,funi;
VAR i,l:INTEGER; emri,mbiemri:STRING [15]; f1: FILE OF pergjigje;
rec,rec2:pergjigje; ch: CHAR; abort:BOOLEAN; ik,kk:BYTE; ch1: CHAR;
Begin
ASSIGN (f1,’Anketa.dat’); box(3,2,33,12); Ngj(1,7); a3:
GoToXY(5,3);WRITE(‘Emri….: ‘);
GoToXY (15,3); rec.emer:=Merr_str(15,abort);
IF (abort=true) THEN GoTo fundi;
GoToXY(5,4); WRITE(‘Mbiemri.: ‘);
GoToXY (15,4);rec.mbiemer:=Merr_str(15,abort);
if (abort=true) THEN GoTo fundi;
GoToXY(5,5);WRITE(‘Mosha…: ‘);
GoToXY (15,5);rec.mosha:=Merr_num(2,abort);
if (abort=true) THEN GoTo fundi;
GoToXY(5,6);WRITE(‘Gjinia..: ‘);
a1: ch:= READKey;GoToXY(15,6);
CASE upCASE(ch) OF
‘M’:Begin rec.g := m;WRITEln(‘Mashkull’);GoTo a2;END;
‘F’:Begin rec.g:= f ;WRITEln(‘Fem‰r ‘);GoTo a2;END;
ELSE GoTo a1; END;
a2: FOR i:= 1 TO 5 DO Begin GoToXY (5,6+i);WRITE(‘Preferenca ‘,i,’: ‘);
rec.zgjedhja[i]:=merr_num(3,abort);END;RESET(f1); l:=FileSize(f1);
SEEK(f1,l);
WRITE(f1,rec);
close(f1);
FUNDI:DesktopI;
END;
{Fundi i procedur‰s p‰r shtimin e t‰ dh‰nave}
(****************************************************************************)

(****************************************************************************)
{PROCEDURE e ndihm‰s}
PROCEDURE DetyraApp.Permbajtja;
LABEL poshte,lart;
VAR Help_File:text;Help_Context:STRING [70];b:BYTE;
Begin DESKTOPI;
ASSIGN (Help_File,’Ahm_Det.HLP’); RESET(Help_File);
Ngj(1,7); box (3,3,77,24); lart: FOR b:= 1 TO 20 DO
Begin READln(Help_File, Help_Context);
GoToXY(5,3+b); WRITE(Help_Context); END;
poshte: prit; desktopi; END;
{Fundi i procedur‰s s‰ Ndihm‰s}
(****************************************************************************)

(****************************************************************************)
{PROCEDURE e Aplikacioneve t‰ Programit}
PROCEDURE DetyraApp.HandleEvent(VAR Event: TEvent);
LABEL a1;
VAR R: TRect;
Begin INHERITED HandleEvent(Event); IF Event.What = evCommand THEN
Begin
CASE Event.Command OF
cmNew: Begin shto; ClearEvent(Event); DESKTOPI END;
cmAbout: Begin DOAboutBox; ClearEvent(Event); DESKTOPI;END;
cmHelp: Begin Permbajtja; ClearEvent(Event); DESKTOPI;END;
cmUnDO: Begin Te_anketuarit; ClearEvent(Event); DESKTOPI;END;
cmPaste: Begin Write(‘Ahmet’); ClearEvent(Event); DESKTOPI;END;
cmCut: Begin Kerkesa_a; ClearEvent(Event); DESKTOPI;END;
cmClear: Begin kerkesa_b; clearEvent(Event); desktopi; END;
cmSave: Begin lista_kenge; clearEvent(event); DESKTOPI;END;
cmCloseAll: Begin ClearEvent(Event);END;
cmClose: Begin clearEvent(event)END;
END; END; END; {Fundi i procedur‰s s‰ Aplikacioneve t‰ Programit}
(****************************************************************************)

(****************************************************************************)
{Procedura p‰r inicializimin e menys‰}
PROCEDURE DetyraApp.InitMenuBar;
VAR R: TRect; d:STRING;
Begin
GetExtent(R); R.B.Y := R.A.Y + 1;
MenuBar := New(PMenuBar, Init(R, NewMenu(
NewSubMenu(‘~S~kedar‰’, hcNoContext, NewMenu(
NewSubMenu(‘~A~nketimi’, hcNoContext, NewMenu(
NewItem(‘Sh~t~o rekord’,’Alt+T’, kbAltT, cmnew, hcnocontext,
NewItem(‘T‰ a~n~ketuarit’,’Alt+N’, kbAltN, cmUnDO, hcnocontext,
nil))),
NewItem(‘~L~ista e k‰ng‰ve’,’Alt+L’,kbAltL,cmSave,hcnocontext,
NewItem(‘O~S~ Shelli’,’F9′, kbf9, cmDosShell, hcnocontext,
NewItem(‘~D~alja’,’Alt+x & F1O’, kbAltX, cmQuit, hcnocontext,
nil))))),
NewSubMenu(‘~K~‰rkesa’, hcNoContext, NewMenu(
NewItem(‘K‰rkesa ~A~’,’Alt A’, kbAltA, cmCut,hcNoContext,
NewItem( ‘K‰rkesa ~B~’,’Alt+B’,kbaltB,cmClear,hcNoContext,nil))),
NewSubMenu(‘Nd~i~hma’, hcNoContext, NewMenu(
NewItem(‘~P~‰mbajtja’,’ F1′, kbF1, cmHelp, hcNoContext,
NewItem(‘~R~reth…’,’ F2′, kbF2, cmAbout, hcNoContext,nil))),nil))))));
END; {Fundi i procedur‰s p‰r inicializimin e menys‰}
(****************************************************************************)

(****************************************************************************)
{Procedura p‰r inicializimin e rreshtit t‰ statusit}
PROCEDURE DetyraApp.InitStatusLINE ;
VAR R: TRect;
Begin
GetExtent(R); R.A.Y := R.B.Y – 1;
New(StatusLINE , Init(R,
NewStatusDef(0, $EFFF,
NewStatusKey(‘~F1~ Ndihma’,kbF1,cmHelp,
NewStatusKey(‘~F2~ Rreth’,kbF2,cmAbout,
NewStatusKey(‘~F10~ Dalja’,kbF10,cmQuit,
NewStatusKey(‘~Alt+A~ K‰rkesa a’,kbAltA,cmCut,
NewStatusKey(‘~Alt+L~ K‰ng‰t’,kbAltA,cmSave,
NewStatusKey(‘~Alt+T~ Shto’,kbAltA,cmNew,
StdStatusKeys(nil))))))), NewStatusDef($F000, $FFFF,nil,nil))));
END;
{Fundi i procedur‰s p‰r inicializimin e rreshtit t‰ statusit}
(****************************************************************************)

(****************************************************************************)
{Deklarimi i Variablave global}
VAR Detyre: DetyraApp;
Rec:pergjigje;
{Fundi i bllokut t‰ deklarimit t‰ Variablave}
(****************************************************************************)

(****************************************************************************)
{Trupi i programit}
Begin
{ intro;}
ShowMouse;
Detyre.Init;
Detyre.Run;
Detyre.Done;
END.
{Fundi i programit}
(****************************************************************************)

(****************************************************************************

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Programi u punua nga studenti i Kursit t‰ I-r‰ D Ahmet Murati *
* 1999-2000 *
* UT Tiran‰ *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

(****************************************************************************)

Computers

Problems with Gmail password in Chrome – Solution.

Initially posted on LinkedIn under my account on October 31, 2016.

Since over several weeks I had to change the passwords because due to many long days I did not remember the password. Nor the Google Chrome.

Last night, after a long day, I decided to check on internet if there is a solution to resolve this issue with Gmail and Google Chrome. Apparently, no clear solution or any recipe to resolve this issue did worked in my case. But, many of the threads of messages in Google message boards were locked on so no one could reply.

I tried to add my account using SQLite Browser but now way to set the password into a blob. I disconnected my account from Chrome and logged in again and no luck.

About two hours after midnight I decided to open my account in Mozilla Firefox and I saved the password there. And then I opened the Chrome and clicked Menu -> Settings

And then clicked Import and waited a bit and the process was finished. I opened the Saved Passwords and my new pass was there.

So, no third party tools needed just Mozilla Firefox and Chrome and issue is resolved.

Computers

Gjeokodim i mbrapshtë me Google dhe Excel

Ky tutorial i shkurtë do t’iu mundësojë se si të punoni me skedarët Excel direkt nga C# përmes librarisë interop të Excel që ofrohet nga Microsoft. Pastaj, në të shkruan edhe si të shkruhet në qeliza të dëshiruara të skedarit Excel.

Gjithashtu, në këtë tutorial do të mësohet se si të konsumohet një JSON dhe të parsohet në objekt të C#.

Nëse ju lind nevoja të kërkoni informata të ndryshme nga Google Maps si për shembull e keni emrin e qytetit por nuk e dini se nga cili vend vjen atëherë ekziston mundësia që të ndërlidhet kodi i C# me Google Maps dhe të bësh kërkimin e të dhënave të vendit.

Së pari e përgatit një listë në Excel
Imazhi1

Pastaj duhet të shkarkohet NewtonJson pakoja që mund të instalohet edhe përmes PowerShell por edhe në mënyrën manuale por duhet të keni parasysh që kur e zgjidhni librarinë (DLL) përkatëse duhet të përkojë me versionin e .Net kornizës në të cilën punohet aplikacioni.

Instalimi përmes PowerShell Nuget. Së pari përmes menysë Tools e zgjedhni NuGet Package Manager dhe pastaj Package Manager Console

image2
Dhe më pas paraqitet pamja si në vijë dhe duhet shkruar teksti ”

Install-Package Newtonsoft.Json"

image3

Dhe pastaj e shtypni Enter.

Pas shkarkimit të pakos duhet të shkoni te “References” te Project edhe pastaj “Add Reference”

image5

Pasi që të klikojmë te ky opsion te kutia e kërkimit e kërkojnë për libraritë me emrin Excel por libraria duhet të jetë interop që do të na lejojë mundësinë e ndërveprimit mes skedarit Excel dhe  punëve tona.

 

Image6

Pastaj na del kështu pasi që të kemi zgjedhur versionin e fundit të librarisë interop dhe shtypin pullën OK. Pastaj na listohet në këtë mënyrë.
Nëse edhe libraria Newtonsoft.Json mungon nga këtu atëherë vazhdohet si në hapin paraprak por këtu klikojmë Browse dhe pastaj e zgjedhim librarinë e kompiluar në versionin përkatës. Në këtë projekt është përdorur korniza e punës .Net 4.5.2.

image7

Kodimit të projektit.

Për të na lehtësuar punën e kodimit së pari e marrim JSon-in dhe e kthejmë në C#.

https://maps.googleapis.com/maps/api/geocode/json?address=Tiran%C3%AB&sensor=false&key={për ta pasur të lehtë punën e gjeneroni një qelës nga Google Maps API dhe e aktivizoni Geocoding te një projekt të juajin ose e krijoni një projekt aty}

Krijimi i qelësit për shërbimit të Google Geocoding bëhet në këtë mënyrë

Së pari hapet adresa

https://console.developers.google.com/apis/dashboard?

Pastaj, ju kërkon të kyçeni me llogari të Gmail dhe pastaj mund të shkoni te projektet tuaja ose të krijoni projekt të ri.

image8

Pastaj ju paraqitet kjo pamje dhe duhet të klikoni te “Credentials”

image9

Pasi të kemi klikuar Credentials na paraqitet një formë me ca shpjegime por ju duhet të klikoni te Create Credentials dhe pastaj ta zgjedhin API key

image10

Dhe pastaj duhet të klikoni Browser Key.image11

Na paraqitet pamja në vijim:

image12

Dhe këtu duhet të klikojmë Create dhe na gjenerohet si në vijim:

image13

Kodin e gjeneruar duhet ta kopjojmë e kjo mund të bëhet përmes ikonës në të djathtë të qelësit. Pastaj ky kod duhet të vendoset te pjesa e key=

https://maps.googleapis.com/maps/api/geocode/json?address=Tiranë&sensor=false&
key=AIzaSyDqSlwh58jd8dbz18h5qn15v59sqYR-3vc

Dhe pastaj mund të bëjmë kërkesa që të na jep të dhënat e duhura:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Tiranë",
               "short_name" : "Tiranë",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Tiranë",
               "short_name" : "Tiranë",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Qarku i Tiranës",
               "short_name" : "Qarku i Tiranës",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Shqipëria",
               "short_name" : "AL",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Tiranë, Shqipëria",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 41.366841,
                  "lng" : 19.8820781
               },
               "southwest" : {
                  "lat" : 41.2951234,
                  "lng" : 19.7535681
               }
            },
            "location" : {
               "lat" : 41.3275459,
               "lng" : 19.8186982
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 41.366841,
                  "lng" : 19.8820781
               },
               "southwest" : {
                  "lat" : 41.2951234,
                  "lng" : 19.7535681
               }
            }
         },
         "place_id" : "ChIJ28X6cAQxUBMRIDdlEK-SAAQ",
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}

Shënim: Që të mund ta merrni këtë së pari duhet të aktivizoni API e Geocoding

image14image15

Pjesa e dytë:
Këtu e kthejmë objektin JSON në klasa të C# me anë të uebfaqes

http://json2csharp.com/

Dhe fitohet kjo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ReversGeoCodeByCity
{


public class AddressComponent
{
public string long_name { get; set; }
public string short_name { get; set; }
public List<string> types { get; set; }
}


public class Northeast
{
public double lat { get; set; }
public double lng { get; set; }
}


public class Southwest
{
public double lat { get; set; }
public double lng { get; set; }
}


public class Bounds
{
public Northeast northeast { get; set; }
public Southwest southwest { get; set; }
}


public class Location
{
public double lat { get; set; }
public double lng { get; set; }
}


public class Northeast2
{
public double lat { get; set; }
public double lng { get; set; }
}


public class Southwest2
{
public double lat { get; set; }
public double lng { get; set; }
}


public class Viewport
{
public Northeast2 northeast { get; set; }
public Southwest2 southwest { get; set; }
}


public class Geometry
{
public Bounds bounds { get; set; }
public Location location { get; set; }
public string location_type { get; set; }
public Viewport viewport { get; set; }
}


public class Result
{
public List<AddressComponent> address_components { get; set; }
public string formatted_address { get; set; }
public Geometry geometry { get; set; }
public string place_id { get; set; }
public List<string> types { get; set; }
}


public class RootObject
{
public List<Result> results { get; set; }
public string status { get; set; }
}


}

Këtë e ruajmë për shembull si skedarë .cs me merin Objects.cs.

 

Dhe rezultati

image16

I tërë kodi mund të shkarkohet nga këtu:

Kodi i projekti