Варианттар

Кіріспе
Варианттардың негізгі қасиеттері
Варианттарды мәліметтердің басқа типіне түрлендіру
Варианттармен жұмыс істеуге арналған қосалқы программалар
Вариантты массивтер
Вариантты массив параметрлері
Пайдаланушының варианттары
Қорытынды
Вариант бұл компликация кезеңінде программист өрнектегі қандайоа бір мәліметтер типі немесе қосалқы программаны шақыру параметрін көрсете алмаған жағдайда пайдалануға болатын, арнайы жасалған Variant типі. Вариант айнымалысы жадыдан қосымша 2 байт орын алады, онда айнымалы нақты типі жөніндегі аппарат орналасады. Бұл ақпарат программаны жүргізу кезеңінде типтерге қажетті түрлендіруді жүзеге асырады. Компиляторға кодты құру мүмкіндігін береді.
Вариант айнымалысын:
-- бүтін және нақты;
-- логикалық мәнді;
-- жолды;
-- уақыт немесе датаны;
-- OLE объектісін;
-- элементі жоғарыда аталған типтердің бірінен құралатын, өлшемі мен ұзындығын еркін алынған массивті орналастыруға болады.
Варианттар сәйкес түрлендіру нақты болған жағдайда бүтін санды, нақты, логикалық немесе уақыт және дата өрнектеріне қатыса алады. Мысалы, егер кез келген V вариантына «1,0» жолы меншіктелсе, 1+v өрнегінің дұрыс нақты мәні 2,0 болады. Ал, егер v;= «текст» болса, 1+v өрнегі Е Variant Error қатесін шақырады.
Варианттық типтің құрылымы төмендегідей сипатталады:
TVar Data=packed record
VType: Word:
1. Стоцкий Ю., Самоучитель Office 2000, Санкт-Петербург, "Питер", 2000.
2. Микляев А., Настольная книга пользователя, Москва, "Салон", 1998.
3. Коржинский С., Самоучитель работы на компьютере, Москва, "ТК Велби", 2002.
4. Симонович С., Евсеев Г., Алексеев А., Лаборатория мастера. Работа с компьютером без проблем. Практическое руководство по эффективному использованию компьютера, Москва, "АСТ - ПРЕСС", 2000.
5. Глушаков С.В., Сурядный А.С., MS Office 2000, уч. курс, Харьков, "Фолио", Ростов-на-Дону, "Феникс", 2001.
6. Симонович С., Евсеев Г., Специальная информатика, Москва, "АСТ - ПРЕСС", 2002.
7. Симонович С., Евсеев Г., Практическая информатика, Москва, "АСТ - ПРЕСС", 2002.
8. Информатика: Базовый курс, С.В.Симонович и др. Санкт-Петербург, "Питер", 2001.
9. Золотова С.И., Практика по Aссess, Москва, Финансы и статистика, 2001.
10. Инчин А.С., Рекомендации по работе на персональном компьютере. В 4-х частях, Алматы,1999.
11. Крейнак Дж., Хебрейкен Дж., Интернет. Энциклопедия, Санкт-Петербург, "Питер", 2000.
12. Интернет с нуля! Книга + Видеокурс: Учеб. пособие под редакцией Н.А.Домина, М.: "Лучшие книги", 2003.
        
        Жоспары
Кіріспе
Варианттардың негізгі қасиеттері
Варианттарды мәліметтердің басқа типіне түрлендіру
Варианттармен жұмыс істеуге арналған ... ... ... ... параметрлері
Пайдаланушының варианттары
Қорытынды
Варианттардың негізгі қасиеттері
Вариант бұл компликация кезеңінде программист өрнектегі қандайоа ... типі ... ... ... ... ... ... жағдайда пайдалануға болатын, арнайы жасалған Variant типі. Вариант
айнымалысы жадыдан қосымша 2 байт орын алады, онда ... ... ... ... ... Бұл ... ... жүргізу кезеңінде
типтерге қажетті түрлендіруді жүзеге асырады. Компиляторға кодты құру
мүмкіндігін береді.
Вариант ... ... және ... ... мәнді;
-- жолды;
-- уақыт немесе датаны;
-- OLE объектісін;
-- ... ... ... ... ... құралатын, өлшемі мен
ұзындығын еркін алынған массивті орналастыруға болады.
Варианттар сәйкес түрлендіру нақты ... ... ... ... ... немесе уақыт және дата өрнектеріне қатыса алады. Мысалы, егер кез
келген V вариантына «1,0» жолы ... 1+v ... ... ... ... болады. Ал, егер v;= «текст» болса, 1+v өрнегі Е Variant Error ... ... ... төмендегідей сипатталады:
TVar Data=packed record
VType: Word:
Recerved 1, Recerved 2, Recerved 3, ... Inyeger ... ... Smallnt);
VarSingle: (VSingle, Single);
VarDouble: (VDouble, Double);
VarCurrency: (VCurrency, Currency);
VarDate: (VDate, Double);
VarOLEStr: (VOLEStr: PWide Char;
VarDispatch: (VDispatch: Pointer);
VarError: (VError: WordBool);
VarString: ... (Varray: ... ... ... ... кез ... айнымалы 8 байттық варианттық бөліктен
тұратын 16 байттық жазу болып келеді, ол өзіне ... ... ... ... ... ... ... сақтайды. Кез келген
VType өрісіне ... ... құру ... ... жоқ екендігі
туралы. VarEmpty белгісін орналастырады. Орындалатын программады ... мәні ... ... ... ағымдағы мәліметтер типіне
сәйкес өзгереді. Бұдан программа варианты жазуының өрістеріне тікелей кіре
алмайды. Варианттық ... ... VarType ... ... ... ал ... вариантқа жаңа мән меншіктеу жолымен өзгертуге болады.
Варианттарды мәліметтердің ... ... ... Варианттар
өрнектерде, олардың мәндеріне басқа типтерді ... ... ... ... ... ... ... ереже
бойынша түрленеді.
Варианттардағы типтердің түрлендірілуі
|Қолданыл|Варианттардағы мәліметтер типі ... | |
| |VarEpty ... ... ... уақыт |Жолдық ... ... |0 ... ... ... ... |False үшін|
| | ... ... ... |0, ... | ... | ... Byte |
| | | | | | ... 255 ... |0.0 ... ... ... ... |Нақты |False үшін|
| | ... ... ... ... |-0, True |
| | ... ... -1 ... |30.12.1899|Double- ге|Double- ге|Түрлендір-ілмей|Датаға |Double- ге|
|уақыт |00:00:00 |түрлендіру|түрлендіру|ді ... ... |Бос жол ... ... ... түрге|Түрлендірі|False үшін|
| | ... ... ... ... ... ... | ... | ... ... ... |0 False |0 False |0 False ... ... | ... ... ... True |-0- False |лмейді |
| | |True |True | ... | |
| | | | | |True | ... VarByte, ... ... ... ... ... VarCurrency;
Жолдыққа: VarString, VarOLEStr жатады.
Варианттармен жұмыс істеуге арналған қосалқы программалар
Варианттармен жұмыс істеу үшін ... ... ... ... Function ... (Const V: Variant; VarType: Integer): Variant;
2. Procedure VarCast (VarDest: Variant; const Source: ... ... VarClear (Var V: ... ... VarCopy ... Variant; const Source: ... Function
VarForme DateTime (DateTime: TDateTime): Variant;
6. Function VarLsEmpty (Const V: Variant); Boolean;
7. Function VarLsNull (Const V: Variant); ... Function ... (Const V: ... ... Function VarToStr (Const V: ... ... Function VarType (Const V: Variant): Integer;
1. –Функция – кез келген варианттың мәліметін VarType ... ... ... ... – Sourse ... ... VarType ... типке түрлендіріп, ... Dest ... ... ... жадыны босатады, егер ол вариантпен байланысы
болса, және оған VarEmpty типін береді.
4. – Процедура Dest ... Sourse ... ...... – типі дата – ... ... ... DataTime мәліменттерінен
тұратын варианты береді.
6. –Функция – егер V-да мәліметтер болмаса, True мәнін ... ... – егер V ... ... ... ... тұратын
болса, True мәнін береді.
8. –Функция – V вариантының ... дата – ... ... ... – V ... мәліменттерін жолға түрлендіреді.
10. –Функция – Варианта сақталған мәліменттер типін береді.
Вариантты массивтер. Варианттың мәні мәліметтер ... ... ... ... – вариантты массивтер деп аталады. ... ... ... ... үшін мүмкін болатын кез келген мәндер болуы
мүмкін, бірақ оған VarString жолы кірмейді. Вариантты массив элементтерінің
мәндері ... бола ... олай ... ... ... бір ... мәліметтер типі сақталады.
Var
V: Variant;
Begine
//5 элементтен тұратын бір өлшемді вриантты массив құрайық.
Var:= VarArrayCreate ([0,14], Var Variant);
// толтырамыз:
V[0]:=1;
V[1]:=1234.5678;
V[2]:='сәлем';
V[3]:=True;
// массивтің бес элементі тағы бір ... ... VarArray of ([1..10, 100.. ... = ... Caption:= Intto Ster (V[4] [2]);
End;
Вариантты массивтермен жасалатын барлық әрекеттер төмедегі процедуралар
мен ... ... ... ... Function VarArrayCreate (const Bounds: arry of integer; Vartype:
Integer): Variant; - Bounds ... ... ... ... ... көрсетілген Vartype типті элементтерден
вариантты массив құрады;
2. Function VarArrayDimCount (const A: Variant): Integer; - ... ... ... ... ... береді, егер А массив
болмаса, 0-ге тең.
3. Function VarArrayHighBound (const A: Variant: ... - Dim ... ... ... А ... жоғарғы
шекарасының индексін береді;
4. Function VarArrayLock (Var a: Variant): Pointer; - ... ... ... ... береді;
5. Function VarArrayLowBound (const A: Variant; Dim:Integer):
Integer; - Dim ... ... А ... ... ... ... ... Function VarArray (const Values: array of Variant): Variant;
-Values ашық массивіндегі мәндерден тұратын бір ... ... ... Бұл жағдайда ... ... ... ... 0-ге ... Procedure VarArrayRedim (Var A:Variant; HighBound: Integer); A
варианты массивтің жоғарғы индексінің шекарасын HighBound шамасына
өзгертеді. Егер ... ... ... ... онда ... шақырылуы жойылады;
8. Function VarArrayRef (const A:Variant): Variant; - ... ... ... API ... ... ... VarArrayUnlock (Var ... ... ... жоққа шығарады.
Вариантты массив параметрлері. Delphi 32 жүйесінде қосалқы программаға
ұзындығы мен өлшемі айнымалы болып ... ... ... ... ... ... Төменгі мысалды ... ... ... 5-тен ... ... ... болып
келген варианты массивтің барлық элементтерінің ... ... ... (const V:Variant): Double;
(ұзындығы мен өлшемі айнымалы болып келген массивтің арифметикалық орта
мәнін береді)
var
i, j, k, l, m: integer;
Sum: Double;
NItem: integer;
Begin
Result:=-lE-309;
If ((var type (v) and ... ... or ... Count ... ... ... санын есептейміз.
for k: =1 to VarArrayDim Count (v) do
NItem: = NItem: + VarArray HighBound (v, ... (v, ... ... ... ... Count (v) ... for i:= VarArrayLowBound (v, l) to VarArray HighBound (v,l) ... ... for i:= ... (v, l) to VarArray HighBound (v,l) do
for j:= VarArrayLowBound (v, 2) to VarArray HighBound (v,2) do
Sum:= Sum+v[i,j];
3: for i:= ... (v, l) to VarArray ... (v,l) ... j:= ... (v, 2) to VarArray ... (v,2) ... k:= VarArrayLowBound (v, 3) to VarArray HighBound (v,3) do
Sum:= Sum+v[i,j,k];
4: for i:= VarArrayLowBound (v, l) to VarArray ... (v,l) ... j:= ... (v, 2) to VarArray ... (v,2) ... k:= ... (v, 3) to VarArray HighBound (v,3) do
for l:= VarArrayLowBound (v, 4) to VarArray ... (v,4) ... ... for i:= ... (v, l) to VarArray ... (v,l) ... j:= VarArrayLowBound (v, 2) to VarArray HighBound (v,2) do
for k:= VarArrayLowBound (v, 3) to VarArray HighBound (v,3) ... l:= ... (v, 4) to VarArray ... (v,4) ... m:= VarArrayLowBound (v, 5) to VarArray HighBound (v,5) do
Sum:= ... Sum / ... ... Delphi- дің ... бастап,
варианттың мәндерінің сипатындағы шектеулерді толық алып ... ... ... істейді. Бұл варианттың қасиеттерімен
толдық танысу үшін төмендегідей вариантты қарастырайық: комплексті сандарды
сақтап, оларды басқа типке ... және ... ... ... ... вариантты пайдаланайық. Пайдаланушының вариантын құру – ... ... ... тәуелді болады. Delphi –ді
жасаушылардың құрған VarCmplx ... ... ... ... ... өңдеушісін құрайық.
Uses VarCmplx; //Бұл сілтеме міндетті түрде қажет!
Procedure TfmExample. bbRun Click (Sender: TObject);
Var
V1, V2: ... екі ... ... ... (Trunc (Random * 1000) /100, Trunc Random * ... mmOutput. Lines do
Begine
Add (' '); // бос бөлетін жол.
Add ('1-ші сан' # 9+V1);
Add ('2-ші сан' # 9+V2);
Add ... # ... ... # 9+(V1-V2));
Add ('көбейту' # 9+(V1*V2));
Add ('бөлу' # 9+(V1/V2));
End;
End;
Енді түсініктеме берейік:
Trunc (Random * 1000) /100 ... ... ... 3 ... ... үшін ... мысалдан байқап отырғанымыздай жаңа вариант комплекстік
сандармен жақсы сұйемелденеді: ... ... ... ... вариант құрады, арықарай вариант ... ... оны ... типке түрлендіреді. Содай-ақ, VarCmplx модулінің мәтіні
вариантқа қосымша қасиет береді (ескертусіз Source \ RTl\ Common\ ... – та ... ... 30 000 ... ... ... құру үш кезеңде жүреді.
1. Алдымен TVar data жазуына жаңа мәліметтер ... ... ... ... TCustom Variant Type ... кластың тікелей немесе жанама ұрпағы
болып табылатын ... ... Бұл ... ... ... ... ... барлық әдістер қарастырылады:
оған жаңа мәндер меншіктеу, ... ... ... ... ... ... операцияларды орындау.
3. Жаңа кластың ұрпақтарын хабарлауға және олардың типін анықтауға
қажетті қосымша әдістер құрылады.
4. Көрсетілген қадамдарды ... ... жаңа ... ба
йытылған толық варианты алынады: ол тек жощғарыдағы кестеде
келтірілген мәндерді ғана ... ... ... да кез ... оның ... ... мен әдістерді де сақтай алады.
Қосалқы программаның сипаттамасы. ... мен ... ... берілген атауы бойынша шақырылып орындалатын
программаның ... ... ... Программа мәтініндегі продцедура
(функция) ... ... оның ... деп ... ... ... ... денесін құрайтын операторлардың орындалу
нәтижесінен алынған мән біреу ғана ... Және ол ... ... кейін функция мен процедураны жалпы атаумен «қосалқы ... ... ... ... бұрын негізгі программаның бөлімінде
сипатталуы тиіс.
Қосалқы программаны ... ... оның ... мен ... ... ... аты мен ... параметрлер тізімі
хабарланады. Ал, функция үшін мұнымен қатар оның ... ... типі ... ... ... тақырыбынан кейін оның
бейнелеу бөлімі мен орындалатын операторлар бөлімі жазылады. ... ... ... ... деңгейдегі қосалқы программа
кездесуі ... Оны ... ... ... ... ... ... программа А
Қосалқы программа А1
Қосалқы программа А2
Қосалқы программа В
Қосалқы программа В1
Қосалқы программа В2
Кез келген деңгейдегі программа әдетте, тұрақтылар, айнымалылар, типтер
және ... ... ... ... ... ... ... программаның ішінде сипатталған барлық ... сол ... тән. ... ... программамен шақырылатын операторлар
тұрғысынан, қандай да бір ... ... ... ... ... ... ... программаның әрбір бөліктері пайдаланушыдан
жасырылған, жеке оларды шақыра алмайды. ... ... ... А және В ... шақыруға болмайды, олардың ішіндегі ... В1, В2 ... ... болмайды. Бұл айтылғанда қосалқы
программаның атауына ғана тән емес, сонымен бірге ондағы хабарланған ... ... ... мен ... ... да тән. ... хабарланған барлық атаулар бірегей болуы және ол ... ... ... ... ... ... қосалқы программаға кіру барысында, ... ... ғана ... одан ... ... ... бәріне
кіру мүмкіндігі сақталады.
Кез келген қосалқы программа өзін-өзі шақыра алады, шақырудың бұл
тәсілі ... деп ... ... ... ... V1:…;
Procedure A;
Var V2:…;
End {A};
Procedure B;
Var V3:…;
Procedure B1;
Var V4:…;
Procedure B11;
Var V5:…;
?..
B11 процедурасынан V1, …, V5 ... B1 ... V1, ... ... ... тек V1 процедурасы шақырылады. Кез келген қосалқы
программа пайдаланудан бұрын сипатталуы ... ... В ... А қосалқы программасын шақыруға болады, ал А қосалқы
программасынан В ... ... ... Негізгі программада да,
қосалқы программада да пайдалынылатын объектілерді глобальды деп атайды.
Object Pascal ... ... ... ... ... ... сипаттау пайдаланушының қалауы бойынша
жазыла береді. Мысалы,
Var V1:…;
Procedure S;
Var V2:…;
End {S};
Var V3:…;

S процедурасынан V1 және V2 ... ... ... ... ... болмайды, өйткені бұл айнымаланының сипатталуы программада S
процедурасынан кейін орналасқан.
Қосалқы программадағы жергілікті атаулар ... ... ... сәйкес келеді.
Мұндай жағдайда жергілікті атау глобальды ... ... оған ... ... ... I: ... ... I: Integer;
Begine LbOutput. Caption:=IntToStoer (i);
End {P};
Begine
I:=l
P End;
Бұл программа экранға не шығарады? Бір ... ... ... ... тең болса да Р процедураға кірер алдындағы ішкі І айнымалының
мәні ... ... ... ... айнымалымен «жауып»,
экранға ішкі айнымалының еркін мәні шығады. Егер Р процедурасынан
Var I: Integer;
Жолдарынан алыптастаса онда экранға ... І ... ... 1 ... бір ... ... және ... айнымалылар – бұлар
әртүрлі айнымалылар. Қосалқы программа денесіндегі мұндай ... ... ... шақырумен бірдей.
Қосалқы программаны бейнелеу
Қосалқы программаны бейнелеу -- ... ... ... ... ... программа тақырыбы мен стандартты дерективтер. ... ... түрі ... ... ... (); ... - қосалқы программаның аты; -- ... ... ... - функция нәтижесінің алатын
типі. Қосалқы программаның тақырыбынан кейін ASSEMBLER, EXTERNAL, FAR,
FORWORD, INLINE, ... NEAR ... ... ... ... ... дерективалар өзі жазылып отырған қосалқы программа ұшін ... өзі ... ... ... ... ... ... үшін
орындалмайды.
ASSEMBLER – бұл деректива орындалғанда процедураға кірер және ... ... ... ... ... ... жұмысын
тоқтатады. Бұл жағдайда қосалқы программаның денесі ... ... ... – бұл ... ... ... ... программа
хабарланады.
FAR – компилятор шақырудың шеткері модульіне қосалқы ... ... ...... ... компилятор жадының жақындағы модуліне
есептелген кодын құруды міндеттейді.
FORWORD – дерективасы компиляторға программа ... ... ... кездесетін хабарлайды, бірақ ағымдағы программалық модуль
шеңберінде.
INLINE – дерективасы қосалқы программаның денесі орнатылған ... ... ... ... – үзу, ... өңдеу процедураларын құруда пайдаланылады.
Мәліметтер қоры. Пайдаланушынның көзқарасымен, мәліметтер қоры – бұл
бағдарлама ақрапаттпен жұмысты қамсыздандырады. ... ... ... ... ... ... ... пайдаланушыны қызықтыратын
мәліметтерді қарап шығады. Егер жүйе рұқсат етсе, онда ол осы мәліметтер
қорына ... ... ... жаңа ... қоса ... ... керек
емесін өшіре алады.
Мәліметтер қоры - программисттің ... ... ол ... және ... ... Пайдаланушыға арналған мәліметтер қорын
жасағанда, программист мәліметтер қоры ... ... ... ететін
бағдарлама жасайды.
Қазіргі уақыта бағдарламалар жүйелері жеткілікті, енгізу ... ... ... (dBASE, FoxPro , Access , Paradox ) ... қорын жою (Interbase, , Sysbase, Infomix, Microsoft SQL Server).
Delphi құрамына әртүрлі жүйелермен ... ... ... Infomix ... Delphi Oracle ... ... кіреді.
Delphi сонымен қатар программистке әртүрлі форматта, яғни Borland ... ... ... ... жасауға рұқсат етеді.
BDE –дің маңызы. Delphi қуаттылық және бос базалармен жұмыс істеген
кезде Borland Database Engine (BDE) ... ... ... Оның интерфейсі қолданбалы бағдарламалармен Integrated Database
Application Programming Interface (IDAPI) деп аталады. Принципте, (BDE ... бұл ... ... ... ... және ... ... деп
есептейді. BDE қолданғанда мәліметтер қорын жүзеге асыруға рұқсат етеді,
дәстүрлі record - ақпараттарын ... ... set – ... да ... қорының серверлерінде қолданады. BDE –ден басқа, Delphi басқа
базаларды жүзеге асыруға рұқсат ... ... ... ... ... Open DataBase ... (ODBC) ... Бірақ, тәжірибенің көрсеткеніне қарай, ODBC-ге қарағанда BDE
жүйелерінің өнімділік көрсеткіші жоғары , ODBC ... “ ODBC socket ... ... ... Borland - Paradox ... dBase -- BDE-ні ... ... dBase барлық ерекшеліктерін BDE және Delphi ие болады.
Әдебиеттер тізімі
1. Стоцкий Ю., Самоучитель Office 2000, Санкт-Петербург, ... ... ... А., ... ... пользователя, Москва, "Салон", 1998.
3. Коржинский С., Самоучитель работы на компьютере, Москва, "ТК Велби",
2002.
4. Симонович С., ... Г., ... А., ... ... ... ... без ... Практическое руководство по эффективному
использованию компьютера, Москва, "АСТ - ... ... ... С.В., ... А.С., MS Office 2000, уч. курс, Харьков,
"Фолио", Ростов-на-Дону, "Феникс", 2001.
6. Симонович С., ... Г., ... ... ... "АСТ - ПРЕСС",
2002.
7. Симонович С., Евсеев Г., Практическая ... ... "АСТ ... ... Информатика: Базовый курс, С.В.Симонович и др. Санкт-Петербург, "Питер",
2001.
9. Золотова С.И., Практика по Aссess, Москва, Финансы и статистика, ... ... А.С., ... по ... на ... ... В ... Алматы,1999.
11. Крейнак Дж., Хебрейкен Дж., Интернет. Энциклопедия, Санкт-Петербург,
"Питер", 2000.
12. Интернет с нуля! Книга + Видеокурс: Учеб. пособие под редакцией
Н.А.Домина, М.: ... ... 2003.

Пән: Информатика
Жұмыс түрі: Реферат
Көлемі: 11 бет
Бұл жұмыстың бағасы: 300 теңге









Ұқсас жұмыстар
Тақырыб Бет саны
«ҚОЗЫ КӨРПЕШ - БАЯН С¥ЛУ» жырының варианттары41 бет
Автомобиль жолдарын табиғаты күрделі ауданда жобалау25 бет
Айранкөл кен орны45 бет
Арысқұм кен орнының м-іі кешенін механикалық әдіспен игеру және жабдықтарды таңдау82 бет
Ауыл шаруашылығында жүргізілетін тәжірибелік жұмыстар55 бет
Балалар ойынының жіктелуі. Шығармашылық және ережелі ойындар. Мектеп жасына дейінгі балалардың сюжеттік-рольдік ойындары6 бет
Бизнесті модельдеу мен стратегеясы3 бет
Бизнесті модельдеу мен стратегиясы4 бет
Геотехника13 бет
Динамикалық хаостың сипаттамалары6 бет


Исходниктер
Пәндер
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить


Зарабатывайте вместе с нами

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Сіз үшін аптасына 5 күн жұмыс істейміз.
Жұмыс уақыты 09:00 - 18:00

Мы работаем для Вас 5 дней в неделю.
Время работы 09:00 - 18:00

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь